MR MAN 发表于 2022-7-5 18:50:49

拆离未参照的外部参照

是否存在任何lisp拆离未引用的外部参照文件?

JeepMaster 发表于 2022-7-5 19:01:06

是的,我有一个,但它在工作。我稍后再发。

borgunit 发表于 2022-7-5 19:07:00

http://forums.augi.com/showthread.php?t=82705

JeepMaster 发表于 2022-7-5 19:11:57

实际上,我的代码是“分离、审计、绑定、清除所有内容”。如果您只希望代码拆离未引用的外部参照,那么删除audit和purge all很简单,但我不知道是否可以删除bind命令。除非有人可以修改lisp,使其仅绑定“那些未引用的外部参照”。这就是lisp的全部技巧,将未引用的外部参照重定位到空白图形并绑定空白图形。
**要使此lisp正常工作,必须在搜索路径中放置一个名为“dummy.dwg”的空白图形**

(defun C:SENT ( / )

(defun *error*(msg)
   (setvar "modemacro" ".")
   (setvar "bindtype" oldBnType)
   (setvar "cmdecho" 1)
   (princ "\n...Audit/Bind/PurgeAll terminated!!!")
   (princ)
   ); end of *error*

(setvar "modemacro" "Audit/Bind/PurgeAll processing......please wait......")
(setvar "cmdecho" 0)
(prompt "\n--- Audit/Bind/PurgeAll......please wait---")
(prompt "\nAuditing...")(terpri)
(command "_audit" "y")
(bind_xrefs)
(prompt "\nPurging #1")(terpri)
(command "-purge" "a" "*" "N")
(prompt "\nPurging #2")(terpri)
(command "-purge" "a" "*" "N")
(prompt "\nPurging #3")(terpri)
(command "-purge" "a" "*" "N")
(prompt "\n--- Audit, Bind, PurgeAll completed! ---")
(setvar "modemacro" ".")
(setvar "cmdecho" 1)
(princ)
); end of c:sent

(defun bind_xrefs ( / CMD)
(setq oldBnType(getvar "bindtype"))
(setq CMD (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(setvar "bindtype" 0)
(setq XLIST (xref-status))
(if XLIST
   (progn
   (prompt "\nBinding all Xrefs...")
   (foreach n XLIST (rem-xref n))
   (command "-xref" "b" "*" )
   (prompt "...done")(terpri)
   )
)
(setvar "CMDECHO" CMD)
(setvar "bindtype" oldBnType)
(princ)
)

(defun rem-xref ( XL / XNAME XSTATUS )
(setq XNAME (nth 0 XL))
(setq XSTATUS (nth 2 XL))
(if (= XSTATUS "UNLOADED")
   (rem_unload)
)
(if (= XSTATUS "UNRESOLVED")
   (rem_unload)
)
)

(defun xref-status ( / d n f r)
(while (setq d (tblnext "block" (null d)))
   (cond
   (
       (eq 4 (logand 4 (cdr (assoc 70 d))))
       (setq
         d (entget (tblobjname "block" (cdr (assoc 2 d))))
         n (cdr (assoc 2 d))
         p (cdr (assoc 3 d))
         f (cdr (assoc 70 d))
       )
       (setq r
         (cons
         (list n p
             (cond
               ( (eq 32 (logand 32 f)) "LOADED")
               ( (assoc 71 d) "UNLOADED")
               ( t "UNRESOLVED")
             )
         )
         r
         )
       )
   )
   )
)
(reverse r)
)


(defun rem_unload ( / )
(setq DFILE (findfile "dummy.dwg"))
(if (not DFILE)
   (prompt "\nCannot find dummy_xref drawing ")
   (progn
   (command "-xref" "p" XNAME DFILE)
   (command "-xref" "r" XNAME)
   )
)
)

j3m 发表于 2022-7-5 19:14:10

你的lisp代码真的很好。
如何创建一个循环,使其能够将您的代码用于整个图形文件夹(大约20-30个图形)。
 
E、 q:选择文件夹并自动绑定所有图纸
 
谢谢你的回答

JeepMaster 发表于 2022-7-5 19:20:14

您可以使用ScriptPro(我更喜欢上标)并对所有DWG运行SENT命令。当我需要为客户端绑定一组DWG时,我就是这么做的。

j3m 发表于 2022-7-5 19:23:50

 
谢谢你的回答,JeepMaster,很不幸,我不能在我的工作电脑上安装软件,因为我不是管理员。
 
谢谢
 
j3m公司

LCE 发表于 2022-7-5 19:32:49

看一下使用。bat文件带有。scr文件,在脚本中只需运行lisp。
我之前在这里发布了一个示例,运行一个搜索,看看你是否能找到它,同时我会检查我的硬盘,看看我是否能找到我的模板。

JeepMaster 发表于 2022-7-5 19:39:02

如果在安装过程中检查了scriptpro,您的机器上可能已经安装了scriptpro,因为它与AutoCAD一起提供。如果没有,您可能仍然可以从Autodesk下载并安装,具体取决于您拥有的权限。我不是工作中的管理员,但仍然可以安装scriptpro。另一个选择是获取上标,这是一个自包含的exe程序。

ABUSAIF 发表于 2022-7-5 19:44:05

Graet lisp。。非常感谢。
页: [1] 2
查看完整版本: 拆离未参照的外部参照