如何使用 ezdxf 关闭 属性 打印设置?

How to turn off property print settings using ezdxf?

我想知道如何使用 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 group 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

但是,由于 does not test whether or not a layer is current before enabling bit 1 for DXF group 70, you may want to include this check prior to invoking the 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 循环的 外部 局部变量会更有效,因为该值在循环内不会更改,但我会把它留给你。