1

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

你能像这样打开和关闭打印吗?

4

1 回答 1

2

层的绘制(即打印)标志由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

但是,由于1在为 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,因为该值不会在循环内改变,但我将把它留给你。

于 2019-09-26T17:23:11.040 回答