yyz123121 发表于 2024-8-27 15:04:07

有什么办法可以将不允许分解的图块改为允许分解?

一个文件中所有图块在建立的时候就设置成不允许分解,有什么办法可以批量修改成允许分解吗?

kozmosovia 发表于 2024-8-27 15:04:08

本帖最后由 kozmosovia 于 2024-8-29 11:16 编辑

yyz123121 发表于 2024-8-29 00:47
还是不行
我代码写错了,:vlax-false需要改成:vlax-true,:vlax-false是全部给锁上不让分解了。

yyz123121 发表于 2024-8-27 15:07:03

图块有普通块,也有动态块和嵌套块

kozmosovia 发表于 2024-8-27 16:22:36

(vlax-for blk (vla-get-blocks
                (vla-get-activedocument (vlax-get-acad-object))
              )
(vl-catch-all-apply
    'vla-put-explodable
    (list blk :vlax-false)
)
)

yyz123121 发表于 2024-8-28 18:35:18

kozmosovia 发表于 2024-8-27 16:22
(vlax-for blk (vla-get-blocks
                (vla-get-activedocument (vlax-get-acad-object))
              )


大神,这个要怎么用能再给点提示吗我就只会command类的命令

kozmosovia 发表于 2024-8-28 19:19:14

直接全部黏贴到命令行就行了

yyz123121 发表于 2024-8-29 00:45:14

kozmosovia 发表于 2024-8-28 19:19
直接全部黏贴到命令行就行了

粘贴了还是不行

yyz123121 发表于 2024-8-29 00:47:54

kozmosovia 发表于 2024-8-28 19:19
直接全部黏贴到命令行就行了

还是不行

qazxswk 发表于 2024-8-29 03:07:28

试试这个,如果不想炸开,把(vl-cmdf "explode" x1 "" "")这句删除。


(defun c:11(/ x x1)
(while (if (and (setq x (entsel "\n选择图块: "))
         (setq x1 x )
             (setq x (vlax-ename->vla-object (car x)))
      )
    (vl-catch-all-apply'(lambda ()
    (setq x (vla-item
    (vla-get-blocks(vla-get-activedocument (vlax-get-acad-object)))
   (vla-get-name x)
   )       )
   (vla-put-explodable x :vlax-true)
   ) )
   ) )
(vl-cmdf "explode" x1 "" "")
(princ "\n块已炸开。")
(princ))

hubeiwdlue 发表于 2024-8-29 07:17:09

嵌套块有些是人为加密的手段,这种多重嵌套块很难处理。
页: [1] 2
查看完整版本: 有什么办法可以将不允许分解的图块改为允许分解?