明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 834|回复: 6

[LISP资料] 请问论坛大佬在位块编辑时怎么判断选择的图元是在块内还是块外呢?

[复制链接]
发表于 2025-6-19 09:46:47 | 显示全部楼层 |阅读模式
请问论坛大佬在位块编辑时怎么用LISP判断选择的图元是在块内还是块外呢?
回复

使用道具 举报

发表于 2025-6-19 10:26:37 | 显示全部楼层
如果属性文字,块内叫attdef,其余看组码330。纯属猜测。。。。
回复 支持 反对

使用道具 举报

发表于 2025-6-19 12:22:56 | 显示全部楼层
(setq s0 (entlast))
(command "-REFEDIT" "O" "A" "Y")
(while (setq s0 (entnext s0)) (setq lst (cons s0 lst)))
上面除了lst里面的图元,其它图元都是工作集外的
回复 支持 反对

使用道具 举报

发表于 2025-6-19 16:15:52 | 显示全部楼层
楼上说得对,原理就是一个差集而已.
https://www.cnblogs.com/JJBox/p/11185185.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-19 23:46:57 | 显示全部楼层
pzweng 发表于 2025-6-19 12:22
(setq s0 (entlast))
(command "-REFEDIT" "O" "A" "Y")
(while (setq s0 (entnext s0)) (setq lst (cons ...

我试了一下,在块编辑时创建的集合LST也包含了块外的图元呢
回复 支持 反对

使用道具 举报

发表于 2025-6-20 12:21:42 | 显示全部楼层
本帖最后由 guosheyang 于 2025-6-20 12:22 编辑

; 获取块儿在位编辑器内图元名列表                     
;(tt (setq b(car(entsel "\n选择要在位剪辑的块儿"))))

(defun tt(b / BJ LST)
(setq bj(entlast))
(sssetfirst nil(ssadd b))
(vl-cmdf "-refedit" "O" "ALL" "Y")
(while (setq bj (entnext bj)) (setq lst (cons bj lst)))
)

这样似乎是对的
回复 支持 反对

使用道具 举报

发表于 2025-6-20 15:43:32 | 显示全部楼层
薄荷微光 发表于 2025-6-19 23:46
我试了一下,在块编辑时创建的集合LST也包含了块外的图元呢

要改用Lisp调用VBA的字典进行O(1)判断,
实在嫌麻烦就转C#
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-4 04:53 , Processed in 0.166571 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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