首页 > 解决方案 > 我没有得到 BlockReference 的位置?

问题描述

当我尝试制作excel表时。这需要 AdcblockReference 名称和位置。但是当我尝试运行此代码时出现属性错误。所以我不知道如何获得下面给出的位置和名称是我的代码

from os.path import join, dirname, abspath
from xlutils.copy import copy
import xlrd
import xlwt
from pyautocad import Autocad, APoint
import os
import win32com.client
from pyautocad import Autocad, APoint
from pyautocad.contrib.tables import Table
from comtypes import COMError

# Create workbook
book = xlwt.Workbook()
ws = book.add_sheet("ExportedData")
book.save("Exported.xls")

# Open the workbook
xl_workbook = xlrd.open_workbook("Exported.xls")
sheet_names = xl_workbook.sheet_names()

xl_sheet = xl_workbook.sheet_by_name(sheet_names[0])

wb = copy(xl_workbook)
sheet = wb.get_sheet(0)

dwgfiles = filter(os.path.isfile, os.listdir(os.curdir))

cwd = os.path.abspath(os.path.curdir)  # current working dir
print(cwd)
for f in dwgfiles:
    print("++++++++++++++++++++++++++++++")
    print("++++++++++++++++++++++++++++++")
    print("++++++++++++++++++++++++++++++")
    print("++++++++++++++++++++++++++++++")

    print(f)
    if f.endswith(".dwg"):
        print("sdaasdas")
        """ open Document"""
        acad = Autocad()
        print(cwd)
        acad.app.Documents.open(cwd + "/" + f)

        print(acad.doc.Name)

        num_cols = xl_sheet.ncols  # Number of columns
        idx = 1

        acad = win32com.client.Dispatch("AutoCAD.Application")

        doc = acad.ActiveDocument  # Document object

        print("MODEL SPACE")
        count=0
        for entity in acad.ActiveDocument.ModelSpace:
            name = entity.EntityName
            print(name)
            if name == 'AcDbBlockReference':
                print(name)
                count=count+1
                sheet.row(idx).write(1, entity.ObjectID)
                sheet.row(idx).write(2, cwd + "/" + f)
                sheet.row(idx).write(3,entity.IntersectionPoint)
                idx = idx + 1

        print(count)
        doc.Close(False)
        acad = None
wb.save("Exported.xls")

下面是我得到的错误。

Traceback (most recent call last):
  File "auto1.py", line 64, in <module>
    sheet.row(idx).write(3,entity.IntersectionPoint)
  File "D:\autocad_test\venv\lib\site-packages\win32com\client\dynamic.py", line 527, in __getattr__
    raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.IntersectionPoint

如果您向我推荐任何关于 AutoCAD 的 Python 好教程,这将非常有帮助

标签: python-2.7autocadautocad-plugin

解决方案


好像是打字错误。您使用 IntersectionPointwhile 正确的应该是InsertionPoint在 VBA 中或者可能position在 ObjectARX 中


推荐阅读