itoboy 发表于 2017-8-9 23:50:13

执行ENTSEL时,如何设置对象捕捉?

在使用ENTSEL之前,已经打开相应的对象捕捉,如端点,开始执行ENTSEL时,设置好的对象捕捉不起作用了,除非手动输入“END”,才能捕捉到相应位置。
请问,应该如何解决?
(setvar "osmode" 1)
(entsel "\n选择要编辑的多段线:")

itoboy 发表于 2017-8-11 20:24:09

被承包的东子 发表于 2017-8-11 08:40
osmode是系统的对象捕捉变量,getvar “osmode”能得到你现在的cad对象捕捉的变量,相当于得到了你当前对 ...

很显然,你说的这些都是能查到的,请问跟我的问题有什么关系?

fools 发表于 2017-8-11 22:32:50


;;获取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:07:26

本帖最后由 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:05:39

本帖最后由 kanxiaokan 于 2017-8-10 14:07 编辑

................

被承包的东子 发表于 2017-8-10 14:21:09

你应该先去了解系统变量osmode的意思 ,再研究为什么捕捉 没有了

itoboy 发表于 2017-8-10 16:43:31

被承包的东子 发表于 2017-8-10 14:21
你应该先去了解系统变量osmode的意思 ,再研究为什么捕捉 没有了

研究半天没找到突破口呢,请高手指点一二

自贡黄明儒 发表于 2017-8-10 18:04:29

itoboy 发表于 2017-8-10 16:43
研究半天没找到突破口呢,请高手指点一二

你为什么使用entsel要去捕捉点呀? entsel返回一个点,用osnap

itoboy 发表于 2017-8-10 18:22:31

自贡黄明儒 发表于 2017-8-10 18:04
你为什么使用entsel要去捕捉点呀? entsel返回一个点,用osnap

是想选择一条线,同时又要取得指定顶点坐标。
貌似可以换个方式,用SSget来实现

fools 发表于 2017-8-10 22:13:13

(ssget (getpoint))

被承包的东子 发表于 2017-8-11 08:40:20

itoboy 发表于 2017-8-10 16:43
研究半天没找到突破口呢,请高手指点一二

osmode是系统的对象捕捉变量,getvar “osmode”能得到你现在的cad对象捕捉的变量,相当于得到了你当前对象捕捉对话框里的选择内容,当setvar“osmode” 0 的时候,就表示对象捕捉里面的所有选项不勾选,setvar "osmode" 31743 的时候表示对象捕捉关闭,
页: [1] 2
查看完整版本: 执行ENTSEL时,如何设置对象捕捉?