Design Patterns for Computer Aided Design

Design Patterns for Computer Aided Design

デザインパターンを活用したサンプルとして,ウィンドウズ上で動作する CAD アプリケーションの設計を行ってみようと思います.


CAD の概要

「Mini CAD」
ウィンドウズ上で動作する簡易な CAD.

■ 基本仕様

最低限以下の仕様を満たす.

概要
機能
図形描画 図形 (群) を描画する
図形追加 図形 (線分,矩形,楕円) を追加する
ペン設定 図形は,属性 (線の色や太さ,線種等) を持ち,様様な属性 (色や太さ,線種等) で追加出来る
図形選択 任意の図形・グループを (一つ又は複数) 選択する
グループ化 選択された図形・グループ群をグループにする
図形移動 選択された図形・グループ (群) を移動
図形回転 選選択された図形・グループ (群) を回転
図形複写 選択された図形・グループ (群) を移動
図形削除 選択された図形・グループ (群) を削除
図形編集 選択された図形・グループ (群) を編集 (ペン等の変更,形状の変更)
保存 ファイルに保存する
読出 ファイルから読み出す
終了 終了する

■ 仕様の拡張

将来的に例えば以下のように仕様を拡張していきたい.

図形の種類 線分,矩形,楕円以外のものも扱えるようにしたい
保存/読出フォーマットの種類 CAD なので (謎),SVG (*1) とか DXF (謎) とか扱える形式を増やして行きたい
カーソル形状の変更 状況に応じてカーソルの形状が変化
グリッド グリッド (格子) を表示/非表示することが出来,マウスでの座標指定時にグリッドが有効であればグリッドがピックされる (マウス等で点が拾える)
ピック 図形上の点とか図形と図形の交点とか,延長線上の交点とか,色色な点がピック出来る
設定の保存 前回起動時の設定等を記憶する
画面のスクロール
画面の拡大/縮小
画面の分割
複数のウィンドウでの同時編集
ポップアップ メニュー 右クリック等でそのオブジェクトに関するポップアップ メニューを出し,オブジェクトへの操作が指定出来る
用紙の設定
印刷 プリンタの設定,印刷プレビュー,印刷,出来れば他のデバイス (プロッタとか) にも出力したい
Undo/Redo
ヘルプ

等等

(*1) こんなやつ (謎).

■ 実装

ウィンドウズ アプリケーション (MDI) として C++ (等) で作成.


コンセプト (と云うか拘ることに決めた部分)


設計例 (未完)

・2001/11/02

取り敢えず設計を始めてみました.
何処か (何処) で見たような構造に成っているように見えるかも知れませんが,「パターンを活用する事が狙い」ですので其れで良いのです.
負け惜しみのように聞こえるかも知れませんが,決して其のような事は有りません (謎).


■ 図 1. クラス図 メイン

・2001/11/02

図 1


■ 図 2. クラス図 『Base Library』パッケージ

・2001/11/02

図 2


■ 図 3. クラス図 『Windows』パッケージ

・2001/11/02

図 3


■ 図 4. クラス図 『FrameWork Library』パッケージ

・2001/11/02

図 4


■ 図 5. クラス図 『Mini CAD』パッケージ

・2001/11/02

図 5


実装例 (未完)

・2001/11/02

実装も始めています.其の内公開します (多分).