hallo,
ich möchte kontrollieren, ob die punkte alle auf der ebene liegen, die die ersten beiden und der letzte punkt einer polylinie aufspannt.
hier mein code:
(defun c:fc_gc (/ n punkte)
(setq punkte (fc_punkt_extrakt (car (entsel))))
(if (> (distance (nth 0 punkte) (nth (- (length punkte) 1) punkte)) 0.0)
(setq lp (nth (- (length punkte) 1) punkte))
(setq lp (nth (- (length punkte) 2) punkte))
)
(if cal
(princ)
(arxload "geomcal")
);if
(setq 1p (nth 0 punkte))
(setq 2p (nth 1 punkte))
(setq 3p (nth 2 punkte))
(princ (cal "ilp(1p,3p,1p,2p,lp)"))
(princ)
);defun
; ERMITTELT DIE PUNKTE einer polylinie oder linie
;aufruf : (fc_punkt_extrakt element)
(defun fc_punkt_extrakt (element / element n punktliste)
(cond
((= (cdr (assoc 0 (cdr (entget element)))) "POLYLINE") (setq punktliste (fc_punkt_extrakt_polylinie element)))
((= (cdr (assoc 0 (cdr (entget element)))) "LWPOLYLINE") (setq punktliste (fc_punkt_extrakt_linie element)))
((= (cdr (assoc 0 (cdr (entget element)))) "LINE") (setq punktliste (fc_punkt_extrakt_linie element)))
);cond
punktliste
);defun
; ERMITTELT DIE PUNKTE einer polylinie
;aufruf : (fc_punkt_extrakt_polylinie element)
(defun fc_punkt_extrakt_polylinie (element / element punktliste)
(setq punktliste nil)
(setq xelement (entnext element))
(while (/= (cdr (assoc 0 (entget xelement))) "SEQEND")
(setq punktliste (append punktliste (list (cdr (assoc 10 (entget xelement))))))
(setq xelement (entnext xelement))
);while
punktliste
);defun
; ERMITTELT DIE PUNKTE einer linie
;aufruf : (fc_punkt_extrakt_linie element)
(defun fc_punkt_extrakt_linie (element / element punktliste n)
(setq punktliste nil)
(foreach n (entget element)
(if (= (car n) 10)
(setq punktliste (append punktliste (list (cdr n))))
);if
);foreach
punktliste
);defun
fehlermeldung: >> Fehler: Komma in Argumentliste der Funktion ILP erwartet.
------------------
MfG
Frank
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP