お絵描きソフトInkscape(インクスケープ)の使い方を初級レベルから上級レベルまで広く紹介しています。
情報追加のリクエストや分かりにくい点があれば下のCONTACTフォームからどうぞ。

Inkscapeでパスの交点にノードを追加する

 このページでは、Inkscapeを使ってパスの交点のところを折り曲げる(新しいノードを追加する)方法についてまとめてみたいと思います。

   (参考:パスを作成/編集

(2024.04.01更新)

 例えば次のようなケースです。

 2つのパスが互いに交差している状況で、交点のところで一方のパスを折り曲げたい場合、ちょうどその交点の上に新しいノードを追加する必要があります。

 もちろん他の目的でも交点の位置にノードを追加したい場合があるでしょう。

 パスの上のノードが無い位置にノードを追加するにはその位置をダブルクリックまたはCtrl+Alt+クリックすればいい(「パスを作成/編集」)のですが、交点をねらって正確にクリックするのは難しそうです。

 問題はどうやってぴったり交点の上に追加するかということです。

 どうやらInkscapeには「交点にノードを追加する」という直接的な機能がなく、ネットを検索すると「どうやったらいいですか?」というのはFAQになっているようです。

 よくみかける解決方法のアイデアは次のようなものです。

 スナップダイアログ上で次のようにパスの交点をスナップ対象に設定します。

 そうしておいて、ノードツールを選んでノードを追加したい交点のあたりにマウスカーソルを持っていくと、交点に近付いたところで画面に「交点の上です」というようなメッセージ(いわゆるツールチップ)が表示されます。

 日本語版のInkscapeではツールチップのメッセージが文字化けして読めないのはご愛嬌です。

 この状態でパス上をダブルクリックすれば、ちょうど交点の位置にノードを追加できるだろうというわけです。しかし実際はこのツールチップは交点の真上でなくても少しずれた位置でも表示されるし、もし真上で表示されるとしてもマウスカーソルを全く静止させたままでクリックするのは案外難しく、やってみるとどうしても少しズレた位置にノードが追加されてしまいます。


 もっと簡単に正確な交点の位置でノードを追加する方法のアイデアがあります。

 少し手間がかかりますが、以下のような方法です。

 まず、ノードを追加したいパスではないほうのパス(この例では緑のほう)を選択してCtrl+"D"を押して複製します。(「オブジェクトの分身を作るには」)

 そしてこの複製したパスを「切断用のパス」として用いてノードを追加したい位置でもう一方のパスを切断(カット)します。青いパスと複製した緑のパスを両方選択しておいてメニューでパス > パスをカットを操作すると、交点のところで青いパスが切断されます。(「パスの切断方法」)


 複製操作を行うと複製後のオブジェクトは一番上に重なっている状態になっているので、複製後のオブジェクトと切断対象のオブジェクトを両方選択して「パスをカット」を実行すると、切断対象のオブジェクトのほうが切断されるという理屈です。

 また「パスをカット」を実行すると上に重なっている切断用のパス(緑のパス)は消えるので、元のパスが消えてしまわないようにあらかじめ複製しておくという意味もあります。

 「パスをカット」を実行すると、ちょうど交点の位置で1本のパスが複数のサブパスにバラバラにされ、(当たり前ですが)その端に新しいノードが現れます。

 実際は「パスをカット」を実行すると切断された位置では次のように2本のサブパスの端のノードがぴったり重なった状態になっています。交点のところのノードが少しだけ小さいハンドルになっていて重なっているノードであることが分かります。

 次にこのぴったり重なっている端のところで2つのノードを合体して再びサブパス同士を連結します。連結は重なっている2つのノードを両方選択しておいてツールコントロールバーの次のボタンを押します。

 連結操作によって重なっている2つのノードが1つのノードに合体されます。合体後のノードはもちろん切断位置(パスの交点)に残るので、結果としてパスの交点のちょうどその位置に新しいノードを生成することができるというわけです。

 最終的にノードが追加された状態は次のようになります。

 なお、連結したい端のノードの複数のペアを同時に選択してもまとめて1回の操作で連結が可能ですし、端のノードでないノードを一緒に選択しておいても連結時には無視してくれるので、ノードツールでノードを表示させた状態でマウスドラッグして、連結したいノードを含めてざっくりと大き目の範囲を選択しておいてから連結操作すれば短い手数で連結を済ませることもできます。