![]() |
如何提取dwg文件中的bom表信息
如何提取dwg文件中的bom表信息
www.dimcax.com 如何提取dwg文件中的bom表信息 autocad中如何在不打开图纸文件的情况下,提取图纸文件中的bom表数据信息? 用vb.net来做二次开发。 要用到objectdbx,这样不打开图形就可以像打开一样操作dwg了 请说一下,具体的程序,如何来编写 先在工程中引用autocad/objectdbx common 16.0类型库 下面这段程序很早写的了,功能是遍历图形中名称为blockxx的块(属性块),将属性提取到外部文本(.csv),以逗号为分隔,excel可以认识的格式 如果明细表不是属性块,修改下程序,基本上打开不打开都差不多操作 加了几条注释,应该没什么问题了 sub dbxtest() dim filename, outtext as string dim partcount partcount = 0 outtext = "" '文本文件保存路径名称,我以前写的是打开dwg读取的,是以当前图形名称命名的 filename = thisdrawing.path & "\" & left(thisdrawing.name, instr(thisdrawing.name, ".dwg") - 1) & ".csv" set fs = createobject("scripting.filesystemobject") ’创建fso对象用于文件操作 set a = fs.createtextfile(filename, true) dim objdbx as axdbdocument set objdbx = getinterfaceobject("objectdbx.axdbdocument.16") '创建对象,不同版本可能有点区别 objdbx.open "f:\xxxxx.dwg" '要打开的文件名 for each entobj in objdbx.modelspace ‘遍历模型空间对象 if entobj.objectname = "acdbblockreference" then if entobj.name = "blockxx" then varattributes = entobj.getattributes() for i = 0 to ubound(varattributes) outtext = outtext & varattributes(i).textstring & "," next if not outtext = ",,,,,,,," then a.writeline replace(replace(outtext, "%%c", "φ"), "%%c", "φ") partcount = partcount + 1 end if end if end if next a.close set a = nothing set fs = nothing msgbox " 共导出 " & partcount & " 个零件信息到 " & filename & " ", vbokonly, "导出完成" end sub 需要说明的是:这种objectdbx无法独立于cad运行,运行时最好cad开着 如果不开,程序会自动开一个隐藏的cad进程,这样可能会有点慢 这种objectdbx无法独立于cad运行,运行时最好cad开着 如果不开,程序会自动开一个隐藏的cad进程,这样可能会有点慢 受教了 真正的高手啊,o(∩_∩)o... : 这种objectdbx无法独立于cad运行,运行时最好cad开着 如果不开,程序会自动开一个隐藏的cad进程,这样可能会有点慢 对,这样是有点慢,不过只在第一次打开进程的时候会慢点,之后就不会了 相比每张图都在cad中打开操作而言,objectdbx无疑是要高效很多的,可惜的是随cad免费提供的objectdbx并不是objectdbx的全部,完全版可以完全脱离cad运行,不过是要付费的 |
| 所有的时间均为北京时间。 现在的时间是 07:13 AM. |