python 如何获取多行文字对象的TextString属性?

mrwjdhj3  于 2023-11-16  发布在  Python
关注(0)|答案(2)|浏览(108)

我有一个非常简单的AutoCAD绘图,只有两个实体:一个MText对象和一个Polyline对象,如下面的屏幕截图所示。


的数据
我想通过以下代码从MText对象(即字符串'foo')中以编程方式获取TextString属性:

import win32com.client

acad = win32com.client.gencache.EnsureDispatch('AutoCAD.Application')
dwg = acad.Documents.Open(r'C:\path\to\my\drawing\test.dwg')
ms = dwg.ModelSpace

for obj in ms:
    if obj.EntityName == 'AcDbMText':
        print(obj.TextString)

字符串
但我得到了这个错误:

Traceback (most recent call last):

  File "<ipython-input-299-e8bbc8ec7f92>", line 3, in <module>
    print(obj.TextString)

  File "D:\anaconda3\lib\site-packages\win32com\client\__init__.py", line 473, in __getattr__
    raise AttributeError("'%s' object has no attribute '%s'" % (repr(self), attr))

AttributeError: '<win32com.gen_py.AutoCAD 2021 Type Library.IAcadEntity instance at 0x2562970331648>' object has no attribute 'TextString'


这很奇怪,因为一年前这段代码还能很好地工作,我错过了什么?

2g32fytz

2g32fytz1#

我对用Python编程AutoCAD不太了解。据我所知,在COM/ActiveX API中,MText object确实有一个TextString属性,但没有TextyName属性,你应该使用ObjectName

li9yvcax

li9yvcax2#

正确的方法是:

import win32com.client

acad = win32com.client.gencache.EnsureDispatch('AutoCAD.Application')
dwg = acad.Documents.Open(r'C:\path\to\my\drawing\test.dwg')
ms = dwg.ModelSpace

for obj in ms:
    if obj.EntityName == 'AcDbMText':
        mtext = win32com.client.CastTo(obj, "IAcadMText") 
        print(mtext.TextString)

字符串

相关问题