(defun quadriere (zahl) (* zahl zahl) ) (defun c:romi () (princ "bitte eine 3D-Polyline auswählen:\n") (setq i 0) (setq auswahl NIL) (while (= auswahl NIL) (if (> i 0) (princ "Es wurde nichts gewählt; bitte eine 3D-Polylinie wählen ... ") ) (setq auswahl (ssget)) (setq i (1+ i)) (if (/= auswahl NIL) (setq eintragsanzahl (sslength auswahl)) ) (while (> eintragsanzahl 1) (princ (strcat "Es wurden " (itoa(sslength auswahl)) " Elemente gewählt; bitte nur eine 3D-Polylinie wählen ...")) (setq eintragsanzahl NIL) (setq auswahl NIL) (setq i 0) ) (if (= eintragsanzahl 1) (progn (setq entitynummer (ssname auswahl 0)) (setq grafikdaten (entget entitynummer)) (setq elementtyp (cdr(assoc 0 grafikdaten))) ;(setq elementtyp (cdr(assoc 0 (entget (ssname auswahl 0))))) (if (/= elementtyp "POLYLINE") (progn (princ (strcat "Es wurde ein " elementtyp "-Element gewählt; bitte eine 3D-Polylinie wählen ...")) (setq eintragsanzahl NIL) (setq auswahl NIL) (setq i 0) ) ) ) ) ) (setq subentname (entnext entitynummer)) (setq vertexlist '()) (setq subelementtyp "DUMMI") (while (/= subelementtyp "SEQEND") (setq subgrafikdaten (entget subentname)) (setq subelementtyp(cdr(assoc 0 subgrafikdaten))) (setq vertex (cdr(assoc 10 subgrafikdaten))) (if (= subelementtyp "VERTEX") (setq vertexlist (append vertexlist (list vertex))) ) (setq subentname (entnext subentname)) ) (setq vertexanzahl (length vertexlist)) ; Delta-Horizontal und Delta-Vertikal berechnen (setq abstandslist NIL) (setq c 1) (while (< c vertexanzahl) (setq deltahorizontal (sqrt (+ (quadriere (- (car (nth c vertexlist) ) (car (nth (- c 1) vertexlist) ) ) ) (quadriere (- (cadr (nth c vertexlist) ) (cadr (nth (- c 1) vertexlist) ) ) ) ) ) ) (setq deltavertikal (- (caddr (nth c vertexlist) ) (caddr (nth (- c 1) vertexlist) ) ) ) (setq 1deltapaar (list deltahorizontal deltavertikal '0.0)) (setq abstandslist (append abstandslist (list 1deltapaar))) (setq c (1+ c)) ) (setq einsetzpunkt (getpoint "Bitte Einsetzpunkt wählen:")) ;(command "-layer" '"m" '"ls_gelaende" '"fa" '"3" '"" '"") (setq tmppkt einsetzpunkt) (JBf_entmake_poly (cons einsetzpunkt (mapcar '(lambda(A) (setq tmppkt(mapcar '+ tmppkt A)))abstandslist)) (getvar "CLAYER") 256 nil) ) ;;;*****************************************************************************************;;;;;; ;;; Es wird eine Polylinie erzeugt, geschlossen oder offen ;;;; ;;;*****************************************************************************************;;;;;; ;;;>>liste => Koordinaten der Stützpunkte ;;;>>Layer => Layer der Erzeugung ;;;>>Farbe => Farbe als Integer ;;;>>flag => nil=offen, T= geschlossen (defun JBf_entmake_poly (liste layer farbe flag / ) (entmake (list'(0 . "POLYLINE") (cons 8 layer)(cons 62 farbe) '(66 . 1) (cons 70 (if flag 1 0)))) (mapcar '(lambda(A) (entmake (list '(0 . "VERTEX") (cons 10 A))))liste) (entmake '((0 . "SEQEND"))))