| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Blockauflösung in Lisp (1396 mal gelesen)
|
Luggi77 Mitglied Bauzeichner
Beiträge: 3 Registriert: 27.06.2012 Autocad Map 3d 2012, 64Bit
|
erstellt am: 27. Jun. 2012 12:15 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Habe folgendes Problem. Über ein Lisp fügen wir in Signalisations- und Markierungsplänen sogenannte "Haifischzähne" ein. Diese werden automatisch in einem vordefinierten Abstand entlang einer Linie eingefügt. Da sich jedoch die Darstellung unterscheidet, abhängig davon ob die Markierung bestehend ist, entfernt wird oder neu angebracht wird, habe ich nun den Block dynamisch mit den drei unterschiedlichen Sichtbarkeiten ergänzt. Dies bedeutet nun aber, dass ich eine Block in Block-Situation erzeugt habe. Dies wiederum verlangt, dass der Block beim Einfügen aufgelöst wird. Nun habe ich über die Suchfunktion zwar verschiedene Varianten gefunden, wie dies gelöst werden kann (mit dem Befehl _explode). Leider kenne ich mich bei Lisp aber nicht so gut aus (die unten eingefügte Lisp stammt von meinem pensionierten Vorgänger) und habe deswegen noch nicht herausgefunden, wie die Zeile genau aussehen müsste und wo man die genau einfügen müsste. Kann mir da jemand helfen? Die Lisp sieht zur Zeit folgendermassen aus: (defun C:LD3 (/ pkt1 pkt2 pktm wing n nx) (setvar "cmdecho" 0) (command "_units""2""4""1""4""0""n") (command "_-layer" "m" "TBA_MARKIERUNG""") (princ "\n Setzen einer < Kein Vortritt > Linie.") (setq oname (car (entsel "\n Linie wählen: ")) pkt1 (assoc 10 (entget oname)) x1 (cadr pkt1) y1 (caddr pkt1) pkt2 (assoc 11 (entget oname)) x2 (cadr pkt2) y2 (caddr pkt2) dx (- x2 x1) dy (- y2 y1) s (sqrt (+ (* dx dx) (* dy dy))) ax (/ (* dx 0.80) s) ay (/ (* dy 0.80) s) pkt1 (cdr pkt1) pkt2 (cdr pkt2) win (angle pkt1 pkt2) wing (/ win 0.0174533) n 1 nx (+ (/ s 0.80) 0.01) );Ende setq (command "_-INSERT" "ld3" pkt1 "1" "1" wing) (while (< n nx) (if (< n nx) (progn (setq x1m (+ x1 (* n ax)) y1m (+ y1 (* n ay)) pktm (list x1m y1m) n (+ n 1) );ende setq ( command "_-INSERT" "ld3" pktm "1" "1" wing) ));Ende progn );ende while );Ende defun Besten Dank schon mal für Eure Hilfe! Gruss Lukas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 27. Jun. 2012 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für Luggi77
|
Luggi77 Mitglied Bauzeichner
Beiträge: 3 Registriert: 27.06.2012 Autocad Map 3d 2012, 64Bit
|
erstellt am: 27. Jun. 2012 13:35 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 27. Jun. 2012 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für Luggi77
Das glaube ich dir gerne, aber der Block wurde aufgelöst eingefügt, da bin ich mir relativ sicher. Nur das Ergebnis davon hast du wohl nicht erwartet. Um da mitreden zu können müßte man die ganze Geschichte hören und nicht nur "was muß ich ändern damit die Blockreferenz aufgelöst eingefügt wird ?" Falls ich, bzw. meine Glaskugel daneben liegt: Entschuldige bitte, ist manches Mal schwer übers Forum zu helfen. ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 27. Jun. 2012 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für Luggi77
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 27. Jun. 2012 14:38 <-- editieren / zitieren --> Unities abgeben: Nur für Luggi77
|
Luggi77 Mitglied Bauzeichner
Beiträge: 3 Registriert: 27.06.2012 Autocad Map 3d 2012, 64Bit
|
erstellt am: 27. Jun. 2012 17:06 <-- editieren / zitieren --> Unities abgeben:
Herzlichen Dank Euch zwei! Musste bei beiden Zeilen * einfügen und jeweils das erste "1" entfernen. Jetzt funktionierts. (command "_-INSERT" "*ld3" pkt1 "1" wing) (while (< n nx) (if (< n nx) (progn (setq x1m (+ x1 (* n ax)) y1m (+ y1 (* n ay)) pktm (list x1m y1m) n (+ n 1) );ende setq ( command "_-INSERT" "*ld3" pktm "1" wing) [Diese Nachricht wurde von Luggi77 am 27. Jun. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |