Ошибка происходит при использовании ezdxf для описания описания свойства слоя - PullRequest
1 голос
/ 27 сентября 2019

Ошибка возникает при использовании 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!

1 Ответ

2 голосов
/ 27 сентября 2019

Эта ошибка возникнет в вашем коде при попытке присвоить описание слою без существующего описания, но внутри чертежа, содержащего другие слои с описанием (т.е. внутричертеж, на котором AcAecLayerStandard идентификатор приложения уже зарегистрирован).

Чтобы избежать этого, просто проверьте, зарегистрирован ли уже AcAecLayerStandard идентификатор приложения, прежде чем добавлять его в таблицу символов 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)])
...