| |
| 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: Polylinien-Stützpunkte entfernen mit entdel (2257 mal gelesen)
|
Uwe Neumann Mitglied
Beiträge: 18 Registriert: 13.12.2002
|
erstellt am: 12. Aug. 2008 11:25 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich versuche aus einer POLYLINE (gezeichnet mit 3dpoly) alle Stützpunkte außer dem Anfangs- und dem Endpunkt zu löschen. Leider komme ich dank meiner geringen LISP-Kenntnisse nicht weiter. Das Tool von CADWiesel hilft mir leider auch nicht, da es bei mir leider nicht für diesen Polylinientyp funktioniert. Deshalb hier meine Frage. Wie kann ich mit entdel einen Stützpunkt löschen? Hier mein Ansatz (basierend auf CADWiesel): (setq NeuePLinEig (entget (entnext (cdr (assoc -1 PLinEig))))) (while (= (cdr (assoc 0 NeuePLinEig)) "VERTEX") (if (OR (= i 1) (= i AnzPkt)) (setq i (1+ i)) (progn (entdel (cdr (assoc -1 NeuePLinEig))) (setq i (1+ i)) ) ;else ) ;if (setq NeuePLinEig (entget (entnext (cdr (assoc -1 NeuePLinEig))))) ) ;while (setq PLinEig (entmod PLinEig)) Vielen Dank im Voraus. Uwe [Diese Nachricht wurde von Uwe Neumann am 12. Aug. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
heidi Mitglied CAD-Dienstleister
Beiträge: 1132 Registriert: 01.11.2001 Dell Precicion M6700 Nvidia Quadro K3000M AutoCAD 2012 Sp2 nXtRender Tetra4D eigene Tools Adobe CreativeSuite 6 ——————————— MacBook Pro i9 2,3/16/5 Big Sur 11.5.1 BricsCAD V21 Pro
|
erstellt am: 12. Aug. 2008 12:02 <-- editieren / zitieren --> Unities abgeben: Nur für Uwe Neumann
|
Uwe Neumann Mitglied
Beiträge: 18 Registriert: 13.12.2002
|
erstellt am: 12. Aug. 2008 12:08 <-- editieren / zitieren --> Unities abgeben:
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 12. Aug. 2008 12:21 <-- editieren / zitieren --> Unities abgeben: Nur für Uwe Neumann
Hallo Uwe, wenn alle Stützpunkte außer Anfangs- und Endpunkte gelöscht werden sollen, dann würde ich doch eine neue Linie von Anfangs- bis Endpunkt zeichnen: Code:
(defun c:test( / ) (setq obj (car(entsel))) (command "_.line" (car (setq liste (test:stzpkt obj))) (last liste)""))(defun test:stzpkt (obj / liste) (while (and(setq obj(entnext obj))(/=(cdr(assoc 0 (entget obj)))"SEQEND")) (setq liste (cons (cdr(assoc 10 (entget obj)))liste))) (reverse liste))
Der Code gilt nicht für LW-Polylinien ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Uwe Neumann Mitglied
Beiträge: 18 Registriert: 13.12.2002
|
erstellt am: 12. Aug. 2008 12:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörn, leider muss das Objekt als Polylinie in der Zeichnung bleiben, da an ihm noch XDATA hängen. Die Polylinie wurde in einem anderen CAD-System erzeugt und muss auch wieder so übergeben werden. Leider wurden bei der Ausgabe aus dem anderen System dort überflüssigerweise Punkte eingefügt - wie und warum: keine Ahnung. Sie liegen genau in der Flucht zwischen AP und EP. Es besteht nun die Aufgabe, diese Polylinien lagemäßig zu ändern - d.h. AP und EP muss geringfügig geändert werden. Um das realisieren zu können, will ich die Zwischenpunkte rausschmeißen. Trotzdem Danke für den Tipp. Uwe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Aug. 2008 12:39 <-- editieren / zitieren --> Unities abgeben: Nur für Uwe Neumann
IMHO klappt das mit entdel nicht, stattdessen funktioniert die ActiveX-Funktion vla-delete zum Löschen des Vertex. Im Anhang mal so ein Teil das darauf aufbaut, allerdings zum manuelle picken der zu löschenden Punkte. Deine Vorgabe ist ziemlich speziell, sollte sich aber genauso lösen lassen -> Siehe Jörn. ------------------ - 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 |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 12. Aug. 2008 12:40 <-- editieren / zitieren --> Unities abgeben: Nur für Uwe Neumann
Hallo Uwe, habe nochmal ein bißchen umgestrickt, probier einfach mal. Code:
(defun c:test( / ) (setq obj (car(entsel))) (mapcar '(lambda(A) (vla-delete (vlax-ename->vla-object A)))(test:stzpkt obj)) )(defun test:stzpkt (obj / liste) (while (and(setq obj(entnext obj))(/=(cdr(assoc 0 (entget obj)))"SEQEND")) (setq liste (cons obj liste))) (cdr(reverse(cdr liste))))
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Uwe Neumann Mitglied
Beiträge: 18 Registriert: 13.12.2002
|
erstellt am: 12. Aug. 2008 13:48 <-- editieren / zitieren --> Unities abgeben:
|