gazzalp 发表于 2022-7-6 10:07:30

多重绑定。

各位,我有一个lisp例程,可以执行多种电子传输,问题是我们的许多客户都想要绑定dwg。我们可以一次发布多达200个图形,因此绑定每个外部参照、文件另存为等需要很多时间。我希望有一个例程可以为我完成所有这些,所以我可以在另一台机器上设置它,并让例程打开所有图形,绑定外部参照,另存为一个新文件(这样它就不会覆盖所有绑定的图形)我可以看到的一个问题是,有时我们的一个外部参照可能会被卸载或找不到。不确定该项目如何应对这种情况。有人有lisp文件吗?谢谢

JeepMaster 发表于 2022-7-6 10:13:22

我有一个很好用的。确保您创建了一个空白dwg,将其保存为“dummy.dwg”,并将其放在搜索路径文件夹中。它将分离卸载/未解析的外部参照、绑定外部参照、审核和清除dwg。命令已发送。
 
;...............................................................................
;
;       << Detach unloaded/unresolved xrefs, Bind xrefs, Audit, Purge >>
;                                    <<2007 >>
;
;          NOTE: Must have a blank dwg in search path name "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)
   )
)
)

gazzalp 发表于 2022-7-6 10:16:21

我不确定这是否正是我想要的,或者我只是做错了。我希望lisp能够绘制多个图形,而不必全部打开。我宁愿只选择我想要的图形,它为我这样做,但也保存为新的文件(这样我就不会覆盖我的正确的绘图)这个程序这样做吗?如果是这样,我该如何使用它?

matthewrussell 发表于 2022-7-6 10:18:54

你看电子传输设置累了吗。您可以在其中添加文件,以便在打开文件的同时进行电子传输。此外,还可以创建一个新的传递设置,让它为您绑定和清除所有图形。我一直在用它。
 
我想这就是你想要的。这是Autocad的一部分,您不需要另一个lisp或脚本来执行此操作。只要把它设置好,它就会完成你添加的所有绘图

gazzalp 发表于 2022-7-6 10:20:52

谢谢,我还没看到呢。它运行得很好,在我们所有的程序都启动并运行之前,它必须运行。谢谢你的帮助

LCE 发表于 2022-7-6 10:26:30

得了VB。如果你感兴趣的话,它会帮你的。。。目前是基本的,但可以扩展以处理不同的场景(嵌套外部参照等)

gazzalp 发表于 2022-7-6 10:29:33

谢谢,如果你不介意的话,也许值得一看。我们公司目前正在制作一个程序,通过在标题栏中放置一个问题,创建PDF和绑定的DWG来发布我们的图纸,因此我们可能可以扩展您必须包含的所有内容。
 
谢谢

Vintage1 发表于 2022-7-6 10:31:54

 
 
你好
 
我正在寻找一个lsp,可以做一些你说的。我有一组需要电子传递的图形,但我需要每个图形都有自己的电子传递。目前,我必须打开每张图纸,制作一个电子传递。我在电子传递中看到了添加图形的选项,但它将图形放在一个zip文件中。
我们不需要在外部参照中绑定,所以希望你的lisp能够工作
 
谢谢
史蒂芬

irneb 发表于 2022-7-6 10:34:24

这些天我会尽量避开VBA,尤其是当你使用64位的时候。
 
我在ACad中使用了一个名为AutoScript的小插件(只需在谷歌上搜索一下即可)。然后,我让它在选定图形的文本SCR文件中运行以下内容:
它首先将DWG保存到该文件夹(根据脚本中的需要更改文件夹),因为即使其他人当时打开了文件,它也可以工作。我已经在启用“绑定外部参照”选项的情况下设置了电子传递。不需要更多的lisp来绑定外部参照。

Vintage1 发表于 2022-7-6 10:38:39

谢谢你,我下载了Autoscript exe,并通过menuload加载了cui,但当我运行程序时,我得到了这个mesage。
未知命令“AUTOSCRIPT”。按F1键获取帮助。知道它为什么不运行吗
页: [1] 2
查看完整版本: 多重绑定。