如果AutoCAD图纸中的物料清单(BOM)位于“块参考”中,要使用pyautocad读取BOM,我们可以使用以下代码读取它。
from pyautocad import Autocad
acad = Autocad()
for obj in acad.iter_objects(['Block']):
if obj.HasAttributes:
obj.GetAttributes()
但是它引起了例外 comtypes \ automation.py,第457行,_get_value typ = _vartype_to_ctype [self.vt& ~VT_ARRAY] KeyError:9
如何使用pyautocad在AutoCAD中阅读BoM。
答案 0 :(得分:1)
根据pyautocad存储库中记录的问题,https://github.com/reclosedev/pyautocad/issues/6 comtypes存在与访问数组相关的问题。 因此,为了读取块引用,我们必须使用win32com,如下所示:
import win32com.client
acad = win32com.client.Dispatch("AutoCAD.Application")
# iterate through all objects (entities) in the currently opened drawing
# and if its a BlockReference, display its attributes.
for entity in acad.ActiveDocument.ModelSpace:
name = entity.EntityName
if name == 'AcDbBlockReference':
HasAttributes = entity.HasAttributes
if HasAttributes:
for attrib in entity.GetAttributes():
print(" {}: {}".format(attrib.TagString, attrib.TextString))
有关详细信息,请参阅https://gist.github.com/thengineer/7157510。