hallo erst mal,
ich hab da ein programm das mir hilft die summe aller linienlängen zu bestimmen. da ich von dieser art der programmierung rein gar keine ahnung habe (das aber gern ändern würde), wäre es schön wenn sich einer die mühe machen könnte mir mal jede zeile des programms zu kommentieren (so das auch ich es verstehe :-)).
außerdem scheint es ein problem zu sein, geeignete literatur zum thema lisp-programmierung zu bekommen. auch hier wäre ich dankbar für ein paar hilfreiche tips (wenns geht gleich mir ISBN-nummer)
so nun genug erzählt
vielen dank schon mal im voraus für eure hilfe !!
(defun c:linelength (/ ssAusw intLen vla-Obj reaSumPLine Layercollection )
(vl-load-com)
(setq reaSumLine 0.0
reaSumPLine 0.0
Layercollection (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
)
(if (setq ssAusw (ssget "X" '((0 . "LINE,LWPOLYLINE")(410 . "Model"))))
(repeat (setq intLen (sslength ssAusw))
(setq vla-Obj (vlax-ename->vla-object (ssname ssAusw (setq intLen (1- intLen)))))
(if (= (vla-get-freeze (vla-item Layercollection (vla-get-layer vla-obj))) :vlax-false)
(if (= (vla-get-ObjectName vla-Obj) "AcDbLine")
(setq reaSumLine (+ reaSumLine (vla-get-length vla-Obj)))
(setq reaSumPLine (+ reaSumPLine (vlax-curve-getDistAtPoint vla-Obj (vlax-curve-getEndPoint vla-Obj))))
)
)
)
)
(if ssAusw
(progn
(princ (strcat "\nLänge aller Linien: " (rtos (/ reaSumLine 1000) 2 3) " km"))
(princ (strcat "\nLänge aller Polylinien: " (rtos (/ reaSumPLine 1000) 2 3) " km"))
(princ (strcat "\n---------------------------------"))
(princ (strcat "\n Gesamtlänge: " (rtos (/ (+ reaSumLine reaSumPLine) 1000) 2 3) " km"))
)
(princ "\nEs sind noch keine Linien im Modellbereich vorhanden.")
)
(princ)
)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP