(defun c:BTel(/ entity SegLn Letztes Pts cmd kw Segmente ss count) (setq osmd (getvar "osmode")) (setvar "osmode" 0) (setq ss (ssget "_I")) (if ss (if (= 1 (sslength ss)) (setq entity (ssname ss 0)) ) ) (if (not entity) (if (setq entity (entsel "\nObjekt wählen")) (setq entity (car entity)) ) ) (if entity (progn (initget "M T") (setq kw (getkword "\nMessen/Teilen: ") cmd (getvar "cmdecho") Letztes (entlast) ) (setvar "cmdecho" 0) (if (= "M" kw)(progn (setq SegLn (getdist "\nLänge der Segmente: ")) (command "_measure" entity SegLn) )(progn (setq Segmente (getint "\nAnzahl der Segmente: ")) (command "_divide" entity Segmente) )) (setq Pts(SammlePunkte Letztes) count (length pts) ) (if Pts (progn (Brechen entity Pts) ;-- Lösche die Punkte die AutoCAD durch _MEASURE _DIVIDE einfügte (mapcar 'entdel pts) )) (setvar "cmdecho" cmd) )) (if (= "M" kw) (mapcar 'princ (List "\nEs wurden " (1+ count) " Einzelstücke erzeugt")) (princ "Fertig!") ) (setvar "osmode" osmd) (princ) ) ; Aufbrechen der Polylinie an den Punkten die durch ; die Liste der Entitynamen angegeben sind (defun Brechen(pl pts / en n) (foreach n pts (command "_break" pl (cdr (assoc 10 (entget n))) "@") (setq pl (entlast)) ) ) ; ist entlast bevor die Punkte eingefügt wurden ; Result: Liste der Elementnamen aller Punkte (defun SammlePunkte(en / result ) (while (setq en(entnext en)) (setq result (cons en result)) ) (reverse result) )