我想知道如何使用 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()
你能像这样打开和关闭打印吗?
我想知道如何使用 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()
你能像这样打开和关闭打印吗?
层的绘制(即打印)标志由DXF组290表示,其接受0
(意味着不绘制层)或1
(意味着绘制层)的值。
此 DXF 组在 ezdxf 中由plot
属性表示 - 因此,您可以使用以下代码禁用图层的绘图:
my_lines.dxf.plot = 0
要关闭或冻结未设置为绘图的图层,您可以使用以下基本 for 循环:
for lay in dwg.layers:
if lay.dxf.plot = 0: # if layer is not plotted
lay.off() # turn layer off
lay.freeze() # freeze layer
但是,由于ezdxf1
在为 DXF group启用位之前不会测试图层是否为当前图层70
,因此您可能希望在调用该freeze
方法之前包含此检查,因为当前图层不能被冻结:
for lay in dwg.layers:
if lay.dxf.plot = 0: # if layer is not plotted
lay.off() # turn layer off
if dwg.header['$CLAYER'] != lay.dxf.name: # current layer cannot be frozen
lay.freeze() # freeze layer
显然,将当前层名称绑定到循环外部的局部变量会更有效for
,因为该值不会在循环内改变,但我将把它留给你。