能够框选每个图形 批量对每个单独图形建块 而且块中心点 就是图形中心点
网友答:
qifeifei 发表于 2025-12-5 10:36
已下载、已体验;
不足点:
1.建立的块太多;打散很麻烦;叠加了太多次
你要增加打散功能和分割块功能 就是下一个插件的事了 这个插件专注批量建块 网友答: 这段代码存在多个严重逻辑漏洞。以下是详细分析:
主要逻辑漏洞:
1. 模式3(自动分组)的致命循环问题
lisp
(repeat (sslength ss) ; 循环次数固定
(setq ent (ssname ss i) i (1+ i))
;; 如果实体已删除,(entget ent) 返回 nil,但循环继续
(if (entget ent) ; 检查实体是否存在
(progn
;; 创建块后,原实体被删除,但ss选择集没有更新
;; 导致后续循环中 (entget ent) 返回 nil
)
)
)
问题:创建块后原对象被删除,但选择集ss仍然包含这些对象,后续循环会处理已删除的对象。
2. 模式3的重叠选择问题
lisp
(setq ss1 (ssget "_C" minpt maxpt)) ; 选择框内所有对象
问题:每个对象扩展边界框选择时,会选中相同区域内的多个对象,导致:
同一对象被多次创建到不同块中
块与块之间包含重复对象
无法正确分组
3. 块创建后的删除逻辑错误
lisp
;; 模式2中的错误删除
(if (> (sslength ss) 0)
(command "_.erase" ss "") ; 试图删除已经不存在或部分不存在的对象
)
问题:
CreateBlock函数中已用-block命令创建块,该命令自动删除原对象
再次删除会导致错误或删除块引用
4. 块插入点的固定问题
lisp
(InsertBlock blkname "0,0") ; 始终在0,0插入
问题:块创建后插入在原点,原对象位置信息丢失,图形位置改变。
5. 选择集管理混乱
lisp
;; 模式2中
(setq ss1 (ssadd))
(ssadd ent ss1)
(CreateBlock ss1 "0,0" blkname) ; 创建块后ss1中的对象被删除
(InsertBlock blkname "0,0")
问题:创建单个对象的块,但所有块都插入在同一位置(0,0)。网友答: 已下载、已体验;
不足点:
1.建立的块太多;打散很麻烦;叠加了太多次
2.分割块不是很完美
---
总结:是很强大;但是有点太强大了。
网友答: 先看看二楼的动图说明,现实工作中建块是基本操作。感谢分享!网友答: 块中块太多导致需要一炸到底?或者只保留最上层块。算了,略过吧!块中块太多应该也会导致CAD保存的信息过多吧,就好比spline线控制点太多所记录的坐标也会更多。网友答: 批量在图形中心写注释可以吗?不想建那么块网友答: 基点不在中心 CAD2026网友答: 积分15095
注册时间2016-12-2
最后登录1970-1-1
太强了吧网友答:
水洗可口可乐 发表于 2025-12-5 19:24
这段代码存在多个严重逻辑漏洞。以下是详细分析:
主要逻辑漏洞:
你用ai分析的吗 辛苦你把完善后的上传一下