同名文件合并
就是有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);释放
)
请大神帮忙修改!!1
页:
[1]