如何重定义块?
我想插入名字为en的块,先分解,然后删除文字,然后在重新定义块,名字和基点不变,就相当于更改下块的定义,如何实现呀……… 就删除文字,块的其他保持不变。 ;;;无需分解;;;删除块内文字
(defun C:TT (/ OBJ)
(if (setq OBJ (entsel "\n选择块: "))
(progn
(vlax-for X
(vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-get-name (setq OBJ (vlax-ename->vla-Object (car OBJ))))
)
(if (wcmatch (vla-get-ObjectName X) "AcDb*Text")
(vla-delete X)
)
)
(vla-update OBJ)
)
)
) caoyin 发表于 2012-5-2 20:24
;;;无需分解
;;;删除块内文字
其实我的真实想法是选择块内有线型比例的图元,然后把图元的线型比例都扩大n倍,于是想到了重定义块名的办法!
如果版主能给做到就无需重定义块了!
本以为变了个说法会简单些,没想到越扯越远了,哎!… 还可能面对嵌套块的问题,真是问题多多呀。 ………………… 厉害,如果用到放视图(放大视图里面有块的时候),应该不错。 套嵌块就递归,程序的整体架构就是vlax-for 本帖最后由 tm20038175 于 2012-5-2 22:52 编辑
caoyin 发表于 2012-5-2 22:39
套嵌块就递归,程序的整体架构就是vlax-for
恩,请问如何改线型比例呢?只需指点下一个命令就可以了(改一个图元的比例),递规我看看能不能自己尝试去改,谢谢了!…… (defun C:TT (/ OBJ LTS)
(if (and (setq OBJ (entsel "\n选择块: "))
(setq LTS (getreal "\n指定线形比例: ")))
(progn
(vlax-for X
(vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-get-name (setq OBJ (vlax-ename->vla-Object (car OBJ))))
)
(if (wcmatch (vla-get-ObjectName X) "AcDbLine");;以直线为例
(vla-put-LinetypeScale X LTS)
)
)
(vla-update OBJ)
)
)
)
页:
[1]
2