找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 666|回复: 1

[每日一码] 炸开所有的匿名块

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-6-18 23:46:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  1. (defun c:ExplAnon ( / *error* _StartUndo _EndUndo _UnlockLayers _RelockLayers _i**plodable _GetBlockName acblk acdoc locked name ss )
  2.   (defun *error* ( msg )
  3.     (if locked (_RelockLayers locked))
  4.     (if acdoc  (_EndUndo acdoc))
  5.     (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  6.         (princ (strcat "\n** Error: " msg " **")))
  7.     (princ)
  8.   )

  9.   (defun _StartUndo ( doc ) (_EndUndo doc)
  10.     (vla-StartUndoMark doc)
  11.   )

  12.   (defun _EndUndo ( doc )
  13.     (if (= 8 (logand 8 (getvar 'UNDOCTL)))
  14.       (vla-EndUndoMark doc)
  15.     )
  16.   )

  17.   (defun _UnlockLayers ( doc / l )
  18.     (vlax-for layer (vla-get-layers doc)
  19.       (if (eq :vlax-true (vla-get-lock layer))
  20.         (vla-put-lock (car (setq l (cons layer l))) :vlax-false)
  21.       )
  22.     )
  23.     l
  24.   )

  25.   (defun _RelockLayers ( lst )
  26.     (mapcar '(lambda ( l ) (vla-put-lock l :vlax-true)) lst)
  27.   )

  28.   (defun _i**plodable ( blockdef )
  29.     (or
  30.       (not (vlax-property-available-p blockdef 'explodable))
  31.       (eq :vlax-true (vla-get-explodable blockdef))
  32.     )
  33.   )

  34.   (defun _GetBlockName ( obj )
  35.     (if (vlax-property-available-p obj 'effectivename)
  36.       (vla-get-effectivename obj)
  37.       (vla-get-name obj)
  38.     )
  39.   )

  40.   (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))
  41.         acblk (vla-get-blocks acdoc)
  42.   )        

  43.   (if (ssget "_X" '((0 . "INSERT") (2 . "`*U*")))
  44.     (progn
  45.       (_StartUndo acdoc) (setq locked (_UnlockLayers acdoc))
  46.       
  47.       (vlax-for obj (setq ss (vla-get-ActiveSelectionSet acdoc))
  48.         
  49.         (if (_i**plodable (vla-item acblk (setq name (_GetBlockName obj))))
  50.           (progn
  51.             (vla-explode obj) (vla-delete obj)
  52.           )
  53.           (princ (strcat "\nBlock: " name " is not explodable."))
  54.         )
  55.       )
  56.       (vla-delete ss) (_RelockLayers locked) (_EndUndo acdoc)
  57.     )
  58.   )

  59.   (princ)
  60. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 769个

财富等级: 财运亨通

发表于 2017-6-19 09:28:17 | 显示全部楼层
这个程序非常实用,谢谢楼主分享!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-23 22:05 , Processed in 0.343404 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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