当前位置:文档之家› 多重插入块的制作,分解。

多重插入块的制作,分解。

:)制作·加密·解密cad文件·炸开多重插入块:)

所有人:刘世华

???怎么制作多重引用块???

AUTOCAD为了省内存,省空间,提高效率,引进了块引用这一技术。你在当前图纸空间插入一个块,它并不是把这个块复制一遍,而是把这个块的一些属性描述引过来,跟C++里面的引用极像。我现在讨论的不是引用是怎么实现的,AUTOCAD最大的重头就是块,大家肯定是很了解的。

我想说的是今天我和老韩研究的一个东西,AcDbMInsertBlock -多重插入块。它其实就是对块引用派生过来的一个新的东西,比普通块引用多了几个属性。具体是多了列数,行数,列距,行距。它可以用在什么地方呢?比如你现在要插入四个一样的块,就是位置不一样,用普通的块引用的话,要引四次。这样还是很占资源的,效率不高。而如果用AcDbMInsertBlock ,你可以定义一个2列2行,多个插入点的AcDbMInsertBlock 。AUTOCAD内部并没有复制多份引用,我写程序进去把AcDbMInsertBlock 里面的每一个实体拷贝出来了,发现只有一份。当然你不能炸开AcDbMInsertBlock ,如果可以炸开你就可以发现我说的肯定是对的。

多重插入块还有一个很有趣的是,它可以用来做加密,当然很容易破解掉的。大家都知道,无名块是不能够编辑的,所以可以用下面的步骤就可以生成一个只能看不能改的图。

1)、把整个图作成一个块。

2)、把当前图纸空间的实体删除了,用Minsert把刚才那个块插入。

3)、把刚才那个块的块名改成*U。

到现在,这个图不能分解,也不能编辑了,呵呵。当然破解非常简单的,一个最直接的是把这个多重插入块转成单插入块,然后炸开。还有一个就是把块表名字改了,这样就可以编辑块了。当然,你可以作得复杂一点,进入块表记录,把里面每个实体克隆一遍。

“多重插入引用”的制作:用minsert命令,提示块名,在cad工作目录下找一张图,键入这个图名,然后到提示行数或列数时,输入2以上,但行距或列距输入0。这样一个多重插入引用制作完成,无法用explode炸开了。多重块不是重复定义块,而是在矩形阵列中插入一个块的多重引用。多重块是由命令minsert插入一个块而形成,其在正常情况下不能被分解。

但若是用普通的方法构建的多重块,可以删除掉,然后用insert再插入它原来引用的块即可。不过,若它原来引用的块是匿名块(即名称前带*的块,只能用程序构建),就不是那么简单的了。这是,你就需要程序(或者说插件)来还原。vlx程序就是一个插件。也就是我上面说的编程实现。若不会编程,也没有插件,下面的方法可以实现。

???怎么加密为多重块???

1、多重块不是重复定义块,而是在矩形阵列中插入一个块的多个引用,多重块是由命令minsert插入一个块而形成,MINSERT插入的图块叫“多重插入块”,有点象阵列一样,把图形一

成成叠加在一起,叠加的间距可用0或1的间距,用0的话就是以0的间距叠加在一起。这种“多种插入块”其在正常情况下不能被分解。但若是用普通的方法构建的多重块,你可以删除掉,然后用insert再插入它原来引用的块即可。不过,若它原来引用的块是匿名块(即名称前带*的块,只能用程序构建),就不是那么简单分解了(这是,你就需要程序(或者说插件)来还原。你的vlx程序就是一个插件。也就是我上面说的编程实现。若不会编程,也没有插件,就可以用我说的第一种办法解决。至于为什么能这样,你分别翻翻cad14和cad2002以上版本的帮助文件就知道了)。对稍有编程常识的用户来说,ACAD命令不能解决,很自然就会去查这个对象的修改特性,可用命令MO或用ctrl+1打开修改特性,在修改特性窗口可以修改行列的叠加成数及行列间距等。也就是它的数据列表,原形毕露了尾巴露出来了,对付的办法也就有了。编个小程序,对付它不费吹灰之力。查看对象的特性,普通图块与多重插入块差别在哪不是一目了然了吗

