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
ただし、ezdxfは1
DXFグループのビットを有効にする前にレイヤーが現在のものであるかどうかをテストしないため、現在のレイヤーはフリーズできないため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
ですが、それはあなたに任せます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加