dokey 发表于 2023-5-24 21:28:09

多重匿名块制作(可进行多次)与分解

本帖最后由 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)
)





dokey 发表于 2023-5-29 17:20:04

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

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

czb203 发表于 2023-5-29 18:33:32

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

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

广易精通 发表于 2023-5-30 16:22:05

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

是这样不

nsh935 发表于 2023-5-25 09:02:15

谢谢分享!!!!

mokson 发表于 2023-5-25 14:19:48

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

utopio 发表于 2023-5-25 22:03:27

有这个函数?
vla-ConvertToAnonymousBlock

czb203 发表于 2023-5-28 23:19:55

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

hzyhzjjzh 发表于 2023-5-29 12:50:03

来打卡了!

被承包的东子 发表于 2023-5-29 17:53:31

厉害厉害,有办法把5#的搞定么。我自己试了下,一炸就没了{:1_1:}
页: [1] 2
查看完整版本: 多重匿名块制作(可进行多次)与分解