doc对象为这样得到的
- (defun test()
- ;; 创建AutoCAD应用程序对象
- (setq acadd (vlax-get-or-create-object "AutoCAD.Application"))
- ;; 获取DWG文件所在文件夹路径
- (setq folder "D:/三澳成品采集信息/图纸类/化学/升版/")
- ;; 获取文件夹中的所有DWG文件
- (setq files (vl-directory-files folder "*.dwg"))
- ;; 打开每个DWG文件并执行操作
- (foreach file files
- (setq full-path (strcat folder file))
- (vl-catch-all-apply
- '(lambda ()
- (setq doc (vla-open (vla-get-documents acadd) full-path))
- ;; 在这里可以执行其他操作,例如提取文字等
- ;(setq block-names (get-all-block-names doc file)) ; 获取文档中的所有块名称
- ;(princ block-names) ; 输出所有块名称
- (vla-close doc) ; 关闭当前文档
- )
- )
- (if (vl-catch-all-error-p err)
- (progn
- (setq errmsg (vl-catch-all-error-message err))
- (if (vl-position "Automation Error" errmsg)
- (princ (strcat "\nFailed to open file: " full-path ", Error: " errmsg))
- (princ (strcat "\nError: " errmsg))
- )
- )
- )
- )
- ;; 退出AutoCAD应用程序对象
- (vlax-release-object acadd)
- )
|