Salut, Pour savoir si une polyligne est fermée au sens où sa propriété "Fermé" (Closed) est vraie, tu peux, comme le dit sbosarl, vérifier dans les codes DXF que le groupe 70 a bien le bit 1, mais attention, if faut faire un comparaison bit à bit avec l'opérateur logique AND parce que le groupe 70 des polylignes ne contient pas uniquement ce bit mais aussi le bit 128 qui concerne la "génération de type de ligne". Donc (70 . 1) ou (70 . 129) = fermé et (70 . 0) ou (70 . 128) = ouvert. (defun IsClosed (pline)
(= 1 (logand 1 (cdr (assoc 70 (entget pline)))))
) Tu peux aussi, plus simplement, utiliser getpropertyvalue avec la propriété "Closed" : 1 = fermé, 0 = ouvert : (defun IsClosed (pline)
(= 1 (getpropertyvalue pline "Closed"))
) Ou encore, si tu utilises Visual LISP (vlaPline est de type vla-object) : (defun IsClosed (vlaPline)
(= (vla-get-Closed vlaPline) :vlax-true)
) Mais s'il s'agit de tester si une polyligne est hachurable, il faudrait aussi considérer les polylignes "ouvertes" dont le dernier sommet est superposé au premier. Là encore, on peut utiliser les trois méthodes :
(defun IsOverlapped (pline / elst)
(setq elst (entget pline))
(equal (assoc 10 elst) (assoc 10 (reverse elst)))
) (defun IsOverlapped (pline)
(equal
(getpropertyvalue pline "Vertices" 0 "Position")
(getpropertyvalue pline "Vertices" (fix (getpropertyvalue pline "EndParam")) "Position")
)
) (defun IsOverlapped (vlaPline / coords sdrooc)
(setq coords (vlax-get vlaPline 'Coordinates)
sdrooc (reverse coords)
)
(equal (list (car coords) (cadr coords)) (list (cadr sdrooc) (car sdrooc))
)