找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3142|回复: 9

[讨论]:不知道大家用过lockup.lsp这个文件没有?

[复制链接]
发表于 2002-12-1 05:22:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
这是个加密图纸的lsp文件,运行后提示最好用备份的文件来加密,千万不要用原文件。
运行 lockup,
逐步按照提示操作(很简单)
加密完成
加密后的图纸成了一个块,无法炸开,可以正常浏览打印,就是无法修改。就是不知道这种加密是否可逆?
ps:测试在r14下通过!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-12-1 10:01:06 | 显示全部楼层
你提供lookup.lsp来看看才知道是不是可逆。估计是一个minsert.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-1 12:04:37 | 显示全部楼层
我得到的源程序最早来自于SPAUG的邮件系统,
我修正了一点点。并提供了解密的方法。
整个过程是可逆的,最后使用了minsert的无名块。
并锁定了所有图层。
详细的可参照文件在我的发言栏
http://www.xdcad.net/forum/showt ... y=&pagenumber=1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-12-1 15:40:40 | 显示全部楼层
楼上的朋友,你那个留言没有讲如何解密啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8个

财富等级: 恭喜发财

发表于 2002-12-1 17:03:14 | 显示全部楼层
  1. ;;Lockup.lsp - Locks all selected entities (except proxy objects) within a drawing.
  2. ;;;By: John D. Chapman
  3. ;;;With help Wrom: JGDGVCJVTLBXFGGMEPYOQKEDOTWFAOBUZXUWLSZ
  4. ;;;Based on and expanded from AB.lsp by Brian Debelius (Make/Insert an Anonymous Block)
  5. ;;;and AB-Minsert.lsp by Rick McElvain (Make/MINSERT an Anonymous Block).
  6. ;;;Inspiration from Adam Conrath (MINSERT).
  7. ;;;Special mention to Jim Fisher.
  8. ;;;Last Revisions:
  9. ;;;March 5, 2002:  - Separate block made of solids before main routine runs.
  10. ;;;March 7, 2002:  - Separate Block made of background colours (8,9,251-255).
  11. ;;;March 22, 2002: - Improved error trapping.
  12. ;;;This routine turns on, thaws, and unlocks all layers before it starts the lock.
  13. ;;;The state of your layers prior to running LOCKUP will be restored
  14. ;;;in AutoCAD 2000i only.
  15. ;;;_______________________________________________________________________________________

  16. (alert
  17.   "\nDO NOT RUN LOCKUP ON AN ORIGINAL DRAWING.
  18.         \n         RUN ONLY ON A COPY OF THE ORIGINAL."
  19. )
  20. (alert
  21.   "\nLockup2.lsp - By John D. Chapman - Ainley and Associates Ltd.
  22.         \n  with thanks to Brian Debelius, Adam Conrath, Rick McElvain,
  23.         \n          Stig Madsen, Celie Dailey, Pat Starkey, Jim Fisher
  24.         \n               and the Autodesk User Group International."
  25. )

  26. (defun lockerror (msg)
  27.   (if (/= msg "Function cancelled")
  28.     (princ
  29.       (strcat "\nError: " msg " [" (itoa (getvar "ERRNO")) "]")
  30.     )
  31.     (princ)
  32.   )
  33.   (command "UNDO" "End")
  34.   (Abort "\nLockup was interrupted. Function Aborted!")
  35.   (setq *error* olderr)
  36.   (princ)
  37. )

  38. (defun Abort (msg)
  39.   (setvar "filedia" fdia)
  40.   (setvar "cmddia" cdia)
  41.   (setvar "cmdecho" cmd)
  42.   (alert msg)
  43. )
  44. ;;Exit

  45. (defun getlayers ()
  46.   (setq lyr (tblnext "layer" t))
  47.   (setq laylist "")
  48.   (while lyr
  49.     (if        (or (and (= (cdr (assoc 62 lyr)) 8)
  50.                  (not (wcmatch (cdr (assoc 2 lyr)) "*|*"))
  51.             )
  52.             (and (= (cdr (assoc 62 lyr)) 9)
  53.                  (not (wcmatch (cdr (assoc 2 lyr)) "*|*"))
  54.             )
  55.             (and (= (cdr (assoc 62 lyr)) 251)
  56.                  (not (wcmatch (cdr (assoc 2 lyr)) "*|*"))
  57.             )
  58.             (and (= (cdr (assoc 62 lyr)) 252)
  59.                  (not (wcmatch (cdr (assoc 2 lyr)) "*|*"))
  60.             )
  61.             (and (= (cdr (assoc 62 lyr)) 253)
  62.                  (not (wcmatch (cdr (assoc 2 lyr)) "*|*"))
  63.             )
  64.             (and (= (cdr (assoc 62 lyr)) 254)
  65.                  (not (wcmatch (cdr (assoc 2 lyr)) "*|*"))
  66.             )
  67.             (and (= (cdr (assoc 62 lyr)) 255)
  68.                  (not (wcmatch (cdr (assoc 2 lyr)) "*|*"))
  69.             )
  70.         )
  71.       (if (equal laylist "")
  72.         (setq laylist (strcat laylist (cdr (assoc 2 lyr))))
  73.         (setq laylist (strcat laylist "," (cdr (assoc 2 lyr))))
  74.       )
  75.     )
  76.     (setq lyr (tblnext "layer"))
  77.   )
  78.   laylist
  79. )

  80. (defun backblk (layoutName Mins)
  81.   (if layoutName
  82.     (cond
  83.       ((= layoutName "14MS")
  84.        (setq blist (list '(-4 . " < NOT")
  85.                          '(-4 . " < OR")
  86.                          '(67 . 1)
  87.                          '(0 . "SOLID")
  88.                          '(2 . "SOLID")
  89.                          '(-4 . "OR >")
  90.                          '(-4 . "NOT >")
  91.                          '(-4 . " < OR")
  92.                          (cons 8 (getlayers))
  93.                          '(62 . 8)
  94.                          '(62 . 9)
  95.                          '(62 . 251)
  96.                          '(62 . 252)
  97.                          '(62 . 253)
  98.                          '(62 . 254)
  99.                          '(62 . 255)
  100.                          '(-4 . "OR > ")
  101.                    )
  102.        )
  103.       )
  104.       ((= layoutName "14PS")
  105.        (setq blist (list '(67 . 1)
  106.                          '(-4 . " < NOT")
  107.                          '(-4 . " < OR")
  108.                          '(0 . "SOLID")
  109.                          '(2 . "SOLID")
  110.                          '(0 . "VIEWPORT")
  111.                          '(-4 . "OR > ")
  112.                          '(-4 . "NOT >")
  113.                          '(-4 . " < OR")
  114.                          (cons 8 (getlayers))
  115.                          '(62 . 8)
  116.                          '(62 . 9)
  117.                          '(62 . 251)
  118.                          '(62 . 252)
  119.                          '(62 . 253)
  120.                          '(62 . 254)
  121.                          '(62 . 255)
  122.                          '(-4 . "OR > ")
  123.                    )
  124.        )
  125.       )
  126.       (T
  127.        (setq blist (list (cons 410 layoutName)
  128.                          '(-4 . " < NOT")
  129.                          '(-4 . " < OR")
  130.                          '(0 . "SOLID")
  131.                          '(2 . "SOLID")
  132.                          '(0 . "VIEWPORT")
  133.                          '(-4 . "OR > ")
  134.                          '(-4 . "NOT > ")
  135.                          '(-4 . " < OR")
  136.                          (cons 8 (getlayers))
  137.                          '(62 . 8)
  138.                          '(62 . 9)
  139.                          '(62 . 251)
  140.                          '(62 . 252)
  141.                          '(62 . 253)
  142.                          '(62 . 254)
  143.                          '(62 . 255)
  144.                          '(-4 . "OR > ")
  145.                    )
  146.        )
  147.       )
  148.     )
  149.     (setq blist        (list '(-4 . " < NOT")
  150.                       '(-4 . " < OR")
  151.                       '(0 . "SOLID")
  152.                       '(2 . "SOLID")
  153.                       '(0 . "VIEWPORT")
  154.                       '(-4 . "OR>")
  155.                       '(-4 . "NOT > ")
  156.                       '(-4 . " < OR")
  157.                       (cons 8 (getlayers))
  158.                       '(62 . 8)
  159.                       '(62 . 9)
  160.                       '(62 . 251)
  161.                       '(62 . 252)
  162.                       '(62 . 253)
  163.                       '(62 . 254)
  164.                       '(62 . 255)
  165.                       '(-4 . "OR > ")
  166.                 )
  167.     )
  168.   )
  169.   (setq ssetb (ssget "X" blist))
  170.   (setq viewsset (ssget "X" '((0 . "VIEWPORT"))))
  171.   (if viewsset
  172.     (progn
  173.       (setq n 0)
  174.       (repeat (sslength viewsset)
  175.         (if (setq clipent (assoc 340 (entget (ssname viewsset n))))
  176.           (ssdel (cdr clipent) ssetb)
  177.         )
  178.         (setq n (1+ n))
  179.       )
  180.     )
  181.   )
  182.   (if ssetb
  183.     (progn
  184.       (setq pt (list 0.0 0.0))
  185.       (entmake ;;write block header
  186.                (list '(0 . "BLOCK")
  187.                      '(2 . "*anon")
  188.                      '(70 . 1)
  189.                      (cons '10 pt)
  190.                )
  191.       )
  192.       ;;add entities in selection set to block
  193.       ;;repeat for every entity in the selection set
  194.       (setq a 0)
  195.       (repeat (sslength ssetb)
  196.         (setq ent2 (entmake (entget (setq ent (ssname ssetb a)))))
  197.         (if (null ent2)
  198.           (princ (entget (setq ent (ssname ssetb a))))
  199.         )
  200.         ;;if polyline or block reference with attributes,
  201.         ;;walk down sub-entities until seqend is found
  202.         (if (assoc 66 (entget ent))
  203.           (progn
  204.             ;;add sub-entities until seqend is found
  205.             (setq subent (entnext ent))
  206.             (while (/= (cdr (assoc 0 (entget subent))) "SEQEND")
  207.               (entmake (entget subent))
  208.               (setq subent (entnext subent))
  209.             )

  210.             ;;add seqend sub-entity
  211.             (setq ent3 (entmake (entget subent)))
  212.             (if        (null ent3)
  213.               (princ (entget subent))
  214.             )
  215.           )
  216.         )
  217.         ;;delete original entity
  218.         (entdel ent)
  219.         (setq a (1+ a))
  220.         (c:spin "Making Block of background colours..")
  221.       )
  222.       (setq nameb (entmake '((0 . "endblk"))))
  223.       ;;write block end sub-entity
  224.       (princ "\n  Inserting...\n")

  225.       ;; Insert block reference at insertion point
  226.       ;; Note: Check the argument Mins for the method to insert the block
  227.       ;; Note: Mins=T means minsert the block, and Mins=nil means insert it.
  228.       (if Mins
  229.         ;;Minsert block reference at insertion point
  230.         (entmake
  231.           (list        '(0 . "INSERT")
  232.                 (CONS '100 "AcDbMInsertBlock")
  233.                 (CONS '70 2)
  234.                 (CONS '71 2)
  235.                 (cons '2 nameb)
  236.                 (cons '10 pt)
  237.           )
  238.         )
  239.         (entmake
  240.           (list        '(0 . "INSERT")
  241.                 (cons '2 nameb)
  242.                 (cons '10 pt)
  243.           )
  244.         )
  245.         ;;Insert block reference at insertion point
  246.       )
  247.       (setq bc (entlast))
  248.       (setq bac "back")
  249.       (command "_.draworder" bc "" (strcat "_" bac))
  250.       (setq ssetb nil)
  251.       (setq viewsset nil)
  252.     )
  253.   )
  254.   (princ)
  255. )

  256. (defun solidblk        (layoutName Mins)
  257.   (if layoutName
  258.     (cond
  259.       ((= layoutName "14MS")
  260.        (setq slist (list '(-4 . "< NOT")                     '(67 . 1)
  261.                          '(-4 . "NOT >")                     '(-4 . "< OR")
  262.                          '(0 . "SOLID")                     '(2 . "SOLID")
  263.                          '(-4 . "OR >")
  264.                         )
  265.        )
  266.       )
  267.       ((= layoutName "14PS")
  268.        (setq slist (list '(67 . 1)
  269.                          '(-4 . "< OR")
  270.                          '(0 . "SOLID")
  271.                          '(2 . "SOLID")
  272.                          '(-4 . "OR >")
  273.                    )
  274.        )
  275.       )
  276.       (T
  277.        (setq slist (list (cons 410 layoutName)
  278.                          '(-4 . "< OR")
  279.                          '(0 . "SOLID")
  280.                          '(2 . "SOLID")
  281.                          '(-4 . "OR >")
  282.                    )
  283.        )
  284.       )
  285.     )
  286.     (setq slist        (list '(-4 . "< OR")
  287.                       '(0 . "SOLID")
  288.                       '(2 . "SOLID")
  289.                       '(-4 . "OR >")
  290.                 )
  291.     )
  292.   )
  293.   (setq ssets (ssget "X" slist))
  294.   (if ssets
  295.     (progn
  296.       (setq pt (list 0.0 0.0))
  297.       (entmake ;;write block header
  298.                (list '(0 . "BLOCK")
  299.                      '(2 . "*anon")
  300.                      '(70 . 1)
  301.                      (cons '10 pt)
  302.                )
  303.       )
  304.       ;;add entities in selection set to block
  305.       ;;repeat for every entity in the selection set
  306.       (setq a 0)
  307.       (repeat (sslength ssets)
  308.         (setq ent2 (entmake (entget (setq ent (ssname ssets a)))))
  309.         (if (null ent2)
  310.           (princ (entget (setq ent (ssname ssets a))))
  311.         )
  312.         ;;if polyline or block reference with attributes,
  313.         ;;walk down sub-entities until seqend is found
  314.         (if (assoc 66 (entget ent))
  315.           (progn
  316.             ;;add sub-entities until seqend is found
  317.             (setq subent (entnext ent))
  318.             (while (/= (cdr (assoc 0 (entget subent))) "SEQEND")
  319.               (entmake (entget subent))
  320.               (setq subent (entnext subent))
  321.             )

  322.             ;;add seqend sub-entity
  323.             (setq ent3 (entmake (entget subent)))
  324.             (if        (null ent3)
  325.               (princ (entget subent))
  326.             )
  327.           )
  328.         )
  329.         ;;delete original entity
  330.         (entdel ent)
  331.         (setq a (1+ a))
  332.         (c:spin "Making Block of solids..")
  333.       )
  334.       (setq names (entmake '((0 . "endblk"))))
  335.       ;;write block end sub-entity
  336.       (princ "\n  Inserting...\n")

  337.       ;; Insert block reference at insertion point
  338.       ;; Note: Check the argument Mins for the method to insert the block
  339.       ;; Note: Mins=T means minsert the block, and Mins=nil means insert it.
  340.       (if Mins
  341.         ;;Minsert block reference at insertion point
  342.         (entmake
  343.           (list        '(0 . "INSERT")
  344.                 (CONS '100 "AcDbMInsertBlock")
  345.                 (CONS '70 2)
  346.                 (CONS '71 2)
  347.                 (cons '2 names)
  348.                 (cons '10 pt)
  349.           )
  350.         )
  351.         (entmake
  352.           (list        '(0 . "INSERT")
  353.                 (cons '2 names)
  354.                 (cons '10 pt)
  355.           )
  356.         )
  357.         ;;Insert block reference at insertion point
  358.       )
  359.       (setq so (entlast))
  360.       (setq ba "back")
  361.       (command "_.draworder" so "" (strcat "_" ba))
  362.       (setq ssets nil)
  363.     )
  364.   )
  365.   (princ)
  366. )

  367. (defun anonBlock (layoutName Mins)
  368.   (if layoutName
  369.     (cond
  370.       ((= layoutName "14MS")
  371.        (setq alist (list '(-4 . "< NOT")
  372.                          '(-4 . "< OR")
  373.                          '(67 . 1)
  374.                          '(0 . "ACAD_PROXY_ENTITY")
  375.                          '(0 . "AEC_*")
  376.                          '(0 . "AECS_*")
  377.                          '(0 . "RTEXT")
  378.                          '(0 . "WIPEOUT")
  379.                          ;;'(8 . "LAYCFG")
  380.                          '
  381.                           (0 . "SOLID")
  382.                          '(2 . "SOLID")
  383.                          (cons 8 (getlayers))
  384.                          '(62 . 8)
  385.                          '(62 . 9)
  386.                          '(62 . 251)
  387.                          '(62 . 252)
  388.                          '(62 . 253)
  389.                          '(62 . 254)
  390.                          '(62 . 255)
  391.                          '(-4 . "OR >")
  392.                          '(-4 . "NOT >")
  393.                    )
  394.        )
  395.       )
  396.       ((= layoutName "14PS")
  397.        (setq alist (list '(67 . 1)
  398.                          '(-4 . "< NOT")
  399.                          '(-4 . "< OR")
  400.                          '(0 . "VIEWPORT")
  401.                          '(0 . "ACAD_PROXY_ENTITY")
  402.                          '(0 . "AEC_*")
  403.                          '(0 . "AECS_*")
  404.                          '(0 . "RTEXT")
  405.                          '(0 . "WIPEOUT")
  406.                          ;;'(8 . "LAYCFG")
  407.                          '
  408.                           (0 . "SOLID")
  409.                          '(2 . "SOLID")
  410.                          (cons 8 (getlayers))
  411.                          '(62 . 8)
  412.                          '(62 . 9)
  413.                          '(62 . 251)
  414.                          '(62 . 252)
  415.                          '(62 . 253)
  416.                          '(62 . 254)
  417.                          '(62 . 255)
  418.                          '(-4 . "OR >")
  419.                          '(-4 . "NOT >")
  420.                    )
  421.        )
  422.       )
  423.       (T
  424.        (setq alist (list (cons 410 layoutName)
  425.                          '(-4 . "< NOT")
  426.                          '(-4 . "< OR")
  427.                          ;;'(8 . "LAYCFG")
  428.                          '
  429.                           (0 . "VIEWPORT")
  430.                          '(0 . "ACAD_PROXY_ENTITY")
  431.                          '(0 . "AECC_*")
  432.                          '(0 . "AEC_*")
  433.                          '(0 . "AECS_*")
  434.                          '(0 . "RTEXT")
  435.                          '(0 . "WIPEOUT")
  436.                          '(0 . "SOLID")
  437.                          '(2 . "SOLID")
  438.                          (cons 8 (getlayers))
  439.                          '(62 . 8)
  440.                          '(62 . 9)
  441.                          '(62 . 251)
  442.                          '(62 . 252)
  443.                          '(62 . 253)
  444.                          '(62 . 254)
  445.                          '(62 . 255)
  446.                          '(-4 . "OR >")
  447.                          '(-4 . "NOT >")
  448.                    )
  449.        )
  450.       )
  451.     )
  452.     (setq alist        (list '(-4 . "< NOT")
  453.                       '(-4 . "< OR")
  454.                       ;;'(8 . "LAYCFG")
  455.                       '
  456.                        (0 . "VIEWPORT")
  457.                       '(0 . "ACAD_PROXY_ENTITY")
  458.                       '(0 . "AECC_*")
  459.                       '(0 . "AEC_*")
  460.                       '(0 . "AECS_*")
  461.                       '(0 . "RTEXT")
  462.                       '(0 . "WIPEOUT")
  463.                       '(0 . "SOLID")
  464.                       '(2 . "SOLID")
  465.                       (cons 8 (getlayers))
  466.                       '(62 . 8)
  467.                       '(62 . 9)
  468.                       '(62 . 251)
  469.                       '(62 . 252)
  470.                       '(62 . 253)
  471.                       '(62 . 254)
  472.                       '(62 . 255)
  473.                       '(-4 . "OR >")
  474.                       '(-4 . "NOT >")
  475.                 )
  476.     )
  477.   )
  478.   (setq sset (ssget "X" alist))
  479.   (setq viewsset (ssget "X" '((0 . "VIEWPORT"))))
  480.   (if viewsset
  481.     (progn
  482.       (setq n 0)
  483.       (repeat (sslength viewsset)
  484.         (if (setq clipent (assoc 340 (entget (ssname viewsset n))))
  485.           (ssdel (cdr clipent) sset)
  486.         )
  487.         (setq n (1+ n))
  488.       )
  489.     )
  490.   )
  491.   (if sset
  492.     (progn
  493.       (setq pt (list 0.0 0.0))
  494.       (entmake ;;write block header
  495.                (list '(0 . "BLOCK")
  496.                      '(2 . "*anon")
  497.                      '(70 . 1)
  498.                      (cons '10 pt)
  499.                )
  500.       )
  501.       ;;add entities in selection set to block
  502.       ;;repeat for every entity in the selection set
  503.       (setq a 0)
  504.       (repeat (sslength sset)
  505.         (setq ent2 (entmake (entget (setq ent (ssname sset a)))))
  506.         (if (null ent2)
  507.           (princ (entget (setq ent (ssname sset a))))
  508.         )
  509.         ;;if polyline or block reference with attributes,
  510.         ;;walk down sub-entities until seqend is found
  511.         (if (assoc 66 (entget ent))
  512.           (progn
  513.             ;;add sub-entities until seqend is found
  514.             (setq subent (entnext ent))
  515.             (while (/= (cdr (assoc 0 (entget subent))) "SEQEND")
  516.               (entmake (entget subent))
  517.               (setq subent (entnext subent))
  518.             )

  519.             ;;add seqend sub-entity
  520.             (setq ent3 (entmake (entget subent)))
  521.             (if        (null ent3)
  522.               (princ (entget subent))
  523.             )
  524.           )
  525.         )
  526.         ;;delete original entity
  527.         (entdel ent)
  528.         (setq a (1+ a))
  529.         (c:spin "Making Block..")
  530.       )
  531.       (setq name (entmake '((0 . "endblk"))))
  532.       ;;write block end sub-entity
  533.       (princ "\n  Inserting Block..\n")

  534.       ;; Insert block reference at insertion point
  535.       ;; Note: Check the argument Mins for the method to insert the block
  536.       ;; Note: Mins=T means minsert the block, and Mins=nil means insert it.
  537.       (if Mins
  538.         ;;Minsert block reference at insertion point
  539.         (entmake
  540.           (list        '(0 . "INSERT")
  541.                 (CONS '100 "AcDbMInsertBlock")
  542.                 (CONS '70 2)
  543.                 (CONS '71 2)
  544.                 (cons '2 name)
  545.                 (cons '10 pt)
  546.           )
  547.         )
  548.         (entmake
  549.           (list        '(0 . "INSERT")
  550.                 (cons '2 name)
  551.                 (cons '10 pt)
  552.           )
  553.         )
  554.         ;;Insert block reference at insertion point
  555.       )
  556.       (setq sset nil)
  557.       (setq viewsset nil)
  558.     )
  559.     ;; Note: This statement is just a debug string and can be deleted
  560.     (if        layoutName
  561.       (princ (strcat "\nNo entities to lock in " layoutName))
  562.     )
  563.   )
  564.   (princ)
  565. )

  566. (defun Finish (vers)
  567.   (setvar "clayer" cla)
  568.   (setvar "tilemode" space)
  569.   (if (= vers 2)
  570.     (command "-layer" "state" "restore" "lockup" "" "")
  571.   )
  572.   (command "-layer" "lock" "*" "")
  573.   (setvar "proxyshow" 1)
  574.   (command "regen")
  575.   (cond
  576.     ((= cont "Yes")
  577.      (alert
  578.        "\nPaper space only has been locked.
  579.                                 \nTo lock model space, run Lockup
  580.                                 \nagain and do NOT skip to paper space."
  581.      )
  582.     )
  583.     ((= answer2 "Model")
  584.      (alert "\nAll selected entities have been locked.")
  585.     )
  586.     ((= answer2 nil)
  587.      (alert "\nAll selected entities have been locked.")
  588.     )
  589.   )
  590.   (setq        cont nil
  591.         answer2        nil
  592.   )
  593.   (princ "\nLockup has completed. ")
  594.   (princ)
  595. )

  596. ;;; Note:
  597. ;;; Separate routine still for r14, because paper space is a whole different
  598. ;;; ballgame in later versions. It supplies the keyword "14PS" to be recognized
  599. ;;; by anonBlock in order to select all entities that have group code 67 = 1
  600. (defun goLock14PS ()
  601.   (setvar "tilemode" 0)
  602.   (proxy)
  603.   (anonBlock "14PS" nil)                ; make anon insert - on paper space
  604.   (backblk "14PS" nil)                        ; make anon insert - on paper space
  605.   (solidBlk "14PS" nil)                        ; make anon insert - on paper space
  606.   (anonBlock "14PS" T)                        ; make anon minsert - on paper space
  607.   (command "zoom" "extents")
  608.   (prompt "\n  Paper Space has been locked.")
  609.   (Finish 0)
  610. )

  611. (defun goLockPS        (vers)
  612.   (if (= vers 0)
  613.     (goLock14PS)
  614.     (progn
  615.       (princ "\nType in Layout Name to make current: ")
  616.       (command "layout" "set" pause)        ;type in whatever layout to set current
  617.       (while (> (getvar "cmdactive") 0) (command pause))
  618.       (proxy)
  619.       (anonBlock (getvar "CTAB") nil)        ; make anon insert in named layout
  620.       (backblk (getvar "CTAB") nil)        ; make anon insert in named layout
  621.       (solidblk (getvar "CTAB") nil)        ; make anon insert in named layout
  622.       (anonBlock (getvar "CTAB") T)        ; make anon minsert in named layout
  623.       (command "zoom" "extents")
  624.       (initget "Yes No")
  625.       (prompt
  626.         (strcat "\n  Layout " (getvar "ctab") " has been locked.")
  627.       )
  628.       (setq answer
  629.              (getkword "\nAre there more layouts to lock? Y/<N>: ")
  630.       )
  631.       (cond
  632.         ((or (null answer) (= answer "No"))
  633.          (Finish vers)
  634.         )
  635.         ((= answer "Yes")
  636.          (goLockPS vers)
  637.         )
  638.         (T nil)
  639.       )
  640.     )
  641.   )
  642. )

  643. (defun goLock (vers)
  644.   (setvar "tilemode" 1)
  645.   (if (= vers 2)
  646.     (command "-layer" "state" "save" "lockup" "" "" "")
  647.   )
  648.   (command "-layer" "thaw" "*" "on" "*" "unlock" "*" "")
  649.   (command "zoom" "extents")
  650.   (proxy)
  651.   (if (/= vers 0)
  652.     (progn
  653.       (anonBlock "Model" nil)                ; make anon insert in model space
  654.       (backblk "Model" nil)                ; make anon insert in model space
  655.       (solidblk "Model" nil)                ; make anon insert in model space
  656.       (anonBlock "Model" T)                ; make anon minsert in model space
  657.     )
  658.     (progn
  659.       (anonBlock "14MS" nil)
  660.       (backblk "14MS" nil)
  661.       (solidblk "14MS" nil)
  662.       (anonBlock "14MS" T)
  663.     )
  664.   )
  665.   (prompt "\n  Model Space has been locked.")
  666.   (initget "Yes No")
  667.   (setq        answer
  668.          (getkword "\nDo you want to lock Paper Space? Y/<N>: ")
  669.   )
  670.   (cond
  671.     ((or (null answer) (= answer "No")) (Finish vers))
  672.     ((= answer "Yes") (goLockPS vers))
  673.     (T nil)
  674.   )
  675. )

  676. (defun states ()
  677.   (if (= vers 2)
  678.     (command "-layer" "state" "save" "lockup" "" "" "")
  679.   )
  680.   (command "-layer" "thaw" "*" "on" "*" "unlock" "*" "")
  681.   (command "graphscr")
  682.   (command "zoom" "extents")
  683.   (goLockps vers)
  684. )

  685. (defun continue        ()
  686.   (initget "Yes No")
  687.   (setq        cont (getkword
  688.                "\nModel Space will not be locked! Continue? Y/<N>: "
  689.              )
  690.   )
  691.   (cond        ((= cont "Yes") (states))
  692.         ((= cont "No") (skip))
  693.         ((= cont nil) (skip))
  694.   )
  695. )

  696. (defun skip ()
  697.   (initget "Skip Model")
  698.   (setq        answer2
  699.          (getkword
  700.            "\nStart in Model Space or Skip to Paper Space? Skip/<Model>:"
  701.          )
  702.   )
  703.   (cond        ((= answer2 "Skip") (continue))
  704.         ((= answer2 "Model") (goLock vers))
  705.         ((= answer2 nil) (goLock vers))
  706.   )
  707. )

  708. (defun 14or2k (/ answer)
  709.   (initget "14 2000 2000i")
  710.   (setq        answer
  711.          (getkword
  712.            "\nWhat version of AutoCAD are you in? 14/2000<2000i>: "
  713.          )
  714.   )
  715.   (cond
  716.     ((= answer "14") (setq vers 0))
  717.     ((= answer "2000") (setq vers 1))
  718.     ((= answer "2000i") (setq vers 2))
  719.     ((= answer nil) (setq vers 2))
  720.   )
  721.   (skip)
  722. )

  723. (defun goexp ()
  724.   (progn
  725.     (repeat (sslength sset)
  726.       (command "_explode" (ssname sset CNT))
  727.       (setq CNT (1+ CNT))
  728.       (c:spin "Exploding..")
  729.     )
  730.     (alert (strcat "\n    " (itoa CNT) " Entities Exploded."))
  731.   )
  732.   (setq sset nil)
  733.   (princ)
  734. )

  735. (defun xpproxy (/ xpl)
  736.   (alert
  737.     "\n     Proxy Entities have been found.
  738.     If they are not exploded, they will
  739.   be omitted from the lockup process."
  740.   )
  741.   (initget "Yes No")
  742.   (setq xpl (getkword "\nExplode Proxy Entities? Y/<N>: "))
  743.   (if (or (= xpl "No") (= xpl nil))
  744.     (princ)
  745.   )
  746.   (if (= xpl "Yes")
  747.     (goexp)
  748.   )
  749.   (princ)
  750. )

  751. (defun goerase ()
  752.   (progn
  753.     (repeat (sslength wsset)
  754.       (entdel (ssname wsset WCNT))
  755.       (setq WCNT (1+ WCNT))
  756.       (c:spin "Erasing..")
  757.     )
  758.     (alert (strcat "\n    " (itoa WCNT) " Wipeouts Erased."))
  759.   )
  760.   (setq wsset nil)
  761.   (princ)
  762. )

  763. (defun goaskerase (/ del)
  764.   (alert
  765.     "\n     Wipeouts have been found."
  766.   )
  767.   (initget "Yes No")
  768.   (setq del (getkword "\nErase Wipeouts? Y/<N>: "))
  769.   (if (or (= del "No") (= del nil))
  770.     (princ)
  771.   )
  772.   (if (= del "Yes")
  773.     (goerase)
  774.   )
  775.   (princ)
  776. )

  777. (defun gowipeout (/ where wlist)
  778.   (setq where (getvar "tilemode"))
  779.   (setq cs 67)
  780.   (if (= where 0)
  781.     (setq sp 1)
  782.   )
  783.   (if (= where 1)
  784.     (setq sp 0)
  785.   )
  786.   (setq        wlist (list (cons cs sp)
  787.                     '(0 . "wipeout")
  788.               )
  789.   )
  790.   (setq WCNT 0)
  791.   (setq wsset (ssget "x" wlist))
  792.   (if (= wsset nil)
  793.     (princ)
  794.   )
  795.   (if (not (= wsset nil))
  796.     (goaskerase)
  797.   )
  798.   (princ)
  799. )

  800. (defun proxy (/ where plist)
  801.   (setq where (getvar "tilemode"))
  802.   (if (= where 0)
  803.     (setq plist        '((-4 . "< NOT")
  804.                   (67 . 0)
  805.                   (-4 . "NOT > ")
  806.                   (-4 . " < OR")
  807.                   (0 . "ACAD_PROXY_ENTITY")
  808.                   (0 . "AECC_*")
  809.                   (0 . "AEC_*")
  810.                   (0 . "AECS_*")
  811.                   (0 . "RTEXT")
  812.                   (-4 . "OR > ")
  813.                  )
  814.     )
  815.   )
  816.   (if (= where 1)
  817.     (setq plist        '((-4 . " < NOT")
  818.                   (67 . 1)
  819.                   (-4 . "NOT > ")
  820.                   (-4 . "< OR")
  821.                   (0 . "ACAD_PROXY_ENTITY")
  822.                   (0 . "AECC_*")
  823.                   (0 . "AEC_*")
  824.                   (0 . "AECS_*")
  825.                   (0 . "RTEXT")
  826.                   (-4 . "OR > ")
  827.                  )
  828.     )
  829.   )
  830.   (setq CNT 0)
  831.   (setq sset (ssget "x" plist))
  832.   (if (= sset nil)
  833.     (princ)
  834.   )
  835.   (if (not (= sset nil))
  836.     (xpproxy)
  837.   )
  838.   (gowipeout)
  839.   (princ)
  840. )

  841. (defun c:undolock ()
  842.   ;;Undo and Reset variables
  843.   (setvar "cmdecho" 0)
  844.   (princ "\nPlease wait while Lockup is undone.")
  845.   (command "undo" "end")
  846.   (command "undo" "back")
  847.   (setvar "cmdecho" 1)
  848.   (setvar "filedia" 1)
  849.   (setvar "cmddia" 1)
  850.   (setvar "clayer" cla)
  851.   (princ "\nLockup has been undone.")
  852.   (princ)
  853. )

  854. (defun c:look (/ alist CNT sset)
  855.   (setq        alist '((-4 . " < OR")
  856.                 (0 . "ACAD_PROXY_ENTITY")
  857.                 (0 . "AECC_*")
  858.                 (0 . "AEC_*")
  859.                 (0 . "AECS_*")
  860.                 (0 . "RTEXT")
  861.                 (0 . "WIPEOUT")
  862.                 (-4 . "OR > ")
  863.                )
  864.   )
  865.   (setq CNT 0)
  866.   (if alist
  867.     (progn
  868.       (setq sset (ssget "X" alist))
  869.       (if sset
  870.         (repeat        (sslength sset)
  871.           (setq CNT (1+ CNT))
  872.         )
  873.       )
  874.       (if (= CNT 1)
  875.         (alert (strcat "\n        " (itoa CNT) " Entity found."))
  876.       )
  877.       (if (> CNT 1)
  878.         (alert (strcat "\n       " (itoa CNT) " Entities found."))
  879.       )
  880.     )
  881.   )
  882.   (if (= sset nil)
  883.     (alert "\nNo Entities were found.")
  884.   )
  885.   (princ)
  886. )

  887. (defun c:spin (wh)
  888.   (prompt (strcat "\r  "
  889.                   wh
  890.                   (cond        ((= sp "|") (setq sp "/"))
  891.                         ((= sp "/") (setq sp "-"))
  892.                         ((= sp "-") (setq sp "\"))
  893.                         (T (setq sp "|"))
  894.                   )
  895.           )
  896.   )
  897.   (princ)
  898. )

  899. (defun C:Lockup        (/ start answer)
  900.   (setq        fdia        (getvar "filedia")
  901.         cdia        (getvar "cmddia")
  902.         cmd        (getvar "cmdecho")
  903.         cla        (getvar "clayer")
  904.         space        (getvar "tilemode")
  905.         olderr        *error*
  906.         *error*        lockerror
  907.         cont        nil
  908.         answer2        nil
  909.   )
  910.   (setvar "cmdecho" 0)
  911.   (command "UNDO" "Begin")
  912.   (setvar "filedia" 0)
  913.   (setvar "cmddia" 0)
  914.   (command "undo" "mark")
  915.   (command "-layer" "make" "LOCKUP" "")
  916.   (command "color" "bylayer")
  917.   (setvar "proxyshow" 0)
  918.   (command "regen")
  919.   (initget "Yes No")
  920.   (setq        answer
  921.          (getkword
  922.            "\nThis routine will lock the drawing! Do you really want to proceed? Y/<N>: "
  923.          )
  924.   )
  925.   (cond
  926.     ((or (= answer "No") (null answer))
  927.      (Alert "LOCKUP aborted!")
  928.     )
  929.     ((= answer "Yes") (14or2k))
  930.   )
  931.   (command "UNDO" "End")
  932.   (setq *error* olderr)
  933.   (setvar "filedia" fdia)
  934.   (setvar "cmddia" cdia)
  935.   (setvar "cmdecho" cmd)
  936.   (princ)
  937. )
  938. (princ "\nLOCKUP is loaded.")
  939. (princ "\nType LOCKUP to start.")
  940. (princ)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-4 03:16:10 | 显示全部楼层
lockup的解密需要程序修改那个无名块的阵列代码:70和71
它设定的是2,需要将它们都改回0
然后就可以炸开了,不过似乎在2002下无法炸开
在14下肯定没有问题

在我修改后的程序中,程序完成后会给如上的解密提示

============================================
解密程序代码如下:

  1. (Defun C:Unlockup (/ CmdEcho Index SSet SName Model Paper)
  2.   (setq CmdEcho (getvar "CmdEcho"))
  3.   (setvar "CmdEcho" 0)
  4.   (if (null (wcmatch (getvar "ACADVer") "14*"))
  5.     (alert (strcat
  6.              "\n           AutoCAD版本匹配错误"
  7.              "\n *****************************************"
  8.              "\n     在当前的AutoCAD版本下无法完成解锁"
  9.              "\n           当前图形的命令"
  10.              "\n      如果要解锁当前图形, 请手动修改"
  11.              "\n         无名块的行列数据从2到0"
  12.              "\n        保存成R14.0格式的图形文件"
  13.              "\n       使用AutoCAD R14.0打开并炸开"
  14.              "\n      或在AutoCAD R14.0下使用本命令"
  15.              "\n *****************************************")
  16.     )
  17.     (progn
  18.       (princ "\n 正在解锁当前图形,请等候...")
  19.       (command "_.Layer" "_T" "*" "_ON" "*" "_UNLOCK" "*" "")
  20.       (while (setq SSet        (ssget "x"
  21.                                (list (cons 0 "INSERT")
  22.                                      (cons 70 2)
  23.                                      (cons 71 2)
  24.                                )
  25.                         )
  26.              )
  27.         (setq Index -1
  28.               Model nil
  29.               Paper nil
  30.         )
  31.         (repeat        (sslength SSet)
  32.           (setq SName (entget (ssname SSet (setq Index (1+ Index)))))
  33.           (if (= (substr (cdr (assoc 2 SName)) 1 2) "*U")
  34.             (progn
  35.               (setq SName (subst (cons 70 0) (assoc 70 SName) SName)
  36.                     SName (subst (cons 71 0) (assoc 71 SName) SName)
  37.               )
  38.               (entmod SName)
  39.               (if (= 1 (cdr (assoc 67 SName)))
  40.                 (setq Model (cons (cdr (assoc -1 SName)) Model))
  41.                 (setq Paper (cons (cdr (assoc -1 SName)) Paper))
  42.               )
  43.             )
  44.           )
  45.         )
  46.         (cond ((= (getvar "TileMode") 0)
  47.                (foreach Item Paper (command "_.Explode" Item))
  48.                (setvar "TileMode" 1)
  49.                (foreach Item Model (command "_.Explode" Item))
  50.               )
  51.               ((= (getvar "TileMode") 1)
  52.                (foreach Item Model (command "_.Explode" Item))
  53.                (setvar "TileMode" 0)
  54.                (foreach Item Paper (command "_.Explode" Item))
  55.               )
  56.         )
  57.         (princ "完成!")
  58.       )
  59.     )
  60.   )
  61.   (setvar "CmdEcho" CmdEcho)
  62. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-10 10:01:04 | 显示全部楼层
加密程序我在2005/6下面测试没有成功,仅仅图层加密了,但是并没有成块。保存后仍然可以编辑的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-20 01:48:25 | 显示全部楼层
没有试验成功。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-20 04:15:57 | 显示全部楼层
没有试验成功。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-20 10:06:53 | 显示全部楼层
[iframe h=600 w=100%]http://www.xdcad.net/forum/showthread.php?s=&postid=3081612#post3081612[/iframe]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-11-15 18:33 , Processed in 0.341098 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表