[讨论]关于直接更改块名的问题。
我有两个内容是一样的块,我需要不同的块名。但我又不想定义两次,有没有好的方法直接更改我选择的块的名称?在使用entmod这个函数的时候,要求块名事先定义,该如何事先定义呢?
能否用entmakex函数先定义一个块名,再将块名附给选择的块,不过好象行不通。
多谢hzzhao指点!我将程序加上了一点错误预防。
本帖最后由 作者 于 2003-3-31 10:48:02 编辑(defun c:nb (/ old-cmdecho ents new_name insert_point)
(setq old-cmdecho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(ai_undo_push)
(setq ents (entsel "\nSelect block to change name :"))
(while (or (not ents) (/= (cdr (assoc 0 (entget (car ents)))) "INSERT"))
(princ "Nothing selected or object selected is not block.")
(setq ents (entsel "\nSelect block to change name :"))
)
(setq insert_point (cdr (assoc 10 (entget (car ents))))
new_name (getstring "\nInput new block name :")
)
(if (and (not (tblsearch "block" new_name)) new_name)
(progn
(command "_.explode" ents)
(command "_.block" new_name insert_point "p" "")
(command "_.insert" new_name insert_point "" "" "")
)
(princ "\nInvalid block name or block name exist.")
)
(ai_undo_pop)
(setvar "cmdecho" old-cmdecho)
(princ)
)
不能
原来不可以这样,那看来不能省力了。
用这个简单的重新定义方法
本帖最后由 作者 于 2003-3-30 16:43:26 编辑(defun c:nb ()
(setq block_name (entsel "\nselect change block:"))
(setq new_bl_name (getstring "\nEnter new block name:"))
(setq insert_point (cdr (assoc 10 (entget (car block_name)))))
(command "explode" block_name)
(command "-block" new_bl_name insert_point "p" "")
(command "-insert" new_bl_name insert_point "" "" "")
(princ)
) 能不能块名加前缀?
页:
[1]