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


网友答:
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分析的吗  辛苦你把完善后的上传一下
  • 上一篇:根据纸质文本高度设置系统变量“DIMSCALE”的值
  • 下一篇:没有了