(1)命令行: minsert 输入块名或[?]: 输入名称(输入你要插入的多重块名称,就是图纸的名称,输完回车,系统会自动根据你输入的图纸名称找到这张相同名称的图纸),(2)这时在桌面指定一个基点后。

(3)命令行要求输入XY轴的比例因子,在这直接以默认的比例因子回车。

(4)这时要求你输入旋转角度,在桌面用光标指定好后单击鼠标,或者输入角度。

(5)回车后命令行要求输入阵列叠加行数与列数,在这里输入的叠加成数越多,以后分解的时候分解的次数就越多次。

(6)回车后命令行要求输入行间距和列间距在这里输入0数,行间距与列间距数字可以为0或1,如果输入2的话就以间距2排列。

(7)输入? 表示列出图形中当前定义的块,或输入~ 表示显示“选择图形文件”对话框。注意在插入过程中,不能象使用INSERT 命令那样在块名前面使用星号来分解块对象。指定插入点或[比例(S)/X/Y/Z/旋转(R)/预览比例(PS)/PX/PY/PZ/预览旋转(PR)]: 指定点或输入选项,在指定插入点位置之前,插入点处的选项将预置块的比例和旋转角。当使用1 和0 之外的比例因子和旋转角来拖动块时,预置非常有用。如果输入下列选项之一,通过为比例选项指定距离或为旋转角指定角度以响应提示。不能分解使用MINSERT 命令插入的块。

???多重块的分解,多个方法???

方法一:

点击这个多重引用,看它的名字,然后再用minsert命令,插入这个名字,只不过都按默认的行数(1行)列数一直回车。这样插入的这个块就可以炸开了。

方法二:

双击这个块,出现参照编辑对话框,点确定,出现参照编辑工具条;用explode炸开;然后点击参照编辑工具条从工作集删除对象,选中所有图形,回车;再点击参照编辑工具条上的放弃对参照的修改。此时再用explode就可以炸开了。

方法三:

用天正软件打开多重插入块图纸,用天正下的“图纸保护”菜单,把多重块再加密下(在加密中不要设密码,直接回车确定),在使用天正图纸保护命令功能,把不能编辑的多重插图做一次保护,加密好后(不用加密码),可以使用天正分解对象功能+cad分解功能一步步的对图形进行了,直到把图纸分解好后。具体介绍下步骤:

(1)用天正打开加密的多重块图纸,选择图纸进行分解,显示为一个多重块不能分解:

(2)用天正只带的功能“图纸保护”命令,把多重块图纸加密下,(记住不要设密码,直接确定就好)

方法四:

1、在任何版本中打开图件(只要能打的开就行)

2、选中图,打开属性对话框,将行和列均改为1。

3、另存为R14以下(包括R14)版本格式。

4、打开R14,打开刚才另存的图,保存。(记住,这步尤其重要,必须是R14不能是cad2002及以上版本)好了,你再用任何版本的cad打开看看。另外一种方法就是编程,直接炸开即可。

方法五:

1、打开原文件后,输出为*.wmf文件,

2、新建空*.DWG文件,插入*.wmf文件,

3、输入另外一个炸开命令:xplode回车

4、选图层(TA),大功告成。可惜的是文字都炸开了,填充也炸了,图层只有一个,而且文件比较大。附件为wmf文件

方法六:

输入“CYN-”,将多重插入块转换为普通快,然后可以一步一步的炸开编辑!

方法七:

把以下内容保存为lsp文件(如exm.lsp),加载后运行exm既可把“多重插入块”转换为“普通块”,然后既可用“explode”分解。加载后运行lockb可把“普通块”转换为“多重插入块”

;;-------------------------------------------------------------

;;转换“多重插入块”为“普通块”。

