1

使用ezdxf描述图层属性描述时出错。有会导致错误的图层名称和不会导致错误的图层名称。我不知道原因。

我尝试使用下面的代码。

lay = dwg.layers.get('MyLayerHere')
app = 'AcAecLayerStandard'
dsc = 'MyDescriptionHere'

if lay.tags.has_xdata(app):
    lay.tags.set_xdata(app, [(1000, ''), (1000, dsc)])
else:
    dwg.appids.new(app)
    lay.tags.new_xdata(app, [(1000, ''), (1000, dsc)])

错误内容

Traceback (most recent call last): File "file.py", line 777, in dwg.appids.new(app) File "C:\・・・\table.py", line 63, in new raise DXFTableEntryError('%s %s already exists!' % (self._dxfname, name)) ezdxf.lldxf.const.DXFTableEntryError: APPID AcAecLayerStandard already exists!
4

1 回答 1

2

当试图将描述分配给没有现有描述的图层,但在包含具有描述的其他图层的图形中(即在AcAecLayerStandard已注册应用程序 ID 的图形中)时,此错误将出现在您的代码中。

为避免这种情况,只需在将AcAecLayerStandard应用程序 ID 添加到APPID符号表之前测试它是否已注册,例如:

lay = dwg.layers.get('MyLayerHere')
app = 'AcAecLayerStandard'
dsc = 'MyDescriptionHere'

if lay.tags.has_xdata(app):
    lay.tags.set_xdata(app, [(1000, ''), (1000, dsc)])
else:
    if app not in dwg.appids:
        dwg.appids.new(app)
    lay.tags.new_xdata(app, [(1000, ''), (1000, dsc)])
于 2019-09-27T12:20:13.303 回答