andymong 发表于 2014-9-26 15:09:51

求助,点是否在点集内的判断出错。

我想要判断黄色PL线代表的柱子中心点是否在红色代表的轴线的交点上,显示的中心点的中标与轴线交点坐标是一致的,但LSP确认为不一致,请大侠指点一下。
(defun Curveinters (en1 en2 / pl pts)
(setq pl(vlax-invoke (vlax-ename->vla-object en2) 'IntersectWith (vlax-ename->vla-object en1) acExtendNone))
(while pl
    (setq pts (append pts (list (list (car pl) (cadr pl) (caddr pl))))
   pl (cdr (cdr (cdr pl)))
   )
    )
pts
)
;;;曲线选择集交点
(defun ssinters (ss / pts en1 en2)
(while (> (sslength ss) 1)
    (setq en1 (ssname ss 0))
    (ssdel en1 ss)
    (setq n (sslength ss))
    (repeat n
      (setq en2 (ssname ss (setq n (1- n))))
      (setq pts (append pts (Curveinters en1 en2)))
      )
    )
pts
)
;;;点是否在点集内
(defun IsInPointList (p1 PL a)
    (if(member t (mapcar '(lambda (b) (equal p1 b a)) PL))
      t
      nil
    )
)
(defun c:gzdwjd ( / coluss n ent obj minpoint maxpoint pt1 dotess pts);
    (vl-load-com)
    (setvar "osmode" 0)
        (setq coluss (ssget "X" '((0 . "LWPOLYLINE")(8 . "柱"))))
        (setq n 0)
        (repeat (sslength coluss)
           (setq ent (ssname coluss n))
           (setq obj (vlax-ename->vla-object ent))
       (vla-GetBoundingBox obj 'minpoint 'maxpoint)
       (setq minpoint (vlax-safearray->list minpoint))
           (setq maxpoint (vlax-safearray->list maxpoint))          
           (setq pt1 (polar minpoint (angle minpoint maxpoint) (/ (distance minpoint maxpoint) 2)))          
          (setq dotess (ssget "c" minpoint maxpoint '((0 . "*line")(8 . "DOTE"))))
      (setq pts (ssinters dotess))
          (if (isinpointlist pt1 pts 0.001)
              (progn
                  (princ "\n柱中心与轴线交点重合,OK!!!")
                  )
                  (progn
                  (princ "\n柱中心与轴线交点不重合,请核对!!!")
                        (entmake (list '(0 . "CIRCLE") (cons 10 pt1) (cons 40 500.0)))
                   )                  
                );;end if
          (setq n (+ 1 n))
       );;end repeat
        (setvar "osmode" 16383)
        (princ)
);;;end defun

lsjj 发表于 2014-9-26 20:07:38

改判斷pt1與pts的距離
页: [1]
查看完整版本: 求助,点是否在点集内的判断出错。