一只傲娇喵 发表于 2024-2-26 14:32:50

如何批量提取文件夹内所有图纸的文字信息

如图,想要批量提取一个文件夹下所有图纸的文件编码,原本好不容易单个图纸提取好了
(根据块名炸开块----》遍历炸开的选择集得到文件编码文字----》得到文件编码和版本坐标-----》提取两个坐标间的文字),
结果换批量的时候发现要获取文档对象,单个提取的不能用了,所以用doc文档对象的提取文字应该怎么提取呢,问了一下gpt,问的这个思路是否有问题呢,感觉它回答的有点问题

一只傲娇喵 发表于 2024-2-26 14:34:00

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:52

我觉得你放个图纸会好一点。

一只傲娇喵 发表于 2024-2-26 16:40:25

橡皮 发表于 2024-2-26 16:36
我觉得你放个图纸会好一点。

好的,图纸是这样的

你有种再说一遍 发表于 2024-2-26 17:35:30

批量不就是后台打开文件而已嘛,有什么困难
页: [1]
查看完整版本: 如何批量提取文件夹内所有图纸的文字信息