Docs

Search documentation

Shared docs and current release

Loading search…

日本語

apps/editor/docs/pages/scene.md

Sceneの操作

平面図の登録、縮尺設定、機器配置と配線の微調整。

This document is currently available in Japanese only.

Scene は、平面図上に機器・端子を配置して物理的な配線経路を編集する画面。 論理的な接続構造を扱う Diagram とは役割を分ける。 この文書は現在の操作と、座標・表示・操作判定の設計方針を扱う。 保存ファイルは project-file.md、アイコンの優先順位は icon-model.md を参照。

図面の準備

  • Hierarchy で対象を選んで Scene に切り替える。論理サブグラフでは Scene は利用できない。
  • 右側ツールバーの Upload background image から平面図の画像を登録する。 登録後は Replace background image で差し替え、Remove background で背景を外せる。
  • Calibrate scale を押し、図面上で実距離が分かる二点をクリックする。 表示された入力欄に正の距離をメートルで入力して確定する。途中の Esc で取り消せる。 再設定は Re-calibrate を使う。
  • Place item から Empty node、Wall outlet、EPS / riser、Patch panel、または登録済み製品を選び、 キャンバスをクリックして配置する。配置待ちの Esc で取り消せる。
  • ツールバーの Rename は Scene 自体の名前を変更する。機器の名前変更とは別の操作。

背景画像だけを登録しても実距離は決まらない。配線長を使う場合は縮尺を設定する。

操作

編集操作は Edit モードで行う。View モードでは機器の移動・リサイズ・名前変更・配線経路編集を行わない。

対象操作結果
表示範囲左下の拡大・縮小・全体表示ボタン表示倍率・範囲を変更する。保存座標は変わらない
表示範囲スクロール、またはマウス中ボタンでドラッグ図面をパンする
機器・端子本体をドラッグ配置を移動する
機器のサイズ選択 → ツールバーの「Resize node」→ ハンドルをドラッグ縦横比を維持して表示サイズを変更する
名前ラベルをダブルクリック、または選択時の「Rename」名前の入力を開始する
名前ラベルにフォーカスして Enter / Space / F2名前の入力を開始する
名前の入力中Enter / フォーカスを外す変更を確定する。IME 変換確定の Enter は編集確定に使わない
名前の入力中Esc入力を取り消す
配線クリック配線区間を選択する
選択済み配線の線分線本体をドラッグ線分を垂直方向に平行移動する。斜めの線分も傾きを維持する
選択済み配線の角付近線本体からドラッグ近くの既存の折れ点を移動する
選択済み配線Alt(Mac は Option)を押しながら線本体をドラッグ折れ点を追加して移動する
線本体からのドラッグ中Esc操作開始前の配線に戻す

線本体のドラッグは、先に配線をクリックして選択してから行う。 機器や端子に接する線分を平行移動するときは、必要な折れ点を追加し、機器・端子の位置を維持する。 通常時の折れ点マーカーは非表示で、ホバーまたはマーカーの選択時に表示する。 配線の距離表示は平面図の縮尺設定がある場合に表示され、選択中も維持する。 ケーブル種別の色の凡例は、配線を選択しても隠さない。

座標・ズームの設計

保存する図面座標と、画面上の操作しやすさを分ける。

  • 図面座標:配置と Link.bends は図面座標で保持する。ズームしても保存座標を書き換えない。
  • 表示:アイコン、通常のラベル、配線の太さは図面と一緒に拡大縮小する。線幅は図面単位で 2 × wireScale。
  • 操作判定:線を拾う透明な領域は画面上で最低 12 px の幅を確保する。既存の折れ点を優先する距離は画面上で 8 px。
  • 入力 UI:名前の入力欄と機器の選択枠は逆ズーム倍率で補正する。通常のラベルはこの補正の対象にしない。
  • ドラッグ:開始時の座標にポインターの移動差分を足す。掴んだ瞬間に折れ点をポインター位置へ飛ばさず、小数座標を保持する。

screenToFlowPosition で画面座標を図面座標に変換し、操作判定の距離には逆ズーム倍率を使う。 倍率変更に伴う再描画でも選択状態を保持する。

配線編集と Undo

線本体からのドラッグは、画面上で 3 px 以上動き、実際に経路が変化した時点でトランザクションを開始する。 ドラッグ中の更新はまとめ、確定した操作一回を Undo 一回にする。 クリックだけ、線分に沿った移動だけ、開始位置に戻った操作では不要な履歴や折れ点を残さない。

Esc、ポインター操作の取消、ウィンドウのフォーカス喪失、対象コンポーネントの破棄では、 元の折れ点を復元してトランザクションを閉じる。 これは wire-edit.ts が扱う線本体からのドラッグの仕様であり、 Svelte Flow の機器・端子・折れ点マーカーそのもののドラッグに同じ取消動作を保証するものではない。

折れ点の挿入先は afterIndex と既存の折れ点の順序から決める。 途中に端子がある配線でも、別区間の折れ点を誤って選択・並べ替えしない。

実装と検証

ファイル(apps/editor/src/lib/ 配下)責務
components/scene/SceneCanvas.svelte図面データと Svelte Flow の橋渡し、選択保持、表示範囲
components/scene/SceneNodeIcon.svelte指定アイコン優先の描画と画像読み込み失敗時の代替表示
components/scene/SceneNodeLabel.svelteラベル、名前入力、IME・フォーカス処理
components/scene/SceneEdge.svelte線・距離表示、ヒット領域、線本体のドラッグ開始
scene/node-geometry.ts図面上のサイズと操作用の倍率補正
scene/wire-drag.ts操作対象の判定、折れ点の挿入、開始位置からの移動計算
components/scene/wire-edit.tsポインター処理、取消、Undo のトランザクション

リポジトリルートから bun run --cwd apps/editor test と bun run --cwd apps/editor typecheck を実行する。 node-geometry.test.ts、wire-drag.test.ts、wire-edit.test.ts が 倍率補正・移動計算・区間内の順序・取消・Undo を検証する。

実画面では、縮小・拡大した図面での選択と微調整、長いラベル、指定アイコン、 機器・折れ点マーカーとのヒット領域の重なりを別途確認する必要がある。 機器・折れ点マーカー自体の最小ヒット領域、ラベルの衝突回避、数値による座標入力、 グリッドや他の機器へのスナップは、今回の精密操作の修正では追加していない。