Hallo Georg,
mit folgendem LISP-CODE kann man den Startpunkt einer geschlossenen LWPolyline ohne Bögen neu setzen. Das Prinzip sollte erkennbar sein, und mit etwas Mühe auch auf offene LW- und auch Polylinien mit Bögen geändert werden können.
Bei Fragen ...
Grüße Holger
(defun c:PLN (/ kel kelt kpt plspt)
(setvar "CMDECHO" 0)
(arxload "geomcal.arx" (princ "."))
(setq kel (entsel "\nLinie wählen:")
kelt (cdr (assoc 0 (entget(car kel))))
kpt (cadr kel)
)
(cond
((= kelt "LWPOLYLINE")
(lwneu (car kel) (newapt(subplv (entget (car kel))(cdr(assoc 70 (entget (car kel))))kpt)))
)
((= kelt "POLYLINE")
;(plneu(newapt(aplv (car kel) kpt)));;;<- Die Funktion plneu muß noch gemacht werden!!!!
)
)
(princ)
)
(defun lwneu (elem ptli / plptli plsegmpt z)
(setq z -1)
(setq plptli (mapcar
'(lambda (X)
(if (= 10 (car X))
(cons 10 (nth (setq z (1+ z)) ptli))
X
)
)
(entget elem)
)
)
(entmod plptli)
)
(defun newapt (plli / pllipt napt oalt)
(setq oalt (getvar "OSMODE"))
(setvar "OSMODE" 1)
(setq napt (reverse(cdr(reverse(getpoint "\nNeuen Anfangspunkt wählen")))))
(setvar "OSMODE" oalt)
(while (not (equal pllipt napt 0.00000001))
(setq pllipt (car plli))
(if (not (equal pllipt napt 0.00000001))
(setq plli (append (cdr plli)(list(car plli))))
)
)
plli
)
(defun aplv ( kel kpt / el eli elt geli w70)
(setq w70 (cdr (assoc 70 (entget kel)))
el (entnext kel)
eli (entget el)
elt (cdr(assoc 0 eli))
)
(while (= elt "VERTEX")
(setq el (entnext el)
geli (append geli eli)
eli(entget el)
elt(cdr(assoc 0 eli))
)
)
(setq plspt (subplv geli w70 kpt))
plspt
)
(defun subplv (geli og kpt / plptli plsegmpt)
(setq plptli (apply
'append
(mapcar
'(lambda (X)
(if (= 10 (car X))
(list (cdr X))
)
)
geli
)
)
)
plptli
)
[Diese Nachricht wurde von Brischke am 26. Oktober 2001 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP