| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: 2D-Länge einer 3D-Polyline (1491 mal gelesen)
|
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 06. Mrz. 2012 19:51 <-- editieren / zitieren --> Unities abgeben:
Servus Mit (vla-get-length) krieg ich die 3D-Länge einer 3D-Polyline. Eine Möglichkeit, um die 2D-Länge zu kriegen - ich könnte die Stützpunkte auslesen, mit (distance) die Teil-Längen berechnen und aufsummieren ... Oder kennt jemand eine Funktion (vla-get-length-2d oder so ), die das von Haus aus erledigt. ------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 06. Mrz. 2012 22:44 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
|
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 07. Mrz. 2012 07:20 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 07. Mrz. 2012 07:35 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
3DPOLY kann doch keine Bögen oder ? Dann verstehe ich das Problem ebenfalls nicht. Wie CADmium auch schon sagte: Stützpunkte auslesen und den Z-Wert in der Berechnung durch einen anderen x-beliebigen(zB. 0) ersetzen, dann hast du es doch schon im WKS-Fall, im BKS-Fall muß trans wieder mit ran.
------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 07. Mrz. 2012 08:02 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
ein BSP : (vl-load-com) (defun C:XYLENGTH(/ OBJ COORDS CT1 CT2) (if(and(setq OBJ (car(entsel"\n3D-Poly :"))) (setq OBJ(vlax-ename->vla-object OBJ)) (=(strcase(vla-get-objectname OBJ))"ACDB3DPOLYLINE") (setq COORDS(vla-get-coordinates OBJ)) (setq CT1(vlax-safearray->list(vlax-variant-value COORDS))) ) (progn (repeat (/(length CT1)3) (setq CT2(cons (car CT1) CT2)) (setq CT2(cons (cadr CT1)CT2)) (setq CT2(cons 0.0 CT2)) (setq CT1 (cdddr CT1)) ) (setq CT2(vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length CT2)))) (reverse CT2) ) ) (vla-put-coordinates OBJ CT2) (setq XYL(vla-get-length OBJ)) (vla-put-coordinates OBJ COORDS) (alert (strcat "XYL : "(rtos XYL 2 3))) ) ) ) ------------------ - 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 |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 07. Mrz. 2012 09:37 <-- editieren / zitieren --> Unities abgeben:
@cadffm Wieso Bögen ...? (Es geht um horizontale Längen von Kanal, Wasser- oder Gasleitungen, etc.) @cadmium Danke für den Code - die PL temporär platt zu machen ist natürlich eine bessere Lösung, als meine oben angedachte. (Ich hätte allerdings damit gerechnet, erwartet, ... dass ACAD das bereits kann.)
------------------ Schöne Grüße Ernst
www.geopaint.at [Diese Nachricht wurde von Geos am 07. Mrz. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 07. Mrz. 2012 09:59 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 07. Mrz. 2012 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für Geos
Zitat: Original erstellt von Geos: @cadffm Wieso Bögen ...? (Es geht um horizontale Längen von Kanal, Wasser- oder Gasleitungen, etc.)
Weil ein "schief" im Raum liegende Bogen nicht so einfach "platt" gemacht werden kann, einfach nur Stützpunkte miz Z=0 zu rechnen würde im Fall von vorhandenen Bögen nach hinten losgehen, deswegen. ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 07. Mrz. 2012 17:38 <-- editieren / zitieren --> Unities abgeben:
@CADmium So speziell finde ich das nicht. Wir in der Vermessung (und nicht nur wir - denk an die Bemassung einer Treppe) zeichnen unsere Pläne zum Großteil im sogenannten 2.5D (zweieinhalb D) = 2D-Pläne mit Höhenangaben. Und da müssen dann halt (manchmal ) die Längen dazu passen. @cadffm Ich meinte "wieso Bögen", weil Du im 4. Posting Bögen ins Spiel bringst, obwohl vorher davon nicht die Rede war. Und mein Lösungsansatz aus'm 1. Posting (Teillängen mit distance) schließt Bögen ja auch aus ------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |