明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4485|回复: 15

[提问] 执行ENTSEL时,如何设置对象捕捉?

[复制链接]
发表于 2017-8-9 23:50:13 | 显示全部楼层 |阅读模式
在使用ENTSEL之前,已经打开相应的对象捕捉,如端点,开始执行ENTSEL时,设置好的对象捕捉不起作用了,除非手动输入“END”,才能捕捉到相应位置。
请问,应该如何解决?
(setvar "osmode" 1)
(entsel "\n选择要编辑的多段线:")
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2017-8-11 20:24:09 | 显示全部楼层
被承包的东子 发表于 2017-8-11 08:40
osmode是系统的对象捕捉变量,getvar “osmode”能得到你现在的cad对象捕捉的变量,相当于得到了你当前对 ...

很显然,你说的这些都是能查到的,请问跟我的问题有什么关系?
回复 支持 0 反对 1

使用道具 举报

发表于 2017-8-11 22:32:50 | 显示全部楼层

  1. ;;获取PLINE线上选取点处的“段”信息
  2. (DEFUN GetSegAtPline (obj p / P1 P2 PA PN)
  3.   (SETQ        pn (VLAX-CURVE-GETCLOSESTPOINTTO obj (TRANS p 1 0))
  4.         pa (FIX (VLAX-CURVE-GETPARAMATPOINT obj pn))
  5.         p1 (VLAX-CURVE-GETPOINTATPARAM obj pa) ;_选取段起点
  6.         p2 (VLAX-CURVE-GETPOINTATPARAM obj (1+ pa)) ;_选取段终点
  7.   )
  8.   (list p1 p2) ;_返回需要的点或点集
  9. )

  10. ;;测试
  11. (DEFUN c:tt (/ e pts)
  12.   (IF (SETQ e (ENTSEL "\n选择多义线:"))
  13.     (PROGN (SETQ pts (GetSegAtPline (VLAX-ENAME->VLA-OBJECT (CAR e)) (CADR e)))
  14.            (COMMAND ".line" (car pts) (cadr pts) "")
  15.     )
  16.   )
  17.   (PRINC)
  18. )
复制代码
 楼主| 发表于 2017-8-11 21:07:26 | 显示全部楼层
本帖最后由 itoboy 于 2017-8-11 21:22 编辑

谢谢,我稍微改变了一点点
(setvar "osmode" 513)
(ssget "c" (setq PT1 (getpoint "\n选择要编辑的多段线顶点:")) (mapcar '(lambda (x) (+ x 0.03)) PT1))
扩大一点点窗口范围是为了选择带全局宽度的多段线
但是,新的问题又来了
如果多段线的全局宽度大于预设值0.03的两倍,用最近点的捕捉模式就会选不中,用端点是没问题
还有,同样这句话选虚线镂空处,端点和最近点都会选不中
所以总觉得不够完善,不知是否有更好的方式
目的:只用选择多段线上任意点一次,就可以从选择的点对多段线开始重新编辑顶点,既点击一次就能取得多段线和指定点坐标的信息。
编辑顶点的代码已经调试好了,就是刚开始这点点怎么优化,请大神们指点指点。

发表于 2017-8-10 14:21:09 | 显示全部楼层
你应该先去了解系统变量osmode的意思 ,再研究为什么捕捉 没有了
 楼主| 发表于 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
 楼主| 发表于 2017-8-10 18:22:31 | 显示全部楼层
自贡黄明儒 发表于 2017-8-10 18:04
你为什么使用entsel要去捕捉点呀? entsel返回一个点,用osnap

是想选择一条线,同时又要取得指定顶点坐标。
貌似可以换个方式,用SSget来实现
发表于 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 的时候表示对象捕捉关闭,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-20 02:22 , Processed in 0.178669 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表