我没有获得Block Reference的位置?

问题描述 投票:0回答:1

当我尝试制作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.7 autocad autocad-plugin
1个回答
1
投票

这似乎是输入错误。你使用IntersectionPoint,而正确的应该是在VBA中的InsertionPoint,或者像在ObjectARX中那样使用position

© www.soinside.com 2019 - 2024. All rights reserved.