如何批量提取文件夹内所有图纸的文字信息
如图,想要批量提取一个文件夹下所有图纸的文件编码,原本好不容易单个图纸提取好了(根据块名炸开块----》遍历炸开的选择集得到文件编码文字----》得到文件编码和版本坐标-----》提取两个坐标间的文字),
结果换批量的时候发现要获取文档对象,单个提取的不能用了,所以用doc文档对象的提取文字应该怎么提取呢,问了一下gpt,问的这个思路是否有问题呢,感觉它回答的有点问题
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)
) 我觉得你放个图纸会好一点。 橡皮 发表于 2024-2-26 16:36
我觉得你放个图纸会好一点。
好的,图纸是这样的
批量不就是后台打开文件而已嘛,有什么困难
页:
[1]