- UID
- 76911
- 积分
- 428
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-9-3
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
今天先贴射线法,明天再贴角度法,均支持各种曲线的测试
[pcode=lisp,true]
(DEFUN InCurve (pt ent / COUNT TMPRAY)
(IF (EQUAL pt (VLAX-CURVE-GETCLOSESTPOINTTO ent pt) 1E-6)
(ALERT \"***点在线上***\")
(PROGN (SETQ ent (VLAX-ENAME->VLA-OBJECT ent)
TmpRay (VLAX-ENAME->VLA-OBJECT
(ENTMAKEX (LIST \'(0 . \"RAY\")
\'(100 . \"AcDbEntity\")
\'(100 . \"AcDbRay\")
(CONS 10 pt)
(CONS 11 (MAPCAR \'+ pt \'(1 0)))
;;相当于(polar pt 0 1)
)
)
)
pt (VLAX-3D-POINT pt)
Count 0
)
;;可根据需要调整扫描角度提高检索速度,本程序采用12度
(REPEAT 30
(VLA-ROTATE TmpRay pt (/ PI 15))
;;下面这句可以看到扫描过程,实际使用时可以注释掉
;;(COMMAND \"delay\" 50)
(IF (ZEROP
(REM (LENGTH (VLAX-INVOKE ent \'INTERSECTWITH TmpRay ACEXTENDNONE)
)
6
)
)
(SETQ Count (1- Count))
(SETQ Count (1+ Count))
)
)
(VLA-DELETE TmpRay)
(IF (MINUSP Count)
(ALERT \"***点在线外***\")
(ALERT \"***点在线内***\")
)
)
)
(PRINC)
)
[/pcode]
[pcode=lisp,true]
(DEFUN C:test (/ Curve Pt)
(IF (SETQ Curve (CAR (ENTSEL \"\\n选择一条曲线:\")))
(WHILE (SETQ Pt (GETPOINT \"\\n点取测试点:\"))
(InCurve Pt Curve)
)
)
(PRINC)
)
[/pcode] |
|