AutoCAD关于“多重插入引用”(多重块)的分解
- 格式:doc
- 大小:22.50 KB
- 文档页数:2
解决多重插入块无法分解的问题2012-10-22 10:27:53| 分类:cad相关| 标签:cad多重插入块分解|举报|字号订阅工作中遇到了无法分解的“多重插入块”的问题,正当准备纯手工绘制原图的时候,尝试百度,得到了以下的办法并解决了问题,幸哉。
将下面的代码复制在记事本内,将txt文件另存为unlk.lsp文件,打开这张不能修改的图纸,在命令行输入appload选择加载程序文件unlk.lsp,命令行键入unlk,再选择不能修改的图块。
ps,有的打散一次后,依然有些小图加密的,就可以小部分的打散,步骤同上(defun c:unlk (/en ent)(setq en (entsel "n请选择被加密的图形:"))(if en(if(=(cdr (assoc 0(setq ent (cdr (entget (setq en (car en))))))) "INSERT")(progn(setq ent (entmakex(list '(0 . "INSERT")(assoc 2 ent)(assoc 10 ent))))(command "_.explode" (entlast))(entdel en))))(princ "nOK,解密成功。
")(princ))什么是多重块?AUTOCAD为了省内存,省空间,提高效率,引进了块引用这一技术。
你在当前图纸空间插入一个块,它并不是把这个块复制一遍,而是把这个块的一些属性描述引过来,跟C++里面的引用极像。
我现在讨论的不是引用是怎么实现的,AUTOCAD最大的重头就是块,大家肯定是很了解的。
我想说的是今天我和老韩研究的一个东西,AcDbMInsertBlock -多重插入块。
它其实就是对块引用派生过来的一个新的东西,比普通块引用多了几个属性。
CAD文件多重块制作和分解新建一个空白文本文档,然后将下面“红色”代码复制到里面并保存,将文件名以及后缀名改成unlk.lsp(defun c:unlk (/ en ent)(setq en (entsel "\n请选择被加密的图形:"))(if en(if (= (cdr (assoc 0 (setq ent (cdr (entget (setq en (car en))))))) "INSERT")(progn(setq ent (entmakex(list '(0 . "INSERT")(assoc 2 ent)(assoc 10 ent))))(command "_.explode" (entlast)) (entdel en))))(princ "\nOK,解密成功。
")(princ))先打开无法分解的图纸,然后找到工具?加载应用程序,然后找到“unlk.lsp”那个文件点一下,然后点击“加载”按钮,对话框左下角提示”加载成功“,然后点击“关闭”按钮;然后输入命令 unlk 空格,然后点一下图形,就大功告成了~如果一次不成,就多用几次unlk,因为用了多次引用快……2、把“普通块”转为“多重插入块”将文件名以及后缀名改成lockb.lsp(DEFUN C:lockb ()(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 e (subst (cons 70 1) r_zm70 e)) (setq e (subst (cons 71 1) c_zm71 e)) (setq e (subst (list 100 "AcDbMInsertBlock") (list 100 "AcDbBlockReference") e))(entmake e)(entdel stm)))(SETQ STM (car (ENTSEL "\n 点取下一块"))))(setvar "cmdecho" 1))。
新建一个空白文本文档,然后将下面“红色”代码复制到里面并保存,将文件名以及后缀名改成unlk.lsp(defun c:unlk (/ en ent)(setq en (entsel "\n请选择被加密的图形:"))(if en(if (= (cdr (assoc 0 (setq ent (cdr (entget (setq en (car en)))))))"INSERT")(progn(setq ent (entmakex(list '(0 . "INSERT")(assoc 2 ent)(assoc 10 ent))))(command "_.explode" (entlast))(entdel en))))(princ "\nOK,解密成功。
")(princ))先打开无法分解的图纸,然后找到工具→加载应用程序,然后找到“unlk.lsp”那个文件点一下,然后点击“加载”按钮,对话框左下角提示”加载成功“,然后点击“关闭”按钮;然后输入命令unlk 空格,然后点一下图形,就大功告成了!如果一次不成,就多用几次unlk,因为用了多次引用快……2、把“普通块”转为“多重插入块”将文件名以及后缀名改成lockb.lsp(DEFUN C:lockb ()(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 e (subst (cons 70 1) r_zm70 e))(setq e (subst (cons 71 1) c_zm71 e))(setq e (subst (list 100 "AcDbMInsertBlock") (list 100 "AcDbBlockReference") e)) (entmake e)(entdel stm)))(SETQ STM (car (ENTSEL "\n 点取下一块"))))(setvar "cmdecho" 1))。
解决多重插入块无法分解的问题2012-10-22 10:27:53| 分类:| 标签:|举报|字号定阅工作中碰到了无法分解的“多重插入块”的问题,合法预备纯手工绘制原图的时候,尝试百度,取得了以下的方法并解决了问题,幸哉。
将下面的代码复制在记事本内,将txt文件另存为文件,打开这张不能修改的图纸,在命令行输入appload选择加载程序文件,命令行键入unlk,再选择不能修改的图块。
ps,有的打散一次后,仍然有些小图加密的,就能够够小部份的打散,步骤同上什么是多重块?AUTOCAD为了省内存,省空间,提高效率,引进了块引用这一技术。
你在当前图纸空间插入一个块,它并非是把那个块复制一遍,而是把那个块的一些属性描述引过来,跟C++里面的引用极像。
我此刻讨论的不是引用是怎么实现的,AUTOCAD最大的重头确实是块,大伙儿确信是很了解的。
我想说的是今天我和老韩研究的一个东西,AcDbMInsertBlock -多重插入块。
它其实确实是对块引用派生过来的一个新的东西,比一般块引用多了几个属性。
具体是多了列数,行数,列距,行距。
它能够用在什么地址呢?比如你此刻要插入四个一样的块,确实是位置不一样,用一般的块引用的话,要引四次。
如此仍是很占资源的,效率不高。
而若是用AcDbMInsertBlock ,你能够概念一个2列2行,多个插入点的AcDbMInsertBlock 。
AUTOCAD内部并无复制多份引用,我写程序进去把AcDbMInsertBlock 里面的每一个实体拷贝出来了,发觉只有一份。
固然你不能炸开AcDbMInsertBlock ,若是能够炸开你就能够够发觉我说的确信是对的。
多重插入块还有一个很有趣的是,它能够用来做加密,固然很容易破解掉的。
大伙儿都明白,无名块是不能够编辑的,因此能够用下面的步骤就能够够生成一个只能看不能改的图。
1)、把整个图作成一个块。
2)、把当前图纸空间的实体删除,用Minsert把适才那个块插入。
C A D不能炸开-“1为多重插入引
用”解决(总1页)
--本页仅作为文档封面,使用时请直接删除即可--
--内页可以根据需求调整合适字体及大小--
CAD不能炸开,“1为多重插入引用”解决
最近天上班遇到一个棘手的问题,由设计院发的CAD图打开后显示为一整个块,用“x”命令分解不了,命令行显示“1为多重插入引用”。
经过在网上搜寻,终于解决了问题。
引用如下:
将下面的代码复制在记事本内,另存为文件,打开这张不能修改的图纸,命令appload选择加载程序文件,命令行键入unlk,选择不能修改的图形。
(defun c:unlk (/ en ent)
(setq en (entsel "\n请选择图形:"))
(if en
(if (= (cdr (assoc 0 (setq ent (cdr (entget (setq en (car en))))))) "INSERT"
)
(progn
(setq ent (entmakex
(list '(0 . "INSERT")
(assoc 2 ent)
(assoc 10 ent)
)
)
)
(command "" (entlast))
(entdel en)
)
)
)
(princ "\nOK")
(princ)
)
22。
新建一个空白文本文档,然后将下面“红色”代码复制到里面并保存,将文件名以及后缀名改成unlk.lsp(defun c:unlk (/ en ent)(setq en (entsel "\n请选择被加密的图形:"))(if en(if (= (cdr (assoc 0 (setq ent (cdr (entget (setq en (car en)))))))"INSERT")(progn(setq ent (entmakex(list '(0 . "INSERT")(assoc 2 ent)(assoc 10 ent))))(command "_.explode" (entlast))(entdel en))))(princ "\nOK,解密成功。
")(princ))先打开无法分解的图纸,然后找到工具→加载应用程序,然后找到“unlk.lsp”那个文件点一下,然后点击“加载”按钮,对话框左下角提示”加载成功“,然后点击“关闭”按钮;然后输入命令unlk 空格,然后点一下图形,就大功告成了!如果一次不成,就多用几次unlk,因为用了多次引用快……2、把“普通块”转为“多重插入块”将文件名以及后缀名改成lockb.lsp(DEFUN C:lockb ()(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 e (subst (cons 70 1) r_zm70 e))(setq e (subst (cons 71 1) c_zm71 e))(setq e (subst (list 100 "AcDbMInsertBlock") (list 100 "AcDbBlockReference") e)) (entmake e)(entdel stm)))(SETQ STM (car (ENTSEL "\n 点取下一块"))))(setvar "cmdecho" 1))。
炸开CAD中“多重插入块”的有效方法某些情况我们收到客户发过来的图纸,发现图层为一个整体且无
法打散,通常是由于图像整体进行多重差入所致,采用以下方式一般
可以将图像炸开:
将下面的代码复制在记事本内,将txt文件另存为unlk.lsp文件,打开这张不能修改的图纸,在命令行输入appload选择加载程序文件unlk.lsp,命令行键入unlk,再选择不能修改的图形。
ps,有的打散一次后,依然有些小图加密的,就可以小部分的打散,步骤同上
(defun c:unlk (/ en ent)
(setq en (entsel "n请选择被加密的图形:"))
(if en
(if (= (cdr (assoc 0 (setq ent (cdr (entget (setq en (car en))))))) "INSERT"
)
(progn
(setq ent (entmakex
(list '(0 . "INSERT")
(assoc 2 ent)
(assoc 10 ent)
)
)
)
(command "_.explode" (entlast))
(entdel en)
)
)
)
(princ "nOK,解密成功。
")
(princ)
)。
炸开“多重插入引用”的方法以及制作1.“多重插入引用”的制作:用minsert命令,提示块名,在cad工作目录下找一张图,键入这个图名,然后到提示行数或列数时,输入2以上,但行距或列距输入0。
这样一个多重插入引用制作完成,无法用explode炸开了。
多重块不是重复定义块,而是在矩形阵列中插入一个块的多重引用。
多重块是由命令minsert插入一个块而形成,其在正常情况下不能被分解。
但若是用普通的方法构建的多重块,可以删除掉,然后用insert再插入它原来引用的块即可。
不过,若它原来引用的块是匿名块(即名称前带*的块,只能用程序构建),就不是那么简单的了。
这是,你就需要程序(或者说插件)来还原。
vlx程序就是一个插件。
也就是我上面说的编程实现。
若不会编程,也没有插件,下面的方法四(方法三也可以实现)。
2.炸开方法如下:方法一:点击这个多重引用,看它的名字,然后再用minsert命令,插入这个名字,只不过都按默认的行数(1行)列数一直回车。
这样插入的这个块就可以炸开了。
方法二:双击这个块,出现参照编辑对话框,点确定,出现参照编辑工具条;用explode 炸开;然后点击参照编辑工具条从工作集删除对象,选中所有图形,回车;再点击参照编辑工具条上的放弃对参照的修改。
此时再用explode就可以炸开了。
方法三:1、打开原文件后,输出为*.wmf文件,2、新建空*.DWG文件,插入*.wmf文件,3、输入另外一个炸开命令:xplode回车4、选图层(TA),大功告成。
可惜的是文字都炸开了,填充也炸了,图层只有一个,而且文件比较大。
附件为wmf文件方法四:1、在任何版本中打开图件(只要能打的开就行)2、选中图,打开属性对话框,将行和列均改为1。
3、另存为R14以下(包括R14)版本格式。
4、打开R14,打开刚才另存的图,保存。
(记住,这步尤其重要,必须是R14不能是cad2002及以上版本)好了,你再用任何版本的cad打开看看。
CAD多重插入引用怎么炸开呀? cad dwg 加密解密2009年05月02日星期六 07:41 P.M.1、之一多重插入引用的分解炸开“多重插入引用”的方法以及制作1.“多重插入引用”的制作:用minsert命令,提示块名,在cad工作目录下找一张图,键入这个图名,然后到提示行数或列数时,输入2以上,但行距或列距输入0。
这样一个多重插入引用制作完成,无法用explode炸开了。
多重块不是重复定义块,而是在矩形阵列中插入一个块的多重引用。
多重块是由命令minsert插入一个块而形成,其在正常情况下不能被分解。
但若是用普通的方法构建的多重块,可以删除掉,然后用insert再插入它原来引用的块即可。
不过,若它原来引用的块是匿名块(即名称前带*的块,只能用程序构建),就不是那么简单的了。
这是,你就需要程序(或者说插件)来还原。
vlx程序就是一个插件。
也就是我上面说的编程实现。
若不会编程,也没有插件,下面的方法四(方法三也可以实现)。
2.炸开方法如下:方法一:点击这个多重引用,看它的名字,然后再用minsert命令,插入这个名字,只不过都按默认的行数(1行)列数一直回车。
这样插入的这个块就可以炸开了。
方法二:双击这个块,出现参照编辑对话框,点确定,出现参照编辑工具条;用explode炸开;然后点击参照编辑工具条从工作集删除对象,选中所有图形,回车;再点击参照编辑工具条上的放弃对参照的修改。
此时再用explode就可以炸开了。
方法三: 1、打开原文件后,输出为*.wmf文件, 2、新建空*.DWG文件,插入*.wmf 文件, 3、输入另外一个炸开命令:xplode回车 4、选图层(TA),大功告成。
可惜的是文字都炸开了,填充也炸了,图层只有一个,而且文件比较大。
附件为wmf文件方法四:1、在任何版本中打开图件(只要能打的开就行) 2、选中图,打开属性对话框,将行和列均改为1。
3、另存为R14以下(包括R14)版本格式。
AutoCAD关于“多重插入引用”(多重块)的分解
今天上班遇到一个棘手的问题,由设计院发的CAD图打开后显示为一整个块,用“x”命令分解不了,命令行显示“1为多重插入引用”。
经过在网上搜寻,终于解决了问题。
引用如下:
【图形被加密的解锁方法】
将下面的代码复制在记事本内,另存为unlk.lsp文件,打开这张不能修改的图纸,命令appload选择加载程序文件unlk.lsp,命令行键入unlk,选择不能修改的图形。
(defun c:unlk (/ en ent)
(setq en (entsel "\n请选择被加密的图形:"))
(if en
(if (= (cdr (assoc 0 (setq ent (cdr (entget (setq en (car en))))))) "INSERT"
)
(progn
(setq ent (entmakex
(list '(0 . "INSERT")
(assoc 2 ent)
(assoc 10 ent)
)
)
)
(command "_.explode" (entlast)) (entdel en)
)
)
)
(princ "\nOK,解密成功。
") (princ)
)。