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