個々の隣接するポリゴン (gnuplot の fillcurve モードで描画) が 1 つのポリゴンに変換されるように、Postscript ファイルを変換しようとしています。この関連する質問も参照してください。
そのために、私は次の問題に直面しています。
ポリゴンはpsファイルにそのような構造を持っています
some statements
A1 A2 A3 A4 A5
B1 B2 B3 B4 B5
some statements
A1、A2..などは数字です。処理されたファイルは次のようになります (ここでは任意の例)
some statements
A1 A2
B1 B2
B1+A2 B5-A4
B1+A2 B5-A5
B1 B2
A1 A2
some statements
ここで、たとえば、B1+A2 は算術演算の結果、つまり float である必要があります。どうすればPythonでこのようなことができますか? どういうわけか、ファイルをスキャンし、特定の行を計算して保存する必要があります(つまり、awkのように個々のフィールド)?
編集:
元の postscript ファイルのセクションは次のようになります
5918 4703 N
399 0 V
0 70 V
-399 0 V
0 -70 V
Z stroke
LT0
630 399 N 0 -3498 586 131 0 3490 h
1216 522 N 0 -3525 1171 204 0 3498 h
2387 699 N 0 -3557 1171 134 0 3525 h
3558 801 N 0 -3587 1171 55 0 3557 h
4729 826 N 0 -3613 1171 -20 0 3587 h
5900 780 N 0 -3624 585 -43 0 3613 h
% End plot #1
1.000 UL
LTb
0.500 UL
LTa
0.13 0.13 0.13 C 630 280 M
5855 0 V
stroke
ここで、N と h は
/N {newpath moveto} bind def
/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
このファイルには 6 つのポリゴンがあり、「LT0」行と「% end plot #1」行の間に定義されています。ポリゴンが定義されている行は、正規表現と一致しやすい
/^[0-9,-]+\ [0-9,-]+\ N\ [0-9]\ [0-9,-]+\ [0-9,-]+\ [0-9,-]+\ [0-9,-]+\ [0-9,-]+ h/
それらを次のようなものに変換したい
newpath
630 399 moveto
1216 522 lineto
2387 699 lineto
3558 801 lineto
4729 826 lineto
5900 780 lineto
.. .. ..
.. .. ..
したがって、絶対座標をポイントごとに定義したいので、新しいポリゴンにはより多くのコード行があります。単一行の置換は機能しません。