Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

画面構成と工程タブ

SEPIKA の画面は、上部の工程タブ、左右のアイコン列とドック、中央のビュー、下部のドックと ステータスバーからなります。工程タブは解析の流れ(モデル→荷重→解析→結果→設計→レポート)に 沿って並びますが、進行をロックしません。構造設計は断面変更と再計算を繰り返すため、 いつでも前の工程へ戻ってモデルを編集できます。

本節では、画面の構成と、ドック・ログ・stale(要再計算)・断面編集の現行挙動を紹介します。 準備計算の内容とモデル整合性チェック(診断)は 準備計算、結果の表示は 結果の表示を参照してください。

実装参照:工程タブは sepika_app::app::Tab(crates/sepika-app/src/app/mod.rs)が表し、タブ切替時のドック配置は sepika_app::app::App::apply_tab_preset(crates/sepika-app/src/app/actions/mod.rs)が設定します。

工程タブとドックの初期配置

上部ツールバーに、ファイル操作、工程タブ、Undo/Redo のボタンを置きます。工程タブは モデル・荷重・解析・結果・設計・レポートの 6 つです。

工程タブのクリックは、その工程に適したドック配置へ切り替えるプリセットとして働きます。 以後のドック開閉・パネル切替の手動変更は妨げません。

タブ切替時の初期配置
モデル左ドックにナビゲータ、下ドックにモデル表、右ドックにインスペクタ
荷重左ドックにナビゲータ、下ドックに荷重表、右ドックにインスペクタ
解析右ドックに ① 準備計算、下ドックにログ
結果左ドックにナビゲータ、右ドックにインスペクタ
設計右ドックにインスペクタ
レポート変更なし

結果が陳腐化しているときは、結果タブ・設計タブの見出しに「⚠」を付けます(stale)。

実装参照:タブ見出しの stale マークは sepika_app::app::App のツールバー描画(crates/sepika-app/src/app/mod.rs)が Staleness::results_stale を見て付けます。

左右のアイコン列(ドック)

左右の端に、ドックを開閉するアイコン列を常時表示します。対象のドックが開いていてそのパネルが アクティブならクリックで閉じ、それ以外は開いてそのパネルをアクティブにします。

  • 左アイコン列:ナビゲータ、作成パレット
  • 右アイコン列:インスペクタ、① 準備計算、静的解析、固有値、増分解析、時刻歴応答、質点系

右ドックは縦スクロールでき、① の番号は準備計算の見出しにだけ付けます。各解析パネルの先頭には 最終実行時刻と stale 表示を出します。左右ドックは境界をドラッグして幅を変えられます。

実装参照:左右のアイコン列は sepika_app::app::panels::activity_bar(crates/sepika-app/src/app/panels/activity_bar.rs)が描き、アイコンは assets/icons/ の SVG です。

中央の 3D ビューの操作

中央の 3D ビューは、左ドラッグで回転、右ドラッグで平行移動(パン)、スクロール(ピンチ)で ズームします。回転は水平ドラッグが鉛直軸まわり、垂直ドラッグが俯仰のターンテーブル方式で、 ロールしないため建物の鉛直軸は常に画面で縦に保たれます。回転・パン・ズームの操作割り当ては 3D を描く全てのビューで共通です。ズームは、ポインタがそのビューの描画領域にあるときだけ 反応します(重なったポップアップの手前側だけが反応します)。

実装参照:回転・パン・ズームの入力は sepika_app::viewer::camera::CameraState::apply_pointer_input(crates/sepika-app/src/viewer/camera.rs)が担います。

下ドックとステータスバー

下ドックのタブは、ログ・モデル・荷重・準備計算・診断です。

  • ログの見出しには件数を付けます。
  • 準備計算は陳腐化しているとき「準備計算 *」と表示します。
  • 診断は最新で不備があるとき「診断 (E…/W…)」とエラー・警告の件数を表示します。

ステータスバーのアイコンでも下ドックを開けます。ファイル名には未保存の変更があるとき 「●」を付け、実行中はジョブ名と経過秒を表示します。解析結果の状態は ✓ 最新 / ⚠ stale / ▷ 未実行 の 3 つです。直近のエラーは 1 行で表示し、クリックすると 下ドックを開いてログタブへ切り替えます。右端には部材・節点・断面の件数を表示します。

実装参照:下ドックのタブとステータスバーは sepika_app::app::panels::status_bar(crates/sepika-app/src/app/panels/status_bar.rs)が描きます。

イベントログ

イベントログは、セッション内の出来事(エラー・注意・ジョブの開始と完了など)を時系列で 保持し、下ドックに表示します。レベルは 情報・注意・エラーの 3 段階で、時刻は アプリ起動からの経過時間です。保持件数の上限は 1000 件で、超えたものは古い順に捨てます。

  • エラーはステータスバーの 1 行表示とログの両方へ反映し、下ドックを自動で開きます。 エラーが埋もれると解析結果を誤って信頼しかねないためです。
  • 注意はステータスバーとログへ反映しますが、自動では開きません。
  • 情報はログのみに残します。

実装参照:ログは sepika_app::app::{LogLevel, LogEntry, EventLog}(crates/sepika-app/src/app/mod.rs)が保持し、発行は sepika_app::app::App::{report_error, report_notice, report_info}(crates/sepika-app/src/app/actions/mod.rs)に集約しています。

ナビゲータと選択の連動

左ドックのナビゲータは、階・部材グループ・断面・材料・荷重ケース・結果ケースなどのツリーです。 ナビゲータの選択と、3D ビューのピック、下ドックのテーブル行は双方向に連動します。 解析結果ツリーの操作はナビゲータの解析結果ツリー、 荷重ケースのツリーは荷重の入力を参照してください。

3D 選択から断面編集(共有編集と複製)

3D ビュー・ナビゲータ・テーブルで部材を選ぶと、右ドックのインスペクタにその断面と 算定プロパティを表示します。

  • 編集はその断面を参照する全部材へ波及します。インスペクタには 「この断面を使う N 部材に影響」と影響する部材数を常時表示し、意図しない部材まで 変わることを防ぎます。
  • 並びの**「複製してこの部材だけ別断面に」**は、新しい断面を作って選択中の部材だけを 割り当て直します。

いずれも編集トランザクションとして適用するため Undo でき、断面の作成・符号と階の操作は 断面の符号と階を参照してください。

実装参照:インスペクタの断面表示と波及は sepika_app::app::panels::inspector(crates/sepika-app/src/app/panels/inspector.rs)が担い、波及の編集は sepika_edit::EditSectionShape、複製は sepika_edit::DuplicateSectionForMember を用います。

stale(要再計算)

モデル・荷重・断面などを編集すると、依存する結果や設計が古くなり(stale)、 利用者へ再計算が必要であることを示します。重い解析を勝手に走らせない方針のため、 再計算は手動です。

  • 結果タブ・設計タブの見出しに「⚠」、ステータスバーに「⚠ stale」を表示します。
  • 再計算は解析タブの実行ボタンで行います。
  • 準備計算・診断にも、それぞれの陳腐化表示(「準備計算 *」・診断件数)があります。
  • 通り芯のように解析結果へ影響しないデータの編集では、結果を stale にしません。

実装参照:陳腐化は sepika_app::app::Staleness(crates/sepika-app/src/app/mod.rs)が保持します。解析へ影響する編集は Staleness::mark_edited、影響しない編集は Staleness::mark_non_calc_edited が更新します。