2023年12月7日发(作者:)

cad图纸炸开不了,提示:无法分解 TCH_PROTECT_ENTITY,

1.用修复打开文件

2.打开“工具”的“块编辑器”就可看到类似“TCH_PR"的块,(我的在最下面)那就是TCH_PROTECT_ENTITY锁住的东西,可以直接来编辑。

3.打开此块,复制……

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 "_.explode" (entlast))

(entdel en)

)

)

)

(princ "nOK")

(princ)

)

以上这两个方法是针对某种加密的CAD文件 (1).cad图纸炸开不了,提示:无法分解TCH_PROTECT_ENTITY,

(2).CAD不能炸开,“1为多重插入引用”解决

只有在分解时出现这两种情况下才能风别用这两方法解决 如果是其他情况不一定能够解决

原文地址:教你怎么炸开cad图纸里的多重插入块作者:筑龙结构

首先打开记事本

复制下面的内容:

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

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

(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)

)

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

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

(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工具菜单中加载应用,然后再输入exm命令,即可用“explode”分解。

注意:记事本退出后,直接将文件名修改为;然后,再在CAD2010中操作。加载应用、选中刚刚命名的文件,加载成功后退出。接着在CAD命令栏输入exm命令,再输入explode命令,注意此时出现的鼠标为小方框,千万不能拉框选择而是直接点击出现的虚线图块就OK了。

解决多重插入块无法分解的问题

工作中遇到了无法分解的“多重插入块”的问题,正当准备纯手工绘制原图的时候,尝试百度,得到了以下的办法并解决了问题,幸哉。

将下面的代码复制在记事本内,将txt文件另存为文件,打开这张不能修改的图纸,在命令行输入appload选择加载程序文件,命令行键入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 -多重插入块。它其实就是对块引用派生过来的一个新的东西,比普通块引用多了几个属性。具体是多了列数,行数,列距,行距。它可以用在什么地方呢?比如你现在要插入四个一样的块,就是位置不一样,用普通的块引用的话,要引四次。这样还是很占资源的,效率不高。而如果用AcDbMInsertBlock ,你可以定义一个2列2行,多个插入点的AcDbMInsertBlock 。AUTOCAD内部并没有复制多份引用,我写程序进去把AcDbMInsertBlock 里面的每一个实体拷贝出来了,发现只有一份。当然你不能炸开AcDbMInsertBlock ,如果可以炸开你就可以发现我说的肯定是对的。

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

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

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

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

到现在,这个图不能分解,也不能编辑了,呵呵。当然破解非常简单的,一个最直接的是把这个多重插入块转成单插入块,然后炸开。还有一个就是把块表名字改了,这样就可以编辑块了。当然,你可以作得复杂一点,进入块表记录,把里面每个实体克隆一遍。 “多重插入引用”的制作:用minsert命令,提示块名,在cad工作目录下找一张图,键入这个图名,然后到提示行数或列数时,输入2以上,但行距或列距输入0。这样一个多重插入引用制作完成,无法用explode炸开了。多重块不是重复定义块,而是在矩形阵列中插入一个块的多重引用。多重块是由命令minsert插入一个块而形成,其在正常情况下不能被分解。

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

CAD中计算弧长的方法

DMX512

CAD多重插入引用 炸开方法(加密解密)

2009-09-12 13:08:21| 分类: AutoCad | 标签: |举报 |字号大中小 订阅

用微信 “扫一扫”

将文章分享到朋友圈。

用易信 “扫一扫”

将文章分享到朋友圈。

下载LOFTER客户端

CAD多重插入引用 炸开方法~【亲测】

现在越来越多的人 喜欢 加密图了。

多重插入引用就是 经常会使用的图纸加密技术,永远无法解开的死锁。

方法一:

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

具体方法:

AutoCAD 快速加载 AutoLISP 文件wjjm的使用:用cad打开需要炸开的文件,将wjjm直接拖入cad窗口,命令行输入wjmm,回车后按提示操作即可。

操作步骤:① 于CAD中,选择:“工具”菜单→“加载应用程序”选项。

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

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

方法二:

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

方法三:

把以下内容保存为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)

)

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

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

(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)