明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 263|回复: 6

[提问] 炸开嵌套块保留最外图块加入选择的块炸开

[复制链接]
发表于 2025-5-6 14:37:37 | 显示全部楼层 |阅读模式
10明经币
用AI写了一个炸开嵌套保留最外的图块,但是是全局的,我想要一个能局部选择块的,麻烦大佬解决下,AI不行啊怎么都解决不了各种报错,附件和CAD图块一块上传

附件: 您需要 登录 才可以下载或查看,没有账号?注册
回复

使用道具 举报

发表于 3 天前 来自手机 | 显示全部楼层
先让他全部炸开,然后再生成块,是不是就可以了?
回复

使用道具 举报

发表于 前天 08:51 | 显示全部楼层
  1. (defun c:xx (/ s i res)
  2.   (setq s (ssget "_+.:E:S" '((0 . "INSERT"))))
  3.   (undobe)
  4.   (setq res (xpinside s))
  5.   (if (= (member "on" res) nil)
  6.     (princ "\n对象内不含嵌套块")
  7.     (PROGN
  8.       (while
  9.         (member "on" res)
  10.          (setq res (xpinside s))
  11.       )
  12.       (princ "\n已分解嵌套块")
  13.     )
  14.   )
  15.   (setq i nil)
  16.   (undoe)
  17.   (prin1)
  18. )
  19. (defun xpinside        (s / lock)
  20.   (setq lock "off")
  21.   (LM:ApplytoBlockObjects
  22.     (vla-get-blocks
  23.       (vla-get-activedocument (vlax-get-acad-object))
  24.     )
  25.     (vla-get-effectivename
  26.       (vlax-ename->vla-object (ssname s 0))
  27.     )
  28.     '(lambda (obj)
  29.        (if
  30.          (= (vla-get-ObjectName obj) "AcDbBlockReference")
  31.           (PROGN (vla-explode obj) (vla-delete obj) (setq lock "on"))
  32.        )
  33.      )
  34.   )
  35. )

  36. (defun LM:ApplytoBlockObjects (blks name func / result)
  37.   (setq func (eval func))
  38.   (if
  39.     (not
  40.       (vl-catch-all-error-p
  41.         (setq def (vl-catch-all-apply 'vla-item (list blks name)))
  42.       )
  43.     )
  44.      (vlax-for obj def (setq result (cons (func obj) result)))
  45.   )
  46.   (reverse result)
  47. )
  48. (prin1)
回复

使用道具 举报

 楼主| 发表于 前天 09:20 | 显示全部楼层

no function definition: UNDOBE  大神这个报错哦
回复

使用道具 举报

 楼主| 发表于 前天 09:23 | 显示全部楼层
jh1215218 发表于 2025-5-11 07:24
先让他全部炸开,然后再生成块,是不是就可以了?

就是需要选取范围内的块进行炸开,要求就是炸开块内所有的其他块,然后就可以了 AI搞不出来
回复

使用道具 举报

发表于 昨天 08:40 | 显示全部楼层
a2022002 发表于 2025-5-12 09:23
就是需要选取范围内的块进行炸开,要求就是炸开块内所有的其他块,然后就可以了 AI搞不出来

(command "_.undo" "be")
.............
(command "_.undo" "e")
回复

使用道具 举报

发表于 7 小时前 | 显示全部楼层

带属性的图块不应该炸开,比如轴号和门窗,这些在建筑图里都是带属性的图块。我修改了一下这个函数(defun xpinside (s / lock)
  (setq lock "off")
  (lm:applytoblockobjects (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-effectivename
                                                                                                                  (vlax-ename->vla-object
                                                                                                                                          (ssname s 0)
                                                                                                                  )
                                                                                           ) '(lambda (obj)
                                                                                                (if (and
                                                                                                      (=
                                                                                                         (vla-get-objectname obj)
                                                                                                         "AcDbBlockReference"
                                                                                                      )
                                                                                                      (=
                                                                                                         (vla-get-hasattributes obj)
                                                                                                         :vlax-false
                                                                                                      )
                                                                                                    )
                                                                                                  (progn
                                                                                                    (vla-explode obj)
                                                                                                    (vla-delete obj)
                                                                                                    (setq lock "on")
                                                                                                  )
                                                                                                )
                                                                                              )
  )
)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 08:09 , Processed in 0.258019 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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