选择的部分块更名
;;对于选择的部分块更名,在实际中是很有用的。;;http://bbs.mjtd.com/forum.php?mod=viewthread&tid=19105&extra=page%3D3%26filter%3Ddigest%26digest%3D1&page=3
;;以上alin 版主修改块程序,我一直使用到如今,在此表示感谢!!!
;;由于是vla写成的,我表示看不懂,纯粹拿来主义。
;;但是纯lisp能不能写成呢?
;;在明经和晓东,国内两个顶级论坛上,我从未看到过。因此,下面的程序是首创
;;基于我在峨嵋山修练过的功底和近年来的不断打坐冥想(真事儿),觉得是可能的,不信请看
**** Hidden Message *****
;;2015.6.13 By 自贡黄明儒
(defun C:PartBlockRename (/ EN N NEWNAME OLDNAME SS)
(cond
((and (setq ss (ssget '((0 . "INSERT"))))
(setq NewName (getstring "\n 输入新块名"))
(/= NewName "")
)
(setq oldName (cdr (assoc 2 (entget (ssname ss 0)))))
(_BlockNewName oldName NewName)
(repeat
(setq n (sslength ss))
(setq en (entget (ssname ss (setq n (1- n)))))
(entmod (subst (cons 2 NewName) (assoc 2 en) en))
)
)
)
(princ)
) 本帖最后由 adc 于 2015-8-31 13:13 编辑
(defun c:dkgm (/ e en j new old ss)
(defun dxf (a b) (cdr (assoc a b)))
(command "undo" "group")
(if
(and (setq ss (ssget '((0 . "INSERT"))))
(setq new (getstring "\n输入的块新名称:"))
(not (tblsearch "block" new))
)
(progn (setq old (dxf 2 (entget (ssname ss 0))))
(command "-insert" old '(0 0) "1" "1" 0)
(command "explode" (entlast))
(command "-block" new '(0 0) "P" "")
(setq j 0)
(repeat (sslength ss)
(setq e(ssname ss j)
en (entget
e
)
en (subst (cons 2 new) (assoc 2 en) en)
)
(entmod en)
(setq j (1+ j))
)
)
)
(command "undo" "end")
(princ)
)
经测试,好像不支持动态块嘛!一直想实现动态块和属性块的单独改名。 收藏留着慢慢看,谢谢楼主 黄老师你好! 部分块更名,实用的程序感谢分享! 大师,加油 黄老师你好! 程序对于块中含块的有问题喔? 不明觉厉
黄大师,请坚持 黄大师又耐不住寂寞啦 謝謝你的源碼分享。
謝謝你的源碼分享 看看黄老师高见