Gibt es eine Möglichkeit die Gesamtlänge nicht zusammenhängender Objekte (Linien, Kreise usw.) zu berechnen? Mit der Hand am Arm kann das schon ein bisschen länger dauern 😞
Das ist der Tipp dieser Woche 🙂
Gelöst! Gehe zur Lösung
Gelöst von Sofia.Xanthopoulou. Gehe zur Lösung
Tja, mit herkömmlichen Mitteln wird das auch weiterhin nicht möglich sein
Aber es gibt da Leute, die können kleine Codes dazu schreiben und für Jedermann zugänglich machen. Ich hab da etwas gefunden:
(defun C:GESL (/ ss tl n ent itm obj l) (setq ss (ssget) tl 0 n (1- (sslength ss))) (while (>= n 0) (setq ent (entget (setq itm (ssname ss n))) obj (cdr (assoc 0 ent)) l (cond ((= obj "LINE") (distance (cdr (assoc 10 ent))(cdr (assoc 11 ent)))) ((= obj "ARC") (* (cdr (assoc 40 ent)) (if (minusp (setq l (- (cdr (assoc 51 ent)) (cdr (assoc 50 ent))))) (+ pi pi l) l))) ((or (= obj "CIRCLE")(= obj "SPLINE")(= obj "POLYLINE") (= obj "LWPOLYLINE")(= obj "ELLIPSE")) (command "_.area" "_o" itm) (getvar "perimeter")) (T 0)) tl (+ tl l) n (1- n))) (alert (strcat "Gesamtlänge ist " (rtos tl))) (princ) )
Und für diejenigen, die genauso untalentiert sind wie ich, was Programmierung angeht, möchte ich ein kleines Video anhängen, das einen ganz einfachen Weg beschreibt, um eine Lisp Routine ablaufen zu lassen. Dazu muss aber gesagt sein, dass diese Methode nur temporär für diese eine Zeichnung gilt, in der sie ausgeführt wurde. Bei den nächsten Zeichnung muss der Vorgang wiederholt werden.
Kurz in Worten:
Man kopiert den ganzen Code in den Zwischenspeicher (STRG+C), dann fügt man den ganzen Inhalt in die AutoCAD Befehlszeile (STRG+V) und bestätigt (ENTER).
Zum Ausführen tippt man dann GESL in die Befehlszeile, bestätigt und folgt den Anweisungen.
Viel Spaß damit
Hi,
>> Geht das auch mit Flächen?
Ohne getestet zu haben sollte auch dieses mit ganz wenig Änderungen möglich sein (Änderungen zu Sofia's Code in orange markiert):
(defun C:GESF (/ ss tl n ent itm obj l) (setq ss (ssget) tl 0 n (1- (sslength ss))) (while (>= n 0) (setq ent (entget (setq itm (ssname ss n))) obj (cdr (assoc 0 ent)) l (cond((= obj "LINE")(distance (cdr (assoc 10 ent))(cdr (assoc 11 ent))))((= obj "ARC")(* (cdr (assoc 40 ent))(if (minusp (setq l (- (cdr (assoc 51 ent))(cdr (assoc 50 ent)))))(+ pi pi l) l)))((or (= obj "CIRCLE")(= obj "SPLINE")(= obj "POLYLINE") (= obj "LWPOLYLINE")(= obj "ELLIPSE")) (command "_.area" "_o" itm) (getvar "area")) (T 0)) tl (+ tl l) n (1- n))) (alert (strcat "Gesamtfläche ist " (rtos tl))) (princ) )
(Achtung, prüft nicht, ob Polylinien geschlossen sind, macht aber AutoCAD auch nicht (siehe nicht geschlossene Polylinien selektieren und Eigenschaftenfenster zeigt auch eine Fläche an, eben "gedanklich" geschlossen)
HTH, - alfred -
Hallo,
ich werde das mal testen und wenn es funktioniert, wird das Morgen mein Tipp der Woche, sonst geht dieser super Post hier unter und keiner wird es je erfahren.
Danke vielmals @Alfred.NESWADBA
LG
Kein Stress,
wenn es was gibt, werde ich es finden und Morgen veröffentlichen... Ein bisschen Geduld
LG
Hi,
bei mir funktioniert der Lisp-Code ohne Fehlermeldung.
Allerdings bekomme ich auch für eine Linie eine Fläche ausgeworfen.
Kannst du mal deine Fehlermeldung posten, dann kann man erkennen, wo dein Problem liegt.
Thorsten
Sie finden nicht, was Sie suchen? Fragen Sie die Community oder teilen Sie Ihr Wissen mit anderen.