| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Auswahlsatz (1821 mal gelesen)
|
Roberta Mitglied
Beiträge: 4 Registriert: 16.10.2006
|
erstellt am: 17. Okt. 2006 08:12 <-- editieren / zitieren --> Unities abgeben:
Hallo AutoLisp-Spezialisten, als absolutes Greenhorn versuche ich mich an einem AutoLisp-Programm: es soll über eine verschachtelte Inselerkennung eine Bereichsauswahl treffen (wie z.B. bei einer Schraffur). Alle Objekte im Bereich sollen in einen Auswahlsatz, um deren Eigenschaften zu ändern. Es handelt sich hierbei um eine große Anzahl von Kreisen, innerhalb von Symbolen oder Ziffern (Polylinien), die eine andere Farbe erhalten sollen ohne umständliches markieren mit z.B. Kreuzen Polygon. Vielleicht gibt es dieses Programm schon? Ansonsten benötige ich dringend Hilfestellung. Lisa
------------------ Robby Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 17. Okt. 2006 08:31 <-- editieren / zitieren --> Unities abgeben: Nur für Roberta
ok, mal als Begrüßungsgeschenk: (defun c:AWS (/ AUSWAHL FARBE OBJDATA) (if(and(setq AUSWAHL(ssget '((0 . "CIRCLE")))) (setq FARBE (acad_colordlg 1)) ) (progn (setq INDEX -1) (repeat(sslength AUSWAHL) (setq OBJDATA(entget(ssname AUSWAHL(setq INDEX (1+ INDEX))))) (if(assoc 62 OBJDATA) (entmod(subst(cons 62 FARBE)(assoc 62 OBJDATA)OBJDATA)) (entmod(append OBJDATA (list(cons 62 FARBE)))) ) ) ) ) (princ) ) Dafür mußt du aber versprechen, dich durch Mapcars Lisp-Tutorial zu arbeiten. ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 17. Okt. 2006 08:39 <-- editieren / zitieren --> Unities abgeben: Nur für Roberta
Hallo Roberta, Erst mal Willkommen im Forum! So ganz klar ist mir Deine Fragestellung noch nicht, willst Du alle Objekte wählen oder nur Kreise? Siehe hierzu auf alle Fälle mal die Hilfe zu ssget, ssname einschl. Optionen. (Zur Auswahl von Kreisen z. B. (ssget '((0. "CIRCLE"))). Bei weiteren Fragen ... LG Thomas ---edit----
uups, Holger war wieder schneller, und gleich mit "Begrüßungsgeschenk" [Diese Nachricht wurde von spider_dd am 17. Okt. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roberta Mitglied
Beiträge: 4 Registriert: 16.10.2006
|
erstellt am: 17. Okt. 2006 10:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, ich möchte eine Polyline der Zeichnung auswählen, um damit alle Kreise die sich innerhalb dieser Polylinie befinden zu markieren. Also wie bei einer Schraffur. Der Bereich soll nicht schraffiert werden, sondern die Elemente (Kreise) die sich darin befinden, markiert werden. Außerhalb des Bereichs befinden sich noch weitere Kreise, die nicht markiert werden sollen. Holger hatte wohl auch Probleme mit meiner Fragestellung, habe aber was dazulernen können. Gruß Robby
------------------ Robby Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 17. Okt. 2006 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für Roberta
dann versuch es mit der Erweiterung von Holgers Code .. die PL darf aber keine doppelten Stützpunkte haben! (defun c:AWS (/ PL AUSWAHL FARBE OBJDATA INDEX PLLIST) (vl-load-com) (if(and(setq PL(car(entsel "\nPolylinie wählen:"))) (setq PL(vlax-ename->vla-object PL)) (setq INDEX -1) (repeat (fix(1+(vlax-curve-getendparam PL))) (setq PLLIST(cons (vlax-curve-getpointatparam PL (setq INDEX (1+ INDEX))) PLLIST)) ) (setq AUSWAHL(ssget "_WP" PLLIST '((0 . "CIRCLE")))) (setq FARBE (acad_colordlg 1)) ) (progn (setq INDEX -1) (repeat(sslength AUSWAHL) (setq OBJDATA(entget(ssname AUSWAHL(setq INDEX (1+ INDEX))))) (if(assoc 62 OBJDATA) (entmod(subst(cons 62 FARBE)(assoc 62 OBJDATA)OBJDATA)) (entmod(append OBJDATA (list(cons 62 FARBE)))) ) ) ) ) (princ) ) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roberta Mitglied
Beiträge: 4 Registriert: 16.10.2006
|
erstellt am: 17. Okt. 2006 13:54 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 17. Okt. 2006 14:03 <-- editieren / zitieren --> Unities abgeben: Nur für Roberta
Hast wohl ACAD LT oder ACAD 14 ? Und was hat nicht funktioniert? Bei mir läuft das Teil. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roberta Mitglied
Beiträge: 4 Registriert: 16.10.2006
|
erstellt am: 17. Okt. 2006 14:26 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 17. Okt. 2006 14:44 <-- editieren / zitieren --> Unities abgeben: Nur für Roberta
Zitat: Original erstellt von Roberta: ich habe BricsCad Pro 7.0.
..das wäre ne Info für gaaaanz oben gewesen.. da hast du mit den Vlax-vurve Befehlen natürlich Pech, die sind da nicht integriert. Da mußt du dir die Polylinienstützpunkte aus den GC10 des LW-PL-Objects oder aus dem GC10 der nachfolgenden Vertexte auslesen. Auch wenn mich das vorenthalten solch wichtiger Informationen bei einer Hilfeanfrage nicht gerade begeistert, ein letzter Versuch ohne ActivX: (defun c:AWS (/ PL AUSWAHL FARBE OBJDATA INDEX PLLIST) (vl-load-com) (if(and(setq PL(car(entsel "\nLWPolylinie wählen:"))) (setq PL(entget PL)) (=(cdr(assoc 0 PL))"LWPOLYLINE") (while (setq PL (member(assoc 10 PL) PL)) (setq PLLIST(cons (cdr(car PL))PLLIST)) (setq PL (cdr PL)) ) (setq AUSWAHL(ssget "_WP" PLLIST '((0 . "CIRCLE")))) (setq FARBE (acad_colordlg 1)) ) (progn (setq INDEX -1) (repeat(sslength AUSWAHL) (setq OBJDATA(entget(ssname AUSWAHL(setq INDEX (1+ INDEX))))) (if(assoc 62 OBJDATA) (entmod(subst(cons 62 FARBE)(assoc 62 OBJDATA)OBJDATA)) (entmod(append OBJDATA (list(cons 62 FARBE)))) ) ) ) ) (princ) ) FIN ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |