0 Members and 1 Guest are viewing this topic.
(defun c:LwPolyIsClosed ( / EntNam EntObj) (or (eq :vlax-true (vla-get-closed (setq EntObj (vlax-ename->vla-object (setq EntNam (car (entsel)))))) ) ; (= 1 (logand 1 (cdr (assoc 70 (entget EntNam))))) (equal (vlax-curve-getStartPoint EntObj) (vlax-curve-getEndPoint EntObj)) ))
My attempt . Code - Auto/Visual Lisp: [Select](defun c:ClosedPoly-p (/ s) (princ "\n Select LWpolyline ..") (and (setq s (ssget "_+.:S:E" '((0 . "LWPOLYLINE")))) (vlax-curve-isclosed (ssname s 0)) ))
Marc'Antonio, I use essentially what you have posted except I use the optional fuzz factor for the (equal) comparison. Using a fuzz of 0.0001 helps to eliminate any errors due to computer rounding issues.
(defun closedPoly (entname / entdata res) (cond ((eq (type entname) 'ENAME) (setq entdata (entget entname))) ((eq (type entname) 'VLA-OBJECT) (setq entdata (entget (vlax-vla-object->ename entname)))) ) (if entdata (if (eq 1 (cdr (assoc 70 entdata))) (setq res 1) (progn (if (eq (vl-princ-to-string (assoc 10 entdata)) (vl-princ-to-string (assoc 10 (reverse entdata))) ) (setq res 3) (setq res 2) ) ) ) ) res ) ;(closedPoly (car (entsel)))
Code: [Select]... (eq (vl-princ-to-string (assoc 10 entdata)) (vl-princ-to-string (assoc 10 (reverse entdata))))...
... (eq (vl-princ-to-string (assoc 10 entdata)) (vl-princ-to-string (assoc 10 (reverse entdata))))...