杨张张 发表于 2020-2-25 09:22:08

同名文件合并


就是有2个文件夹
A文件夹(图名为1、2、3、4、5。。。)
B文件夹(图名为1、2、3、4、5。。。);
就是将A文件夹与B文件夹中的同名图层原坐标合并,合并后的文件放在C文件夹(图名为1、2、3、4、5。。。)
以下收集的一个源码但有点不成熟,请高手帮忙修改。
;;;自定义函数,打开文件名
(defun try-getFolder (msg / WinShell shFolder path catchit)
(setq winshell (vlax-create-object "Shell.Application"))
(setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
(setq catchit (vl-catch-all-apply
         '(lambda ()
             (setq shFolder (vlax-get-property shFolder 'self))
             (setq path (vlax-get-property shFolder 'path))
            )
          )
)
(if (vl-catch-all-error-p catchit)
nil
path
)
)
;;;;;合并
(defun c:pltmhb (/ BANBEN DBX pathXZ pathgh pathgh FILESxz filesghI j DWGNAMExz dwgnamegh)
(vl-load-com)
(setq banben (substr (getvar "acadver") 1 2))
;版本2004-2006返回16,2007-2009返回17,2010-2012返回18,2013返回19
(setq dbx (Vlax-Get-Or-Create-Object (strcat "ObjectDBX.AxDbDocument." banben)))
(setq pathXZ (strcat (try-getFolder "\n 选择现状图所在文件夹名称:") "\\"));文件夹路径
(setq filesxz (vl-directory-files pathXZ "*.dwg" 1)) ;获取所有文件名
(setq pathGH (strcat (try-getFolder "\n 选择规划图所在文件夹名称:") "\\"));文件夹路径
(setq filesgh (vl-directory-files pathGH "*.dwg" 1)) ;获取所有文件名
(setq pathHB (strcat (try-getFolder "\n 选择合并后所在文件夹名称:") "\\"));文件夹路径
   
(setq i -1)
(while (setq dwgnamexz (nth (setq i (1+ i)) filesxz))
         (vlax-invoke-method dbx 'open (strcat pathxz dwgnamexz))
         (command-s "insert"*(strcat pathgh dwgnamexz)"0,0" "1" "1" "0" )   
      
          (vlax-invoke-method dbx 'SaveAs (strcat pathHB dwgnameXZ))
   
)
(vlax-release-object dbx);释放
)

杨张张 发表于 2020-2-25 10:04:34

请大神帮忙修改!!1
页: [1]
查看完整版本: 同名文件合并