AUTOCAD中匿名块的修改方法
各位常用AUTOCAD的人士可听说过匿名块?
所谓的匿名块,AUTOCAD官方的解释是:
AutoCAD使用匿名块来支持填充图案和尺寸标注。这种类型的块也可以用AutoLISP或类似的方法来创建,但是不能在图形编辑器中创建。而且,也不能使用AutoCAD的编辑命令来修改匿名块。
解决方法
在为汇集数据而提取块信息时,匿名块可能会引起问题,例如从一个电子数据表中提取数据。举例而言,如果用户需要知道有多少个含有特殊对象的块被插入到图形中,而这些块曾经被AutoLISP程序变为匿名块时,统计出的块的数量会不正确。
虽然用户不能创建匿名块,但知道它们的存在是很重要的。
http://www.autodesk.com.cn/adsk/servlet/item?siteID=1170359&id=12028171
+++++++++++++++++++++++
简单点说,其实就是为了让别人找不块,也编辑不了的一种没名字的块。匿名块的名字均是*Uxxxx的格式。
以下是正常定义的块与匿名块的不同之处:
正常定义的块可以是除了其他符号外的任意名字,当然也是支持中文的。
当我们双击CAD图中的正常块时,弹出如下块属性:
确定后就可以正常编辑。
而所谓的匿名块,双击后出现如下属性:
AUTOCAD居然找不到这类块,虽然你知道其名字为*UXXXX,但是输入后提示找不到。
好,问题就来了,当你拿到一张图纸,里面有很多LTP点,现在要改成LTD,而图里面的相关块很多时(如综合布线点上千个),如果把其炸开后再修改其文字,这工作量可真的不是一般的大,如果能直接修改块,那么一切就好办了,修改好一个块后,其余的全部就搞定。
写一段脚本,然后把匿名块改名,只要名字是正常的,则改名后的块跟正常定义的块是一样的。
转载一下,脚本如下:
(defunC:ccc (/ *APP *DOCEntNamNewNam)
(vl-load-com)
(setq*APP (vlax-get-acad-object))
(setq*DOC (vla-get-activeDocument*APP))
(if (setqEntNam(car (entsel"n请选择块: ")))
(if (setqNewNam(getstring"n请输入新块名: "))
(change-block-nameEntNamNewNam)
(princ"n你没有输入新块名!")
)
(princ"n你没有选择物体!")
)
(princ)
)
;;;改块名程序
(defunchange-block-name (EntNamNewNam/objblocksBlkNamblock)
(setqobj(vlax-ename->vla-objectEntNam))
(setqblocks (vla-get-blocks *DOC))
(if (=(vla-get-objectnameobj) "AcDbBlockReference")
(if (tblsearch"block"NewNam)
(princ"n和已有块名重复!")
(progn
(setqBlkNam(vla-get-nameobj))
(setqblock(vla-item blocksBlkNam))
(vla-put-name blockNewNam)
(if (= (substrBlkNam1 2) "*U")
(progn
(princ"n这是一个匿名块.")
(vla-auditinfo*Doc :vlax-true)
(vla-put-name blockNewNam)
)
)
(princ"n块名已经更改成"")
(princNewNam)
(princ""")
)
)
(princ"n所选物体不是块!")
)
)
把以上的脚本存为CCC.LSP(文件名随便),然后在AUTOCAD-工具-加载程序中选中CCC.LSP,OK,这个叫"CCC"的命令就已经在你的AUTOCAD中了,就像“L”命令一样直接输入调用即可,
以下是运行命令提示情况:
——————————————————
命令: CCC
请选择块:
请输入新块名: NEW09
这是一个匿名块.
核查表头
核查表
第1阶段图元核查
阶段1已核查73700 个对象
第2阶段图元核查
阶段2已核查73700 个对象
核查块
已核查2784 个块
共发现0个错误,已修复0个
已删除0个对象
命令:
块名已经更改成"NEW09"
————————————
经过CCC修改名字的匿名块变成“正常”块了,然后修改即可。
ps:听说某些人为了加密也会用到匿名块,当然还有就是使用国内某些类似AUTOCAD软件也会导致图纸当中存在很多这些所谓的匿名块。
匿名块改名程序:CCC.lsp