パスの分割と結合


あらー. 13日になってしまったよ. 意外とてこずったす. 非連結なパスを連結成分に分割するのと 複数のパスを一個のパスの非連結成分として結合するというのを 書きました. ただし, 結合の方は若干問題がある. どういう問題があるかというと, とりあえず適当な画像を開いて,
  1. まず開曲線のパスを作る.
  2. それと非連結な成分を同一パス内に作る

というのをやってみてくれ. できる? できないのですね. 順番が逆ならできます. 閉曲線を作ってから開曲線の 非連結成分を作るのはできる. しかし, その場合も, そのあと同一パス内部に別の非連結成分を作ることはできない.

なんでかというと, そういう仕様だからです.

しかしながら, できないはずのパスを生成することが, script-fu ならできます. なぜなら, パスの生データである配列を aset できるからな.

そういうデータを無理矢理与えてパスを作らせると, script-fu が死んだり, GIMP ごと死んだりいろいろアレげな事が起きるので, 開曲線を結合するときは気を付けてね. つまり, 選択範囲からパス生成なんかを使ってできたパスをどうこうする場合は, 全部閉曲線なので分割も結合も一切問題ないわけですが, 手でシコシコ作ったパスには, うっかり使うとダメげ.

パス分割のコードは一応, 末尾再帰になっている (なってないかも). わしにしては良く頑張った方でしょう. ひっひっひ. それじゃ 分割/結合が追加された スクリプト集は こちらです. あ. 今考えれば, 結合するパスのなかに開曲線が複数あったらエラーを出して止まるように 作る, ってゆう選択肢はあるわけだな. でもめんどくせえや. そうしたところで便利になるわけじゃないしな. それから, 存在しないパスの名前を書いても死にませんが (1.1.16, 1.1.18 で), エラー処理はちゃんと動いてません.

ウヒ. 今ごろ気づいたが, 特定のパスを結合するだけならパス窓の右クリックで 出て来る copy と paste を使えばできるのだ. それに, この方がずっと簡単だ. しかも上で書いた開曲線に関連した制限は, copy と paste を使うなら, ちゃんと メニューの当該項目が死に色になり, 実行できなくなるのだ. だから, 沢山ある全部のパスを結合する, とか そういう鬼蓄な状況以外は, 今回書いたパス結合スクリプトの方は存在意義無しである. わしが欲しかったのは連結成分への分割で, これはすげえ役に立っている. とりあえず一連の自作スクリプトと楢崎さんのパス関連スクリプトを使って, 画を一個作ってみた.


記事リストへ