Флаг построения (т.е. печати) для слоя представлен DXF-группой 290 , которая принимает значение 0
(что означает, что слой не нанесен на график) или 1
(имеется в виду слой * ).
Эта группа DXF представлена в ezdxf свойством plot
- поэтому вы можете отключить построение графиков дляслой, использующий код:
my_lines.dxf.plot = 0
Чтобы отключить или заморозить слои, для которых не задан график, вы можете использовать следующую базовую форму цикла:
for lay in dwg.layers:
if lay.plot = 0: # if layer is not plotted
lay.off() # turn layer off
lay.freeze() # freeze layer
Однако, поскольку ezdxf не проверяет, является ли слой текущим до включения бита 1
для группы DXF 70
, вы можете включить эту проверку перед вызовом метода freeze
, поскольку текущий слой не может быть заморожен:
for lay in dwg.layers:
if lay.plot = 0: # if layer is not plotted
lay.off() # turn layer off
if dwg.header['$CLAYER'] != lay.name: # current layer cannot be frozen
lay.freeze() # freeze layer
Очевидно, что было бы более эффективно связать имя текущего слоя с локальной переменной вне цикла for
, так как этозначение не изменится в цикле, но я оставлю это вам.