(DEFUN C:exm ()

(setvar "cmdecho" 0)

(SETQ STM (car (ENTSEL "\n点取多重块")))

(while stm

(setq e (entget stm))

(setq stlx (cdr (assoc 0 e)))

(if (= stlx "INSERT")

(PROGN

(setq r_zm70 (assoc 70 e))

(setq c_zm71 (assoc 71 e))

(setq r_dist_zm44 (assoc 44 e))

(setq c_dist_zm45 (assoc 45 e))

(setq e (subst (cons 44 0) r_dist_zm44 e))

(setq e (subst (cons 45 0) c_dist_zm45 e))

(setq e (subst (cons 70 0) r_zm70 e))

(setq e (subst (cons 71 0) c_zm71 e))

(setq e (subst (list 100"AcDbBlockReference") (list 100"AcDbMInsertBlock") e)) (entmake e)

(entdel stm)

))

(SETQ STM (car (ENTSEL "\n点取下一多重块")))

)

(setvar "cmdecho" 1)

)

方法八:

有两个好工具,可以轻松炸开。一个是AutoCAD 快速加载 AutoLISP 文件:wjjm;另一个cad加密插件,请大家使用。

具体方法:

AutoCAD 快速加载 AutoLISP 文件wjjm的使用:用cad打开需要炸开的文件,将wjjm直接拖入cad窗口,命令行输入wjmm,回车后按提示操作即可。操作步骤:①于CAD中,选择:“工具”菜单→“加载应用程序”选项。

②于对话框中选择文件“wjjm”,进行应用程序加载。

③于CAD命令行中,输入“wjjm”命令,然后选择需要保护的图块,随便点击即可取消保护。

方法四:

(1)、先在图层管理器里将锁定图层打开;

(2)、选中该“多重插入块”,在其属性里将行、列均改为“1";

(3)、将下段保存为"exm.lsp"

转换“多重插入块”为“普通块”。

(DEFUN C:exm ()

(setvar "cmdecho" 0)

(SETQ STM (car (ENTSEL "\n点取多重块")))

(while stm

(setq e (entget stm))

(setq stlx (cdr (assoc 0 e)))

(if (= stlx "INSERT")

(PROGN

(setq r_zm70 (assoc 70 e))

(setq c_zm71 (assoc 71 e))

(setq r_dist_zm44 (assoc 44 e))

(setq c_dist_zm45 (assoc 45 e))

(setq e (subst (cons 44 0) r_dist_zm44 e))

(setq e (subst (cons 45 0) c_dist_zm45 e))

(setq e (subst (cons 70 0) r_zm70 e))

(setq e (subst (cons 71 0) c_zm71 e))

(setq e (subst (list 100 "AcDbBlockReference") (list 100 "AcDbMInsertBlock") e))

(entmake e)

(entdel stm)

))

(SETQ STM (car (ENTSEL "\n点取下一多重块")))

)

(setvar "cmdecho" 1)

)

;;--------------------------------------------------------------------

(4)、在打开了含有多重插入块的图形文件里加载“exm.lsp”,运行“exm”根据提示选中多重插入块;(5)、运行“explode”就可以将多重插入块分解,修改了。

(6)、你试试用(audit) 这个指令

先用“audit” 回车

Command: audit

之后“Y”回车

Fix any errors detected? [Yes/No] : Y无名块便会自动改名

Invalid block name "" found.

Changed to "AUDIT_I_0412********-1".

之后便可以分解

有的CAD图形由于加了密,整张图纸无法分解,这时候我们就不能对里面的构件进行转化,如果你用分解命令命令行会提示找到1个,1 个是多重插入引用,此时是无法分解的。这时候可能是由于CAD加密造成的,我们可以用CAD的UNLOCKDWG命令对图纸进行解密,解密后的图纸就能用分解等相关命令进行操作了。注:该命令需要加载插件lockdwg.VLX支持,如有需要本人可以在百度知道中简答或传邮件。

相关主题
文本预览
相关文档 最新文档