依然小小鸟 发表于 7 天前

功能强大!批量建块的插件,基点在中心~~




能够框选每个图形 批量对每个单独图形建块 而且块中心点 就是图形中心点

依然小小鸟 发表于 7 天前

qifeifei 发表于 2025-12-5 10:36
已下载、已体验;
不足点:
1.建立的块太多;打散很麻烦;叠加了太多次


你要增加打散功能和分割块功能 就是下一个插件的事了 这个插件专注批量建块

水洗可口可乐 发表于 7 天前

这段代码存在多个严重逻辑漏洞。以下是详细分析:

主要逻辑漏洞:
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)。

qifeifei 发表于 7 天前

已下载、已体验;
不足点:
1.建立的块太多;打散很麻烦;叠加了太多次
2.分割块不是很完美
---
总结:是很强大;但是有点太强大了。

konoko 发表于 7 天前

先看看二楼的动图说明,现实工作中建块是基本操作。感谢分享!

konoko 发表于 7 天前

块中块太多导致需要一炸到底?或者只保留最上层块。算了,略过吧!块中块太多应该也会导致CAD保存的信息过多吧,就好比spline线控制点太多所记录的坐标也会更多。

2032099763 发表于 7 天前

批量在图形中心写注释可以吗?不想建那么块

言戲無軍 发表于 7 天前

基点不在中心 CAD2026

tranque 发表于 7 天前

积分15095
注册时间2016-12-2
最后登录1970-1-1
太强了吧

依然小小鸟 发表于 7 天前

水洗可口可乐 发表于 2025-12-5 19:24
这段代码存在多个严重逻辑漏洞。以下是详细分析:

主要逻辑漏洞:


你用ai分析的吗辛苦你把完善后的上传一下 :L
页: [1] 2
查看完整版本: 功能强大!批量建块的插件,基点在中心~~