| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: LWPolyline mittels entmake erstellen ? (2769 mal gelesen)
|
Mario Scht Mitglied
Beiträge: 156 Registriert: 14.11.2002 Win XP ACAD 2007
|
erstellt am: 27. Nov. 2003 10:32 <-- editieren / zitieren --> Unities abgeben:
Hallo liebes Forum, kann mir bitte jemand helfen? 1. Warum zeichnet mir ACAD keine LWPolylinie? (entmake (list '(0 . "LWPolyline") '(6 . "Continuous") '(8 . "0") '(62 . 2) '(70 . 0) '(90 . 4) '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 10 (list var1x var1y 0.0)) (cons 10 (list var2x var2y 0.0)) ) ) 2. Wenn ich eine bestehende LWP habe, wie bringe ich ACAD dazu über entmake die bestehende LWP weiterzuführen? Wäre nett wenn Ihr mir da helfen könntet. Grüße Mario
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: 27. Nov. 2003 11:22 <-- editieren / zitieren --> Unities abgeben: Nur für Mario Scht
Hallo Mario, zeichne mal eine LWPolylinien und geh mit (entget(car(entsel))) drauf. Dann siehst du eine vollständige Definitionsliste. Dann nimm dir die Zeit, und versuche mit der OnlineHilfe herauszufinden, welcher gruppencode, welche Eigenschaft beschreibt. Sinnvoll ist es auch mal eine weitere LWPolylinie zu zeichnen, und zu schauen was sich in den Gruppencodes alles so geändert hat. Was mir auf Anhieb aufgefallen ist, dass du 4 Kontrollpunkte (GC 90) definierst, aber nur 2 mitgibst. Testen, lesen, testen, lesen ... freuen. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TK_KE Mitglied
Beiträge: 67 Registriert: 15.07.2003
|
erstellt am: 27. Nov. 2003 12:21 <-- editieren / zitieren --> Unities abgeben: Nur für Mario Scht
|
Andi L Mitglied
Beiträge: 8 Registriert: 27.11.2003 ACAD 2002
|
erstellt am: 27. Nov. 2003 22:24 <-- editieren / zitieren --> Unities abgeben: Nur für Mario Scht
Hi Mario Zu 1.: die GC100 müssen nach dem GC0 stehen Außerdem wie oben schon bemerkt ist GC90 falsch (2 statt 4 Vertices (entmake (list '(0 . "LWPolyline") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(6 . "Continuous") '(8 . "0") '(62 . 2) '(70 . 0) '(90 . 2) (cons 10 (list var1x var1y 0.0)) (cons 10 (list var2x var2y 0.0)) ) ) Zu 2.: Mit entmake erstellst Du neue Objekte, mit entmod dagegen kannst Du vorhandene Elemente ändern. Bei LwPolylinien mußt Du eigentlich 'nur' nach den vorhandenen Vertices in der DXF-Liste (kriegst Du mit entget)die neuen einfügen. Zusätzlich muß noch die Anzahl der Vertices (GC90) angepaßt werden. Die neuen Liste dann mit entmod in die Zeichnungsdatenkank zurückschreiben. Fertig Grüße Andi [Diese Nachricht wurde von Andi L am 27. Nov. 2003 editiert.] 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: 28. Nov. 2003 08:33 <-- editieren / zitieren --> Unities abgeben: Nur für Mario Scht
Hallo Mario, hatte ähnliches Problem (Erstellung Polylinie) nur mit variabler Punktanzahl. Habe das auf folgede Weise gelöst: ; vorab gesetz: ; anzpkt Anzahl der Punkte der Polylinie ; x_l Liste mit x-Koordinaten ; y_l Liste mit y-Koordinaten ; layername Name des Layer der Polylinie enthalten soll ... ... ... (setq p1 (cons 0 "LWPOLYLINE")) (setq p2 (cons 100 "AcDbEntity")) (setq p4 (cons 100 "AcDbPolyline")) (setq p6 (cons 70 0)) (setq p5 (cons 90 anzpkt)) (setq p3 (cons 8 layername)) (setq ee nil) (setq ee (list p6 p5 p4 p3 p2 p1)) ; ; nun für alle punkte ; (setq i 0) (repeat anzpkt (progn (setq pkt (list 10 (nth i x_l) (nth i y_l))) (setq ee (cons pkt ee)) (setq i (1+ i)) ) ) (setq ee (reverse ee)) (setq neu_pl (entmake ee)) Grüße spider_dd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mario Scht Mitglied
Beiträge: 156 Registriert: 14.11.2002 Win XP ACAD 2007
|
erstellt am: 28. Nov. 2003 09:57 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank an Euch, das war sehr hilfreich! @ Holger: nach etlichem testen habe ich das von Dir beschriebene freuen gestern Abend endlich erreicht und ACAD hat mir von Zauberhand eine LWP auf den Bildschirm gezeichnet. Jetzt bin ich am tüfteln, wie ich mit ENTMOD den GC 90 um 1 erhöhe und dann die GC 10, 40, 41, 42 einfüge. Ist ENTMOD der richtige Weg? @ Andi: das mit der Reihenfolge spielt, glaube ich, keine Rolle, zumindest habe ich nie darauf geachtet und es hat trotzdem gefunzt. @ Spider: Deine Lisp funktioniert, mal sehen, ob ich davon was nutzen kann. Steht das dd für Dresden? Wenn ja, dann schöne Grüße an Dich und die Stadt, wenn nein, dann auch. Grüße Mario 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: 28. Nov. 2003 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für Mario Scht
Hallo Mario, wenn es nicht unbedingt (entmod sein muß, dann schau mal in den (vl.-.. Funktionen, da gibt es auch ein (vla-AddVertex ..) Da brauchst dir darüber keine Gedanken mehr zu machen. Ansonsten die (entget-Liste mit den Listenbearbeitungsfunktionen so manipulieren, wie du es gerade benötigst. Den Objektnamen und den GC 5 nicht ändern und dann ein (entmod drauf. Geht auch. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD 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: 28. Nov. 2003 11:46 <-- editieren / zitieren --> Unities abgeben: Nur für Mario Scht
Hallo Mario Zitat:
Jetzt bin ich am tüfteln, wie ich mit ENTMOD den GC 90 um 1 erhöhe und dann die GC 10, 40, 41, 42 einfüge. Ist ENTMOD der richtige Weg?
versuchs mal auf diesem weg: ; ;Polylinie wählen und alten GC90 Wert holen ; (setq poly (ssget)) (setq poly_name (ssname poly 0)) (setq poly_def (entget poly_name)) (setq alt_pkt (cdr (assoc 90 poly_def))) ; ; neuen GC90 Wert setzen (hier 1+, kann aber auch mehr sein) ; (setq neu_pkt (1+ alt_pkt)) (setq poly_def (subst (cons 90 neu_pkt) (assoc 90 poly_def) poly_def)) ; ; jetzt noch neue(n) Punkt(e) hinzufügen ; (setq poly_def (reverse poly_def)) (setq neu_pkt (list 10 xkoord ykoord)) (setq poly_def (cons neu_pkt poly_def)) ; ;dies ggf. für weiter Pkt wiederholen ; ; und dann Polylinie aktualisieren ; (setq poly_def (reverse poly_def)) (entmod poly_def) (entupd poly_name) Zitat:
@ Spider: Steht das dd für Dresden?
es steht Grüße spider_dd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mario Scht Mitglied
Beiträge: 156 Registriert: 14.11.2002 Win XP ACAD 2007
|
erstellt am: 28. Nov. 2003 13:31 <-- editieren / zitieren --> Unities abgeben:
Hallo, @ Holger: Leider habe ich nur LT mit Extender und keine richtige Lisp Hilfe. Allerdings habe ich die Seiten von Mapcar gefunden. (vla-AddVertex ..) ist, glaube ich, noch nichts für blutige Anfänger. Trotzdem Vielen Dank! @spider_dd: Die Zeilen sind genau dass, was ich gesucht habe. Das kann ich mir wunderbar umstricken. War selber etliche Jahre dd-sider. Schöne Stadt. Danke an Euch und bis zum sicherlich nächsten Mal Grüße von Mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dietmarrudolph Mitglied Autor, Programmierer, Berater
Beiträge: 6 Registriert: 28.11.2003
|
erstellt am: 28. Nov. 2003 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für Mario Scht
Zitat: Original erstellt von Mario Scht:@ Andi: das mit der Reihenfolge spielt, glaube ich, keine Rolle, zumindest habe ich nie darauf geachtet und es hat trotzdem gefunzt.
Seit AutoCAD 2000 können dieselben GCs bei einem Objekt mehrfach vorkommen. Entsprechend ist die Reihenfolge wesentlich!
------------------ Dietmar Rudolph CR/LF GmbH, CADLock, Inc. Autor "DXF intern", "AutoCAD Objekte", "Das AutoCAD Buch", u.a. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |