| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Länge von Multilinien ?? (2467 mal gelesen)
|
Sauber Mitglied
Beiträge: 43 Registriert: 31.07.2005 AutoCad 2009 AutoCad 2008 LT + Extender
|
erstellt am: 01. Mrz. 2007 14:10 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte Leitungen mit Multilinien (3 Linien, untersch. Linientypen) zeichnen. Soweit kein Problem. Leider kann ich AutoCad LT 2007 nicht dazu bringen mir die Länge diese Multilinien anzugeben (Liste , Eigenschaften oder einschlägige Längentools funktionieren nicht). Wer weiss da Bescheid? Noch besser wäre auch ein lisp damit man verschiedene Multilinien anklicken kann und die Summe der Längen zusammenzählt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 01. Mrz. 2007 14:13 <-- editieren / zitieren --> Unities abgeben: Nur für Sauber
..na das Lisp müßte die Abstände der Stützpunktkoordinaten aufsummieren, da es eine direkte Eigenschaft Länge nicht gibt.. wär machbar (IMHO sogar für LT mit Extender).. ------------------ - 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 |
Sauber Mitglied
Beiträge: 43 Registriert: 31.07.2005 AutoCad 2009 AutoCad 2008 LT + Extender
|
erstellt am: 01. Mrz. 2007 14:28 <-- editieren / zitieren --> Unities abgeben:
Wenigstens habe ich diese Funktion nicht übersehen, das beruhigt schon mal. Wenn jemand weiss ob und wo es so ein lisp gibt wäre ich sehr froh, wenn er sich melden würde. Denn ich kann nicht glauben, dass noch niemand die Länge von Multilinien abfragen musste. Wo sind all die Leitungsplaner, Mauerzeichner etc.... Viele Grüsse Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 01. Mrz. 2007 14:43 <-- editieren / zitieren --> Unities abgeben: Nur für Sauber
Zitat: Original erstellt von Sauber: Denn ich kann nicht glauben, dass noch niemand die Länge von Multilinien abfragen musste. Wo sind all die Leitungsplaner, Mauerzeichner etc....
Zum diesem glauben fällt mit nur folgendes ein : Da das Universum unendlich ist (denke ich zumindest) , besteht eine Wahrscheilichkeit größer Null, das es das von dir gewünschte Tool gibt. Genauso , wie es eine Wahrscheinlichkeit gibt , das irgendwo Schraubenzieher auf Bäume wachsen. Das Problem ist jedoch : Man weiß in beiden Fällen nicht wo! ------------------ - 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 |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 bis ACA 2013 Arcibem System: Windows Internet-Startseite: http://www.archi.de
|
erstellt am: 01. Mrz. 2007 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für Sauber
Hi, oh je Multilinien... aber Spass beiseite: ich hab' mal ein Tool geschrieben, das Multilinien in Polylinien umwandelt: Code: (defun c:ml2pl ( / z ml mlx) (setq z -1 ml (ssget '((0 . "MLINE")))) (if ml (while (setq mlx (ssname ml (setq z (1+ z)))) (command "_explode" mlx "_pedit" "_m" "_p" "" "_y" "_j" "0.0" "") ) ) )
, - deren Länge kannst Du ja abfragen... bleibt nur noch die Frage, ob Du LT-Extender hast.Grüsse, Henning ------------------ VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sauber Mitglied
Beiträge: 43 Registriert: 31.07.2005 AutoCad 2009 AutoCad 2008 LT + Extender
|
erstellt am: 01. Mrz. 2007 15:36 <-- editieren / zitieren --> Unities abgeben:
Merci Henning, das ist auch ein Weg und bevor ich alles per Maus nachmesse dann halt so. Wobei elegant ist das ja nicht, in dem ich alles explodiere und dann die Einzelteile wieder in der Zeichnung habe. Normalerweise brauch ich Multilinien nicht so oft, aber den Verlauf einer Leitung zu ändern (Griffe verschieben) geht mit Multiline einfacher wie bei 3 parallelen Polylinien Aber trotzdem Danke Gruss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 01. Mrz. 2007 15:36 <-- editieren / zitieren --> Unities abgeben: Nur für Sauber
... die Erzeugte PL ist aber Extrem vom Multilinienstil abhängig (Verbindungen anzeigen .. geschlossen usw) ... IMHO trifft die Analyse der Stützpunkte in dem Fall genauer( auch wenn hier auch nicht unbedingt die "neutrale Faser" genommen wird. aber wer setzt schon Multilinien ein ( auch PL's können ne Breite haben) ------------------ - 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 |
Sauber Mitglied
Beiträge: 43 Registriert: 31.07.2005 AutoCad 2009 AutoCad 2008 LT + Extender
|
erstellt am: 01. Mrz. 2007 15:43 <-- editieren / zitieren --> Unities abgeben:
Hey Thomas, wie gesagt, Multilinien sind nicht mein Wunschtraum, aber das Verändern 3 paralleler Polylinien (auch wenn man mehrere Griffe markiert) funktioniert nicht, da am Schluss die Abstände nicht mehr stimmen. und nur etwa die mittlere Line verändern und jeweils neu nach links und rechts versetzen gibt am schluss wunde Finger.... Gruss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 bis ACA 2013 Arcibem System: Windows Internet-Startseite: http://www.archi.de
|
erstellt am: 01. Mrz. 2007 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für Sauber
|
CAD-472 Mitglied CADler
Beiträge: 46 Registriert: 28.08.2007 Autodesk AEC-Collection 2019 Adobe Acrobat XI Standard CADconv Suite 2019 HP Designjet T1500 PS PS3 System: Win 10 Enterprise 64 Bit Intel Core i7-4770 CPU 3.40 GHz 16,00 GB NVIDIA Quadro K2000
|
erstellt am: 04. Sep. 2020 13:12 <-- editieren / zitieren --> Unities abgeben: Nur für Sauber
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1356 Registriert: 11.01.2006 Win 10 ACAD 2022
|
erstellt am: 04. Sep. 2020 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für Sauber
Das geht mit etwas Lisp. AutoCAD selbst kann das leider nicht weil Multilinien schon seit kurz nach ihrer Enstehung nicht mehr weiterentwickelt wurden. Keine Ahnung warum, ich verwende die für alles was "Meterware" ist (Trassen, Rohre, Tragesysteme,...) und finde die Super geeignet. Hier also etwas Lisp:
Code: (defun gather (lst len) ;;; bündelt die angebende Anzahl an Listen-Elementen zu Unterlisten besagter Länge (cond ((null lst) nil) ((> (length lst) len) (cons (n-car len lst) (gather (n-cdr len lst) len)) ) ('sonst (list lst)) ) )(defun k_plist->length (p_list) ;;; gibt die Weglänge einer Koordinatenliste zurück (apply '+ (mapcar '(lambda (p1 p2) (distance p1 p2)) (reverse (cdr (reverse p_list))) (cdr p_list) ) ) ) (setq obj_name (vlax-ename->vla-object (car (entsel)))) (setq p_list (gather (vlax-safearray->list (vlax-variant-value (vla-get-coordinates obj_name)) ) 3 ) ) (k_plist->length p_list)
------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1356 Registriert: 11.01.2006 Win 10 ACAD 2022
|
erstellt am: 05. Sep. 2020 16:37 <-- editieren / zitieren --> Unities abgeben: Nur für Sauber
Noch eine Ergänzung weil ich das erste Posting grade so zwischendurch schnell gemacht hatte. Ich hab das mal in eine ausführbare Funktion zusammengepackt und vl-load-com ergänzt (das vergess ich immer wieder ) Code:
(defun c:ml_length () (vl-load-com) (defun gather (lst len) ;;; bündelt die angebende Anzahl an Listen-Elementen zu Unterlisten besagter Länge (cond ((null lst) nil) ((> (length lst) len) (cons (n-car len lst) (gather (n-cdr len lst) len)) ) ('sonst (list lst)) ) )(defun k_plist->length (p_list) ;;; gibt die Weglänge einer Koordinatenliste zurück (apply '+ (mapcar '(lambda (p1 p2) (distance p1 p2)) (reverse (cdr (reverse p_list))) (cdr p_list) ) ) ) (setq obj_name (vlax-ename->vla-object (car (entsel)))) (setq p_list (gather (vlax-safearray->list (vlax-variant-value (vla-get-coordinates obj_name)) ) 3 ) ) (k_plist->length p_list) )
------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |