cadamrao 发表于 2022-7-6 08:07:54

在新文件夹中更改外部参照路径

嗨,朋友们
我需要LISP更改所有图形中的外部参照(从一个文件夹到另一个文件夹-位置路径更改)。有时,我复制的文件夹(xref)显示在旧的xref中,很难从(位于)xref对话框中更改所有DWG。
提前谢谢
文基

MSasu 发表于 2022-7-6 08:16:26

你试过Reference Manager工具吗?
 
当做
米尔恰

cadamrao 发表于 2022-7-6 08:17:54

我只使用acad2004。请发送LISP加急,bcoz我需要更改82个DWG
 
谢谢

MSasu 发表于 2022-7-6 08:24:28

您可以在这里和这里找到一些AutoLISP方法。
 
当做
米尔恰

cadamrao 发表于 2022-7-6 08:28:54

请查找外部参照LISP错误。我附上了图像文件。我需要更改服务器文件夹中的外部参照
 
谢谢

pBe 发表于 2022-7-6 08:33:08

看看这是否适合你
 
已更新
(defun c:FindMe (/ LM:FindFile Blks blk NewPath XrefFile)
(vl-load-com)
(defun LM:FindFile ( file directory )
(cond
   ( (findfile (strcat (setq directory (vl-string-right-trim "\\" directory)) "\\" file)) )
   (
   (vl-some
       (function
         (lambda ( dir )
         (LM:FindFile file (strcat directory "\\" dir))
         )
       )
       (vl-remove "." (vl-remove ".." (vl-directory-files directory nil -1)))
   )
   )
)
)      
(setq Blks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))      
(while (setq blk (tblnext "block" (not blk)))
   (if (and (= 4 (logand 4 (cdr (assoc 70 blk))))
               (setq NewPath
                         (LM:FindFile
                               (strcat (cdr (assoc 2 blk))
                                       ".dwg")
                               "Y:\\VENKI\ST11\\"))
            )
         (progn (setq XrefFile (vla-item Blks (cdr (assoc 2 blk))))
                  (vla-put-path XrefFile NewPath)
                  (vla-reload XrefFile))
         )
   )
   )   

 
容器文件夹是代码查找图形上现有外部参照名称的位置。外部参照名称应与以前相同,只是路径不同。
 
感谢LeeMac的LM:FindFile例程

Lee Mac 发表于 2022-7-6 08:37:26

干杯pBe

cadamrao 发表于 2022-7-6 08:41:22

 
 
 
 
******************************
 
晚上好
 
仍然无法使用你的Lisp,我需要在绘图新文件夹中更改外部参照吗
我附上了图纸(程序),供您参考,需要我。
 
谢谢
文基
外部参照路径问题。图纸

pBe 发表于 2022-7-6 08:43:20

你换了这个吗
“P:\\SERVER\u PATH\\CONTAINER\u FOLER\”

“Y:\\VENKI\ST11\”
编辑:我刚想到一件事,外部参照当前在图形上,但你想重新定位?
我认为没有找到外部参照,因此(=(cdr(assoc 70 blk))12)
请参阅更新的代码
 
 
既然你知道文件的位置:
 

(defun c:FindMe(/ Blks blk pth XrefFile)
   (vl-load-com)
   (setq Blks (vla-get-blocks
                      (vla-get-activedocument
                            (vlax-get-acad-object))))
      (while (setq blk (tblnext "block" (not blk)))
         (if (and (= 4 (logand 4 (cdr (assoc 70 blk))))
                  (wcmatch
                        (setq cp (cdr (assoc 1 blk)))
                        "*\\VENKI\\ST10*")
                  )
               (progn (setq fn (fnsplitl cp))
                        (vl-mkdir
                              (setq pth(strcat (vl-string-subst
                                                       "ST11"
                                                       "ST10"
                                                       (car fn)))))
                        (vl-file-copy
                              cp
                              (setq pth (strcat pth
                                                (cadr fn)
                                                (caddr fn))))
                        (setq XrefFile
                                 (vla-item
                                       Blks
                                       (cdr (assoc 2 blk))))
                        (vla-put-path XrefFile pth)
                        (vla-reload XrefFile))
               )
         )
   )

 
否则,使用第一个代码挖掘子文件夹。
 
编辑:
代码更新:包括文件副本。

cadamrao 发表于 2022-7-6 08:49:17

 
 
 
*************************
你好
晚上好
 
我很感激花时间处理这个问题,很抱歉,仍然无法工作。我会检查你发送的最新更新的LISP,然后是服务器路径文件夹ST11
“Y:\\VENKI\ST11\”)
下面显示错误&我附加了您上次更新的lisp
命令:findme
findme无
好的,我再解释一遍。我需要将ST10文件夹复制到同一服务器的ST11中,文件夹内的图形(ST11)需要在同一文件夹(ST11)中显示外部参照。
 
 
 
谢谢
文基
Findme。lsp
页: [1] 2
查看完整版本: 在新文件夹中更改外部参照路径