;;获取PLINE线上选取点处的“段”信息
(DEFUN GetSegAtPline (obj p / P1 P2 PA PN)
(SETQ pn (VLAX-CURVE-GETCLOSESTPOINTTO obj (TRANS p 1 0))
pa (FIX (VLAX-CURVE-GETPARAMATPOINT obj pn))
p1 (VLAX-CURVE-GETPOINTATPARAM obj pa) ;_选取段起点
p2 (VLAX-CURVE-GETPOINTATPARAM obj (1+ pa)) ;_选取段终点
)
(list p1 p2) ;_返回需要的点或点集
)
;;测试
(DEFUN c:tt (/ e pts)
(IF (SETQ e (ENTSEL "\n选择多义线:"))
(PROGN (SETQ pts (GetSegAtPline (VLAX-ENAME->VLA-OBJECT (CAR e)) (CADR e)))
(COMMAND ".line" (car pts) (cadr pts) "")
)
)
(PRINC)
)
itoboy 发表于 2017-8-11 20:24
很显然,你说的这些都是能查到的,请问跟我的问题有什么关系?
自己想去,真是无语,搞笑 被承包的东子 发表于 2017-8-12 08:50
自己想去,真是无语,搞笑
就是想不明白才来请教啊
烦请高手明示 如果只是要entsel所点击位置附近的最近点或者最近端点的话就比较简单,(defun tt(ent f / e p);;ent(曲线图元 点)f=T 最近端点 nil最近点
(vl-load-com)
(if(VL-CATCH-ALL-ERROR-P(setq e(car ent)p(VL-CATCH-ALL-APPLY'vlax-curve-getClosestPointTo ent)))
nil
(if f(vlax-curve-getpointatparam e(fix(+(vlax-curve-getparamatpoint e p)0.5)))p))) (setq mpt (osnap (last(entsel)) "_nod,_int,_nea"));;捕捉节点,交点,最近点 0,无
1,end
2,mid
4,cen
8,节点
16,象限点
32,int
64,插入点
128,垂直点。
256,切点
512,nea
1024,快捷
页:
1
[2]