通过AutoLisp/VLisp打开的dwg文件是不是不能使用command/vl-cmdf命令?
请问一下各位大神,通过AutoLisp/VLisp打开的dwg文件是不是不能使用command/vl-cmdf命令?例如,我当前打开文件A,想由AutoCAD在后台自动打开指定目录里的dwg文件(文件B/C/D/E...),运行wblock命令,但wblock命令只能将当前打开的文件A内容写入,而不能将每个后台打开的文件(文件B/C/D/E...)内容写入,导致wblock导出来的文件全部都是同一个文件A的内容。
(setq path (strcat (getFolder "请选取要批处理的dwg文件所在目录") "\\"))
(setq cadobj (vlax-create-object "AUTOCAD.Application"))
(setq i 0)
(foreach file (vl-directory-files path "*.dwg" 1)
(setq docobj (vla-open (vla-get-documents cadobj) (strcat path file)))
(setenv "DefaultFormatForSave" "24");设置另存版本号
(setvar "filedia" 0)
(setq filename (strcat path (substr file 1 (- (strlen file) 4)) "_Purged.dwg"))
(command-s "-wblock" filename "*")
(setq i (+ 1 i))
)
(Vlax-Invoke-Method cadobj 'Quit)
vla-open是后台操作
command则属于交互操作
交互操作无法嵌入后台操作 感谢回复~
我也测试了一下,只能用vla-wblock来处理了
(setq path (strcat (getFolder "请选取要批处理的dwg文件所在目录") "\\"))
(setq cadobj (vlax-create-object "AUTOCAD.Application"))
(setq i 0)
(foreach file (vl-directory-files path "*.dwg" 1)
(setq docobj (vla-open (vla-get-documents cadobj) (strcat path file)))
(setq ssetObj (vla-Add (vla-get-SelectionSets docobj) "WBLOCKSET"))
(setq objsInModelSpace (vlax-make-safearray vlax-vbObject (cons 0 (1- (vla-get-Count (vla-get-ModelSpace docobj)))))
cnt 0)
(vlax-for entry (vla-get-ModelSpace docobj)
(vlax-safearray-put-element objsInModelSpace cnt entry)
(setq cnt (1+ cnt))
)
(vla-AddItems ssetObj objsInModelSpace)
(setq filename (strcat path (substr file 1 (- (strlen file) 4)) "_Purged.dwg"))
(vla-Wblock docobj filename ssetObj)
(vla-Delete ssetObj)
(setq i (1+ i))
)
(Vlax-Invoke-Method cadobj 'Quit) acac 发表于 2021-4-2 19:01
感谢回复~
我也测试了一下,只能用vla-wblock来处理了
这是要实现什么功能
页:
[1]