magicheno
发表于 2020-6-10 23:11:39
defun c:exnest ( / doc ent )
(while
(progn (setvar 'errno 0) (setq ent (car (entsel "\nSelect block: ")))
(cond
( (= 7 (getvar 'errno))
(princ "\nMissed, try again.")
)
( (null ent) nil)
( (/= "INSERT" (cdr (assoc 0 (entget ent))))
(princ "\nSelected object is not a block.")
)
)
)
)
(if ent
(progn
(vlax-for obj
(vla-item
(vla-get-blocks (setq doc (vla-get-activedocument (vlax-get-acad-object))))
(LM:name->effectivename (cdr (assoc 2 (entget ent))))
)
(exnest:explode obj)
)
(vla-regen doc acallviewports)
)
)
(princ)
)
(defun exnest:explode ( obj / lst )
(if
(and
(= "AcDbBlockReference" (vla-get-objectname obj))
(vlax-write-enabled-p obj)
(not (vl-catch-all-error-p (setq lst (vl-catch-all-apply 'vlax-invoke (list obj 'explode)))))
)
(progn
(foreach obj lst (exnest:explode obj))
(vla-deleteobj)
)
)
)
;; Block Name -> Effective Block Name-Lee Mac
;; blk - Block name
(defun LM:name->effectivename ( blk / rep )
(if
(and (wcmatch blk "`**")
(setq rep
(cdadr
(assoc -3
(entget
(cdr (assoc 330 (entget (tblobjname "block" blk))))
'("AcDbBlockRepBTag")
)
)
)
)
(setq rep (handent (cdr (assoc 1005 rep))))
)
(cdr (assoc 2 (entget rep)))
blk
)
)
(vl-load-com) (princ)
这个是晓东Lisphk的,可以实现框选嵌套块内部全部炸开的,不过也不支持保留底层块的
masterlong
发表于 2020-6-11 01:26:22
出错以后按F2 把出错提示截个图 光这么说谁知道啥情况 我肯定是自己能运行才上传的 速度就不追求了 优化需要时间 最近太忙 框选不是问题 问题也是没时间
magicheno
发表于 2020-6-11 11:58:56
masterlong 发表于 2020-6-11 01:26
**** 作者被禁止或删除 内容自动屏蔽 ****
大侠怎么被屏蔽了
masterlong
发表于 2020-6-11 16:02:49
貌似论坛误判我重复发帖:L
magicheno
发表于 2020-6-12 13:30:24
用06的话XXN可以用,XXM如下图的GIF的样子的,然后高版本的话是半个小时都一直卡在那里不动了,想按F2也按不出来的,不知道是不是嵌套块太多了缘故
masterlong
发表于 2020-6-12 19:41:58
把你的dwg发上来
我有空看看
另外
你的CAD低版本是啥高版本是啥
也一并说说
magicheno
发表于 2020-6-13 01:03:02
低版本用的06的,高版本用的18的,后来都试了下都是直接一闪就没反应了
masterlong
发表于 2020-6-13 10:15:19
第197行里有个调试时用的语句忘记删了
(~~ (strcase (cdr (assoc 2 (entget y)))))
在这一句之前加1个";"屏蔽掉
再试试
masterlong
发表于 2020-6-13 10:22:57
另外为啥不采用框选
源码里其实有交代原因
不是做不到
而是可能引起错误
magicheno
发表于 2020-6-13 11:54:10
加上;号只要用是可以用了的,不过试了下,有几级块是炸掉了,但是我发上来的图片那种台盆这些卫生洁具也是一个块,包含这些卫生洁具的那个嵌套块没有炸开来的