秋枫 发表于 2007-9-23 13:18:00

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

<p>如何判断选中的物体是否在当前工作集中(在位编辑图块时) </p><p>用Refedit命令编辑图块时,不在工作集中的物体是灰显的。如何知道它是不是处于灰显状态,并知道它是不是在Refedit时设定成锁定状态?</p><p></p>

无痕 发表于 2007-9-23 16:17:00

<p>句柄在(在位编辑图块)前entlast之后的,就是工作集的实体。</p><p>在位编辑图块就相当于&nbsp;炸开块来编辑。所以。。。</p><p></p>

秋枫 发表于 2007-10-1 21:44:00

<p>我再顶一下。</p><p>无痕的说法就是要用反应器监视命令行了。发现用了Refedit命令就记一下(entlast) 这个好像比较累。比较间接。</p><p>没有直接的方法么?</p><p>在非工作集物体锁定的状态下,AutoCAD命令对其操作无效,但用LISP方式处理它竟然是可以的。从DXF表中也找不到哪个标记其锁定了。</p>

无痕 发表于 2007-10-1 22:12:00

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

ivde 发表于 2007-10-2 07:07:00

搜索到一个 Acad_sortent ,只是这个 Table 对 Lisp 和 ActiveX 而言没有多少可以操作和查看的方法和特性,Arx 倒是看到一部分,好像是里面有 ObjectID <br/>

秋枫 发表于 2007-10-3 12:53:00

本帖最后由 作者 于 2007-10-3 12:53:17 编辑 <br /><br /> <p>谢谢楼上两位。与Eachy探讨了一下,Eachy的主意也是无痕的监视命令行法。</p><p>这个方法可以判断是否在工作集中. 但如何判断不在工作集中的物体有没有被锁定? 用Move命令移动它试试?</p>

你有种再说一遍 发表于 2018-8-16 21:34:34

我来挖个坟.....
由于我是用c#来实现的,所以我不贴代码了,就直接说过程好了...
1,利用"否决命令反应器"来截获"REFEDIT",由于反应器在命令执行前,所以这个时候先获取当前空间所有的图元,这些图元就为"块外图元集".
2,在位编辑图块的时候,加集和减集的操作,要靠"命令执行后的反应器"来获取"REFSET",
同时利用(getvar "lastprompt")获取命令行最后一句,判断内部是否有"添加"二字,有则加集,无则为减集.
3,这操作在加集和减集必须要在先选再用"REFSET",一般用户也是这样用的,但是为了排除用户先命令后选择,要利用否决命令,否决掉选择集出错时候..强迫用户

1028695446 发表于 2019-6-19 20:12:23

这个问题解决了吗???

你有种再说一遍 发表于 2019-9-28 10:54:42

1028695446 发表于 2019-6-19 20:12
这个问题解决了吗???

来瞅瞅我的 https://www.cnblogs.com/JJBox/p/11185185.html

1028695446 发表于 2020-6-12 17:30:45

你有种再说一遍 发表于 2019-9-28 10:54
来瞅瞅我的 https://www.cnblogs.com/JJBox/p/11185185.html

你的网页界面真厉害
页: [1] 2
查看完整版本: [求助]如何判断选中的物体是否在当前工作集中(在位编辑图块时)