Как отключить настройки печати свойств с помощью ezdxf? - PullRequest
1 голос
/ 26 сентября 2019

Я хочу знать, как отключить настройку печати свойства с помощью ezdxf.

Я могу скрыть, заморозить и включить и выключить.Однако печать не может быть включена или выключена.

my_lines.on()
my_lines.off()   # switch layer off, will not shown in CAD programs/viewers
my_lines.lock()  # layer is not editable in CAD programs
my_lines.freeze()

Можете ли вы включить или выключить печать следующим образом?

1 Ответ

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

Флаг построения (т.е. печати) для слоя представлен 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

Однако, поскольку не проверяет, является ли слой текущим до включения бита 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, так как этозначение не изменится в цикле, но я оставлю это вам.

...