执行ENTSEL时,如何设置对象捕捉?
在使用ENTSEL之前,已经打开相应的对象捕捉,如端点,开始执行ENTSEL时,设置好的对象捕捉不起作用了,除非手动输入“END”,才能捕捉到相应位置。请问,应该如何解决?
(setvar "osmode" 1)
(entsel "\n选择要编辑的多段线:")
被承包的东子 发表于 2017-8-11 08:40
osmode是系统的对象捕捉变量,getvar “osmode”能得到你现在的cad对象捕捉的变量,相当于得到了你当前对 ...
很显然,你说的这些都是能查到的,请问跟我的问题有什么关系?
;;获取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 21:22 编辑
fools 发表于 2017-8-10 22:13
(ssget (getpoint))
谢谢,我稍微改变了一点点
(setvar "osmode" 513)
(ssget "c" (setq PT1 (getpoint "\n选择要编辑的多段线顶点:")) (mapcar '(lambda (x) (+ x 0.03)) PT1))
扩大一点点窗口范围是为了选择带全局宽度的多段线
但是,新的问题又来了
如果多段线的全局宽度大于预设值0.03的两倍,用最近点的捕捉模式就会选不中,用端点是没问题
还有,同样这句话选虚线镂空处,端点和最近点都会选不中
所以总觉得不够完善,不知是否有更好的方式
目的:只用选择多段线上任意点一次,就可以从选择的点对多段线开始重新编辑顶点,既点击一次就能取得多段线和指定点坐标的信息。
编辑顶点的代码已经调试好了,就是刚开始这点点怎么优化,请大神们指点指点。
本帖最后由 kanxiaokan 于 2017-8-10 14:07 编辑
................ 你应该先去了解系统变量osmode的意思 ,再研究为什么捕捉 没有了 被承包的东子 发表于 2017-8-10 14:21
你应该先去了解系统变量osmode的意思 ,再研究为什么捕捉 没有了
研究半天没找到突破口呢,请高手指点一二 itoboy 发表于 2017-8-10 16:43
研究半天没找到突破口呢,请高手指点一二
你为什么使用entsel要去捕捉点呀? entsel返回一个点,用osnap 自贡黄明儒 发表于 2017-8-10 18:04
你为什么使用entsel要去捕捉点呀? entsel返回一个点,用osnap
是想选择一条线,同时又要取得指定顶点坐标。
貌似可以换个方式,用SSget来实现 (ssget (getpoint)) itoboy 发表于 2017-8-10 16:43
研究半天没找到突破口呢,请高手指点一二
osmode是系统的对象捕捉变量,getvar “osmode”能得到你现在的cad对象捕捉的变量,相当于得到了你当前对象捕捉对话框里的选择内容,当setvar“osmode” 0 的时候,就表示对象捕捉里面的所有选项不勾选,setvar "osmode" 31743 的时候表示对象捕捉关闭,
页:
[1]
2