判断P1、P2两点之间是否有线段存在
本帖最后由 努.力 于 2023-12-24 16:41 编辑如题所述,求判断P1、P2两点之间是否有线段存在,并且该线段的一个端点与P1重合,另一个端点与P2重合
麻烦论坛上的大神们帮忙编一段程序,如果P1、P2两点有直线段,就给一个返回值,谢谢了
改了下 ,应该可以
本帖最后由 yaojing38 于 2023-12-25 10:52 编辑(defun c:tt (/ e ent ent1 i l obj pt1 pt2 s ss)
(setq pt1 (getpoint)pt2 (getpoint))
(setq ss (ssget "F" (list pt1 pt2)))
(cond
(t
(repeat (setq i (sslength ss))
(setq ent (ssname ss (setq i (1- i))))
(setq obj (vlax-ename->vla-object ent)
s (vlax-curve-getStartPoint obj)
e (vlax-curve-getEndPoint obj)
)
(if (="LWPOLYLINE" (cdr (assoc 0 (entget ent))))
(progn
(setq l ( - (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj)) (vlax-curve-getDistAtPoint obj pt2)))
(setq s (vlax-curve-getPointAtParam obj (vlax-curve-getParamAtPoint obj pt1))
e (vlax-curve-getPointAtParam obj (vlax-curve-getParamAtPoint obj pt2)))
)
(setq l (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj)))
)
(if (and (OR (and (equals pt10.1) (equale pt20.1)) (and (equal e pt10.1) (equal s pt20.1)))
(equal (distance pt1 pt2 ) l 0.1)
)
(setq ent1 ent)
)
)
)
)
ent1
)
努.力 发表于 2023-12-24 16:38
不知道能不能这样:p1、p2各选一次图元,再以p1、p2的中点选一次图元,如果三次选择都包含同一图元,则再判 ...
炸开比较??又是多段线又是直线的。。。 本帖最后由 xj6019 于 2023-12-23 19:35 编辑
这样行不,如果P1 P2中间有图元,就返回这个一个选择集结果,如果没有就返回nil
(defun is-p1p2ent (p1 p2 / ss)
(if(setq ss (ssget "c"(polar p1(angle p1 p2)(* 0.1(distance p1 p2)))(polar p2(angle p2 p1)(* 0.1(distance p1 p2)))))
ss
nil
)
)
xj6019 发表于 2023-12-23 19:31
这样行不,如果P1 P2中间有图元,就返回这个一个选择集结果,如果没有就返回nil
(defun is-p1p2ent (p1...
非常感谢长老的回复,用选择集判断,不是那么理想,第一个图形就判断为有了 本帖最后由 wzg356 于 2023-12-23 20:28 编辑
问题不严密:
线段是严格在p1p2区间且同向同线,容差多少
容差---方向?端点偏移距离?
wzg356 发表于 2023-12-23 20:24
问题不严密:
线段是严格在p1p2区间且同向同线,容差多少
容差---方向?端点偏移距离?
大神说的对,由于对lsp的不了解,所以也不懂如何描述恰当,请海涵……
线段的一个端点与P1重合,另一个端点与P2重合
试试 应该可以
本帖最后由 yaojing38 于 2023-12-24 12:55 编辑;;-------------------------------------------------
(defun c:tt (/ e ent ent1 i l obj pt1 pt2 s ss)
(setq pt1 (getpoint)pt2 (getpoint))
(setq ss (ssget "F" (list pt1 pt2)))
(cond
(t
(repeat (setq i (sslength ss))
(setq ent (ssname ss (setq i (1- i))))
(setq obj (vlax-ename->vla-object ent)
s (vlax-curve-getStartPoint obj)
e (vlax-curve-getEndPoint obj)
)
(setq l (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj)))
(if (and (OR (and (equals pt10.1) (equale pt20.1)) (and (equal e pt10.1) (equal s pt20.1)))
(equal (distance pt1 pt2 ) l 0.1)
)
(setq ent1 ent)
)
)
)
)
ent1
)
;;-------------------------------------------------
yaojing38 发表于 2023-12-24 12:42
非常感谢大神回复,图二判断为错误,应该是有 不知道能不能这样:p1、p2各选一次图元,再以p1、p2的中点选一次图元,如果三次选择都包含同一图元,则再判断该图元的量端点是否与p1、p2重合……不知是否可行? yaojing38 发表于 2023-12-25 10:25
努.力 发表于 2023-12-24 16:38
不知道能不能这样:p1、p2各选一次图元,再以p1、p2的中点选一次图元, ...
非常感谢大神鼎力相助
页:
[1]