明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 898|回复: 1

[提问] 求助,点是否在点集内的判断出错。

[复制链接]
发表于 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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-9-26 20:07:38 | 显示全部楼层
改判斷pt1與pts的距離
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 09:22 , Processed in 0.166146 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表