本帖最后由 dokey 于 2023-6-2 14:23 编辑

可使用匿名多重块简单保护图形,防止别人误修改

(VL-LOAD-COM)
(defun c:BM (/ blkname int jm sel)
        (if (setq sel (ssget))
                (progn
                        (if (null *int) (setq *int 1))
                        (initget 6)
                        (setq int (getint (strcat "\n匿名多重块加锁次数: <" (itoa *int) ">")))
                        (if (null int) (setq int *int)(setq *int int))
                        (setq jm 1)

                        (repeat int
                                (princ (strcat "\n 正在制作匿名多重块...第" (itoa jm) "次."))                                                        
                                ;;(setq blkname "Block~Minsert~~Anonymous~~~")
                                (setq blkname (getvar "cdate"))
                                (vl-cmdf "block" blkname '(0 0 0) sel ""  "minsert"  blkname '(0 0 0) 1 1 0 2 2 0 0)
                                (vla-ConvertToAnonymousBlock (vlax-ename->vla-object (entlast)))
                                (vl-cmdf "-purge" "b" blkname "y" "y")
     
                           (setq sel (entlast))
                                (setq jm (1+ jm))
                        )
                        (princ "\n 匿名多重块制作完成!")
                )
                (princ "\n无选定对象!")
        )
        (princ)
)

经过测试,上面循环制作多重块容易出现CAD假死,附件现已改为entmake进行循环制作多重块

把上面代码中红色的改为 1 1 即一行一列多重,可解决CAD假死

(defun c:UM (/ jm sel xsel)
        (setvar "cmdecho" 0)
            .
            .
            .
        (prompt "\n 正在判断多重锁定的图形,请稍侯...")
        (setq sel (ssget "_X" '((0 . "INSERT")
                                                                        (-4 . "<OR")
                                                                                (2 . "`*U*")
                                                                                (-4 . ">=") (70 . 1)
                                                                                (-4 . ">=") (71 . 1)
                                                                        (-4 . "OR>")) )
        )
        (setq jm 0)
        (if sel
                (progn
                        (UM:getmblk sel)
                        (princ "\n 多重锁定的图形已完成分解!")
                )
                (princ "\n 无多重锁定的图形!")
        )
        (princ)
)







网友答: 楼主,测试了,发现多重插入匿名块,无法分解,这个是原因呢?图纸是多重加密,用源泉设计的分解匿名块功能,分解当前名称的匿名块后,会得到另外一个匿名块,需要循环N次分解匿名块,要不然就是用源泉的王炸功能,但是此功能会把所有对象都块(非匿名块),一并分解了,所以想问下是要对图纸进行额外的操作,在用楼主的um命令执行吗?

网友答:
czb203 发表于 2023-5-28 23:19
大佬,帮忙研究下这个是什么加密了,怎么都解不开

你这个文件的内容解开看了下,加密过程可能是:图形->块参照->多重块->块参照->无名多重块

网友答:
dokey 发表于 2023-5-29 17:20
你这个文件的内容解开看了下,加密过程可能是:图形->块参照->多重块->块参照->无名多重块

厉害,果然是高手,大佬有办法解密吗~

网友答: 谢谢分享!!!!

网友答: vla-ConvertToAnonymousBlock
为什么手册里找不到这个函数?

网友答: 有这个函数?
vla-ConvertToAnonymousBlock

网友答: 大佬,帮忙研究下这个是什么加密了,怎么都解不开

网友答: 来打卡了!

网友答: 厉害厉害,有办法把5#的搞定么。我自己试了下,一炸就没了

网友答:
czb203 发表于 2023-5-28 23:19
大佬,帮忙研究下这个是什么加密了,怎么都解不开

是这样不
  • 上一篇:没有没这种插件中的一键标注程序!
  • 下一篇:没有了