Во-первых, учтите, что следующий оператор if
будет никогда не подтвержден:
for entity in all_entities: #If there is no entity in the layer
if entity not in all_entities:
В цикле for
вы перебираете содержимое all_entities
,следовательно, ваше тестовое выражение: entity not in all_entities
будет никогда возвращать True, поскольку по самому определению цикла for
, entity
должен быть членом all_entities
.
В ответ на ваш главный вопрос: перед удалением определения слоя из файла DXF вам необходимо убедиться, что имя слоя не имеет ссылок нигде в базе данных.
Следовательно, для этого необходимо выполнить итерации по всем объектам во всей базе данных чертежей (т. Е. Первичным объектам во всех макетах чертежей, объектам (например, ATTRIB
, VERTEX
, SEQEND
объектам), объектам во всех определениях блоков,а также форзацы определения блока (BLOCK
, ENDBLK
).