明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3942|回复: 10

[求助]如何判断选中的物体是否在当前工作集中(在位编辑图块时)

[复制链接]
发表于 2007-9-23 13:18:00 | 显示全部楼层 |阅读模式

如何判断选中的物体是否在当前工作集中(在位编辑图块时)

用Refedit命令编辑图块时,不在工作集中的物体是灰显的。如何知道它是不是处于灰显状态,并知道它是不是在Refedit时设定成锁定状态?

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-9-23 16:17:00 | 显示全部楼层

句柄在(在位编辑图块)前entlast之后的,就是工作集的实体。

在位编辑图块就相当于 炸开块来编辑。所以。。。

 楼主| 发表于 2007-10-1 21:44:00 | 显示全部楼层

我再顶一下。

无痕的说法就是要用反应器监视命令行了。发现用了Refedit命令就记一下(entlast) 这个好像比较累。比较间接。

没有直接的方法么?

在非工作集物体锁定的状态下,AutoCAD命令对其操作无效,但用LISP方式处理它竟然是可以的。从DXF表中也找不到哪个标记其锁定了。

发表于 2007-10-1 22:12:00 | 显示全部楼层

我想,这也许只能到arx里面去寻找答案了。

印象中xd说过,arx可控制一个“显示表”(因为我不甚了解,所以也只能说的比较含糊);cad的工作原理大概是:实体数据-》显示表-》显示到屏幕。 一般的lisp控制的是实体数据,而显示表更新这步则cad内部自动处理了。所以对lisp来说,没有这个过程,也不能控制其中玄机。  那么显示表在实际操作中体现在哪里?呵呵,试试draworder命令,大概有助于理解,的确有那么个东西存着。无关乎实体数据,只控制屏幕上显示到的部分。。。。

我知道的就这么多,胡诌的。请大伙指正

发表于 2007-10-2 07:07:00 | 显示全部楼层
搜索到一个 Acad_sortent ,只是这个 Table 对 Lisp 和 ActiveX 而言没有多少可以操作和查看的方法和特性,Arx 倒是看到一部分,好像是里面有 ObjectID
 楼主| 发表于 2007-10-3 12:53:00 | 显示全部楼层
本帖最后由 作者 于 2007-10-3 12:53:17 编辑

谢谢楼上两位。与Eachy探讨了一下,Eachy的主意也是无痕的监视命令行法。

这个方法可以判断是否在工作集中. 但如何判断不在工作集中的物体有没有被锁定? 用Move命令移动它试试?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2018-8-16 21:34:34 | 显示全部楼层
我来挖个坟.....
由于我是用c#来实现的,所以我不贴代码了,就直接说过程好了...
1,利用"否决命令反应器"来截获"REFEDIT",由于反应器在命令执行前,所以这个时候先获取当前空间所有的图元,这些图元就为"块外图元集".
2,在位编辑图块的时候,加集和减集的操作,要靠"命令执行后的反应器"来获取"REFSET",
  同时利用(getvar "lastprompt")获取命令行最后一句,判断内部是否有"添加"二字,有则加集,无则为减集.
3,这操作在加集和减集必须要在先选再用"REFSET",一般用户也是这样用的,但是为了排除用户先命令后选择,要利用否决命令,否决掉选择集出错时候..强迫用户
发表于 2019-6-19 20:12:23 | 显示全部楼层
这个问题解决了吗???
发表于 2019-9-28 10:54:42 | 显示全部楼层
发表于 2020-6-12 17:30:45 | 显示全部楼层
你有种再说一遍 发表于 2019-9-28 10:54
来瞅瞅我的 https://www.cnblogs.com/JJBox/p/11185185.html

你的网页界面真厉害
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-16 20:09 , Processed in 0.212822 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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