Polymorphism

ポリモフィズムの「ご提案」をお客様の目でご確認ください!

ヒアリングとご提案 参考例@

お問い合わせ〜プログラムの開発まで
複数の画層をまとめて管理

「画層グループ」機能の作成


ホーム > 業務案内 > コンサルティング > コンサルティング例 > ヒアリングとご提案 参考例@

お客様より初回ご連絡

  電話やメールでご連絡ください
ご要望 いくつかの画層(レイヤ)をまとめてオンやオフをしたい。
いくつかの画層をまとめた状態を保存したい。
イメージとしては、ちょうど図形の「グループ」のように画層も
「グループ」のようにまとめて操作できると良い。
 
対象製品 AutoCAD 2009
AutoCAD 2004(検討中)
 
ご質問 上記要望は実現可能か?
 

ポリモフィズムご回答
実現可能と思われます。
詳細な打ち合わせをさせていただければと思います。
打ち合わせまでに機能概要と、ヒアリングのポイントや問題になりそうな場所を可能な限り事前調査いたします。

打ち合わせ=「ヒアリング」と「ご提案」

  お客様のご要望をお伺いしながら、実現の可能性を「ご提案」させていただきます。
   
ご要望内容の確認
伺っているご要望内容をご確認いたします。
複数の画層をグループ化し、そのグループに名前を付けて管理できるようにします。
本機能を「画層グループ」と呼ぶことにします。
画層グループ単位での表示のオンやオフを切り替えられるようにします。
画層グループの新規追加や削除を可能にします。
   
実現性についてのご説明
「画層グループ」を実現するための技術的なしくみについてご説明いたします。
「グループ」のように、図形ではない情報を管理するためには、AutoCADの「ディ
クショナリ」領域を活用することが最適です。また、「ディクショナリ」領域は、名
前を付けて各種情報を保存する「スタイル」のような管理にも適しています。図
のように「ディクショナリ」領域に「画層グループ」ディクショナリを用意し、その下に
名前付きの「レコード(要素)」(「グループ1」、「グループ2」の部分)を複数つな
げて管理する手法を利用します。名前付きの各「レコード(要素)」内に、その
グループに含めたい複数の画層情報を保管します。
このディクショナリ領域はそのまま図面(DWG)ファイルに保存されますので、設定情報は基本的に各図面(DWG)ファイルに保存されます。
項目 実現するデータ形式
画層グループ ディクショナリ オブジェクト
レコード(要素) ディクショナリ オブジェクト
レコード内の情報 拡張データ
   
システム概要とポイントのご説明
システムの概要とポイントについてご説明します。これらの項目を中心に打ち合わせを進めてまいります。
下記内容は、打ち合わせ前に私どもで事前にまとめさせていただきます。
そのため、打ち合わせの際にはお客様の大切なお時間を無駄にすることなく、要点の整理された打ち合わせが可能です。
ポイント ポイントの概要
運用要件
運用時に希望する操作の方法や手順、条件やルールなどについての内容を検討します。
管理機能
画層グループ機能は、名前付きの「レコード(要素)」を作成したり削除したりする、名前付きの「レコード(要素)」の管理機能が必要となります。この管理の機能や条件を検討いたします。
情報の保存
画層グループ内に、複数の名前付きの「レコード(要素)」が格納されることになるため、これらの情報を保存するかしないか?また、保存する場合にはどこに保存するのか?などを検討いたします。
基本機能
画層グループのグループ単位(名前付きの「レコード(要素)」単位)での実行したい機能(オン/オフの切り替えなど)を検討いたします。
その他注意事項
その他、想定される状況の説明や、その状況に対応するかを検討いたします。
インターフェース
画層グループコマンドの実行から、各種入力や設定を行なうダイアログボックスの項目や機能に関しまして検討いたします。
基本構造
画層グループ機能のシステム構造や条件などにつきまして検討いたします。
開発環境
画層グループのプログラムを作成するための開発環境につきまして検討いたします。

   
各機能の詳細打ち合わせ
各ポイントの機能や動作について「ヒアリング」と「ご提案」を繰り返し、詳細を詰めて行きます。

運用要件の確認
実際の業務や運用の目的や期待する動作につきましてご確認をいたします。


要件1 AutoCADのコマンド形式で実行するものとします。(メニューやツールバーにも設定)
要件2 コマンドは専用のダイアログボックスを表示するのみの機能とします。
要件3 各種設定及び機能の実行は専用ダイアログボックス上でおこないます。
要件4 自動実行などによる利用はありません。
要件5 画層グループ単位の機能はON/OFF(フリーズ/フリーズ解除)とします。
要件6 画層の色、線種、ロック、印刷スタイルについては操作しないものとします。
要件7 通常コマンドと同様にUNDOに対応します。
要件8 画層グループの内容は何らかの形式で保存します。
要件9 開発環境に関する要望や指定はありません。
ご注意:
開発環境に指定がある場合(「VB希望」や「C++希望」など)、打ち合わせの段階から開発環境を考慮する必要があります。ご希望の機能や動作が、指定の開発環境で実現可能かどうかも考慮しながら仕様を検討する必要があります。
 


画層グループ管理機能について
画層グループ機能は、複数画層をまとめた状態(「レコード(要素)」)に名前を付けて管理できるシステムです。そのため、この「レコード(要素)」を新規に作成したり、削除したりできるようなしくみが必要です。このしくみを「画層グループ管理機能」と呼ぶことにします。
そこで、「画層グループ管理機能」には以下の機能を定義します。
機能
内容
新規作成
新しい画層グループ(「レコード(要素)」)を名前を付けて作成できます。作成する画層グループには、そのグループに追加したい「画層」を複数選択し、追加できます。グループに追加したい画層の選択は、ダイアログ上の画層のリストから選択できるようにします。
新規作成の機能は、画層
グループの「名前を付ける」
という作業と、「グループに
したい画層を選択する」とい
う2つのプロセスから構成さ
れます。この2つのプロセス
を実行した後に、「新規作
成」ボタンを押して新しい画
層グループを作成します。
ダイアログ上
必要な機能
[新規作成]ボタン
[名前入力]ボックス
[全画層]リスト
[グループへ追加]ボタン
[グループから除外]ボタン
[グループ内画層]リスト

画層グループ内に追加したい画層を1つも選択しない状態(空)の画層グループが想定されます。この空の画層グループを運用上許可しますか?
選択画層なし(空)を許可
必ず1つ以上画層を選択

 
削除
作成された複数の画層グループの中から、不要な画層グループ(「レコード(要素)」)を選択して削除できます。作成されている画層グループは、ダイアログ上にてリストで一覧表示され、リスト上で選択したグループを削除することができるようにします。
ダイアログ上
必要な機能
[グループ削除]ボタン
[全グループ]リスト
 



既存の画層グループを編集する機能は必要ありませんか?
画層グループの新規作成と削除だけではなく、既存の画層グループの編集は運用上必要ありませんか?この機能が無いと、作り間違いや利用後の変更などができずに不便かも知れません。既存の画層グループを「全グループ」リストより選択し、その画層グループの内容(グループに含まれる画層)の追加や除外を可能とします。
編集機能は、現在検討している(追加・削除)ダイアログの機能を流用することで、あまり工数をかけずに実現することが可能です。
流用 削除機能の「全グループ」リストから、編集したい画層グループを選択
新規作成の「全画層」リスト、「グループへ追加」ボタン、「グループから除外」ボタン、「グループ内画層」リストの4つでグループへの画層の追加や除外を実行
また画層グループ自体の名前を変更することができた方がより便利に利用できます。画層グループ名の変更ボタンを用意します。実際の名前の入力は「新規作成」の際に利用する名前の入力ボックスを流用できます。
ダイアログ上
必要な機能
[名前変更]ボタン

新規作成の[新規作成]ボタンを押した際に表示される名前入力ボックス
 
を採用します



既存の画層グループをコピーする機能は必要ありませんか?
画層グループを新規に作成する際、内容の似た画層グループをベースとして作成した方が便利で効率が良い場合があります。このような場合は、既存の画層グループをコピーした画層グループを新規に作成し、その内容を編集することとなります。
本機能は上記編集機能を採用した場合にご提案させていただきます。
流用 削除機能の「全グループ」リストから、コピーしたい画層グループを選択
またコピーする画層グループは新規に作成されるため、名前を入力する必要があります。実際の名前の入力は「新規作成」の際に利用する名前の入力ボックスを流用できます。
ダイアログ上
必要な機能
[コピー]ボタン

新規作成の[新規作成]ボタンを押した際に表示される名前入力ボックス
 
採用しません
 


情報の保存について
要件8」より、画層グループの設定内容を保存する必要があります。主な保存の方法として、以下の2通りの方法をご提案させていただきます。どのような用途で画層グループを利用するのかという運用上の内容や作業工数などと合わせて、どの保存方法が最適かをご検討します。

画層グループ情報の保存先とその方法につきまして、以下の2通りの方法が考えられます。
図面毎に画層グループ情報を保存
画層グループ専用のテキストファイルに保存


基本機能について
要件5」より、画層をグループ化し、グループに含まれる複数の画層に対して、画層のON/OFF(フ
リーズ/フリーズ解除)を実行します。そこで画層グループのダイアログ上に、以下の機能を実装
する必要があります。「全グループ」リストよ
り目的の画層グループを選択し、ON/
OFF(フリーズ/フリーズ解除)をトグルスイ
ッチで設定します。
ダイアログ上
必要な機能
[全グループ]リスト
[ON/OFF]トグルスイッチ
[フリーズ/フリーズ解除]トグルスイッチ

画層グループの画層をすべてONやOFFにした場合、画層グループ「意外」の画層についての処理を検討する必
要があります。想定される
処理は以下の3つの機能
となります。
ダイアログ上
必要な機能
[反転]トグル
「操作なし」トグル
画層グループと反対の動作を実行
特に何もしない
上記2動作をモードで切り替え




その他注意事項
画層グループ機能を実際に使用する際、運用上の条件を決めておかないといけない部分や、発生しうる特殊なケースなどを想定しておく必要があります。ここではこれらの不安要素に対して仕様や運用ルールなどを決めておきます。

画層グループに追加できる画層は、他の画層グループに含まれている画層と重なっても良いか?
例えば、画層グループAと画層グループBが存在する場合、画層グループAに含まれる「画層1」を画層グループBでも指定できるようにするかを決めておく必要があります。

画層グループに含まれる画層の共有につきまして、以下の2通りの対応が考えられます。
画層グループに含まれる画層の共有を許可
画層グループに含まれる画層の共有を許可しない


 


画層グループ機能により、複数の画層をまとめてON/OFFを切り替えられるが、画層グルー単位で画層を切り替えてしまうと、それまで1つずつ画層を設定してきた状態が失われてしまう。
画層グループによる画層のコントロールは大変便利ですが、それまで1つずつ個別にONやOFFを設定したきた画層の状態を一斉に変更してしまいます。そのため、画層グループ機能実行前の状態に画層を設定しなおすは面倒な作業となってしまうかも知れません。


現在の全画層の状態を保存する機能は必要ありませんか?
画層グループの使用により画層の状態を一斉に変更してしまう前に、その画層の状態を保存しておきたい場合に、その時点での全画層のON/OFF(フリーズ/フリーズ解
除)の状態をすべて記録できるようにしま
す。この機能により全画層の状態をいつで
も好きなときに保存することができます。
ダイアログ上
必要な機能
[画層状態保存]ボタン
「画層状態復元」ボタン
なお、全画層の状態を保存した後に作成や削除された画層に関しては何も操作は行なわないものとします。


全画層の状態の保存スタイルとして、以下の2通りの保存方法が考えられます。
保存状態に「名前」を付けて複数指定できるようにする
状態の保存は「保存」ボタンを押した時点の1つだけとする



画層情報の保存データ構造について検討します。画層の保存におきまして、以下の2通りの方法が考えられます。運用上なにを重要とするかをもとに検討する必要があります。
画層の保存情報は「名前」が重要である
画層の保存情報は「オブジェクト」が重要である

  
を採用します



全画層の状態を名前を付けて複数保存する機能を検討しても良いかも知れません。
画層グループの運用が始まると、複数の画層を便利に管理できる反面、一度の変更作業で多くの画層のON/OFF(フリーズ/フリーズ)が一斉変更され、画層の状態が大きく変わることが多く発生するようになります。この状況を考えると、将来的には画層の状態に名前を付けて複数保存できる機能を検討すると、運用がより便利になると思われます。次期開発の際には是非ご検討ください。
  


画層グループ内に保存されている画層(情報)と、実際の画層のデータが必ずしも一致しているとは限らない。
画層グループ内に含まれる画層の内容と、実際の画層が必ずしも一致しているとは限りません。これは以下の4通りの状況から発生いたします。
状況1 画層の削除 PURGE(名前削除)機能により画層が削除されてしまった場合、画層グループ内に削除された画層の情報が残ってしまいます。
例)画層グループに「画層A」保存中
  実際の画層「画層A」→削除
状況2 画層の名前変更 画層グループ内の情報を「画層名」で管理する場合、画層の名前を変更してしまうと関連が途絶えてしまいます。「オブジェクトID」や「ハンドル番号」などのオブジェクト情報で管理する場合、この問題は発生しません。
例)画層グループに「画層A」保存中
  実際の画層「画層A」→「画層B」へ
状況3 削除された画層が同じ名前で新規作成された場合 画層グループに含まれる画層が一度削除された後、再び同じ名前で新規作成された場合、その画層は、画層グループ内の画層と名前は一致しています。この場合、これらを一致する画層とみしますか?
例)画層グループに「画層A」保存中
  実際の画層「画層A」→削除
  「画層A」新規作成
状況4 名前変更した画層の変更前の名前と同じ名前で新規作成された場合 画層グループに含まれる画層が名前変更され、代わりに元の名前で画層が新規作成された場合、どの画層が画層グループ内の画層と一致していることになるか、仕様を決めておく必要があります。
例)画層グループに「画層A」保存中
  実際の画層「画層A」→「画層B」へ
  「画層A」新規作成
  (内部的には「画層B」、名前は「画層A」が一致)


上記特殊な状況も踏まえて、画層グループ内で複数の画層情報を管理するための情報の保存方法(データ構造)を検討する必要があります。
本件は「基本構造」にて検討します。



画層グループ内の画層情報と、実際の画層の情報の整合性をどのタイミングで評価するかを検討します。評価のタイミングとして以下の3通りが考えられます。
画層の削除や名前変更を常に監視。変更と同時にグループも更新
画層グループコマンド実行時(ダイアログ起動時)
ダイアログ内「全グループ」リストより画層グループ選択時

 
 


インターフェース
要件3」より、画層グループの基本操作は、すべて専用のダイアログボックス上で操作することとします。これまでの打ち合わせにより、ダイアログ上に必要な機能は以下の通りです。



打ち合わせ時
右図



[新規作成]ボタン 新規作成(N)
[名前変更]ボタン 名前変更(R)
[削除]ボタン 削除(D)
[全グループ]リスト グループ名(G)
[全画層]リスト 全画層(L)
[グループへ追加]ボタン 追加(A)>>
[グループから除外]ボタン <<除外(E)
[グループ内画層]リスト グループ内(I)


打ち合わせ時
右図



[ON/OFF]トグル ON(O)
[ON/OFF]トグル OFF(F)
[フリーズ/解除]トグル フリーズ(Z)
[フリーズ/解除]トグル フリーズ解除(T)


打ち合わせ時
右図


[反転]トグル 設定値の反転(X)
[操作なし]トグル 操作なし(N)

打ち合わせ時
右図


[画層状態保存]ボタン 現在の状態を保存(S)
[画層状態復元]ボタン 保存状態に戻す(U)


ダイアログボックスのタイプには以下の2タイプが存在します。どちらのタイプが運用上適し
ているでしょうか?
ダイアログを閉じないと次の操作にうつらないモーダル形式(AutoCAD標準)
ダイアログを開いたまま操作の可能なモードレス形式

 



全画層リストにフィルタ機能を追加し、目的の画層を効率良く探せるようにした方が良いかも知れません。
運用の際、画層の数が大変多くなることが予想されます。大量の画層の中から目的の画層を探すことは大変手間のかかる作業です。画層名一部などを指定することで、候補の画層を絞ることで目的の画層が探しやすくなります。次期開発の際には是非ご検討ください。
 


基本構造
これまでの打ち合わせ内容を踏まえまして、画層グループの基本構造の仕様を決めます。画層グループ機能のベースとなるのは、画層グループとして名前付きの「レコード(要素)」を複数管理する構造(この構造はディクショナリで実現可能です)と、各「レコード(要素)」内に保存する複数の画層の情報になります。複数の情報の保存は「拡張データ」形式での保存により実現可能です。
ここで決めなければいけないことは、画層グループ内に保存する画層情報です。この画層情報は、実際の画層と密接な関係を持ち、画層情報から目的の画層が特定できなければいけません。
画層情報の保存や管理は、内部的な構造のためプログラムの設計サイドに一任されてしまいがちですが、実際には運用と深く関わっていることが多いため、運用の方向性と合わせてお客様との打ち合わせが必須の部分です。

この画層情報と画層の関係を保存するための方法には以下の4通りの方法があります。の3番目の項目(画層情報と実際の画層が一致しなくなる特殊な状況)の対応も含めて最適な情報の管理方法を検討します。
画層の名前のみで管理
画層のオブジェクトIDで管理
画層のハンドル番号で管理する方法
画層の名前とオブジェクトIDで管理する方法

 


開発環境について
要件9」より、画層グループシステムの開発環境としてどの開発環境が良いかをご提案させていただきます。メンテナンスや他のシステムとの関係から、開発環境にご指定がある場合を除き、これまでの打ち合わせ内容から総合的に最適な環境をご提案いたします。
「最適な開発環境がどのように決定するのか?」「なぜその開発環境が選択されたのか?」という点も含めてお客様に説明しながら、それぞれのメリットやデメリットなどと合わせましてお客様に説明させていただきます。

AutoCADのAPIより今回の開発に最適な開発手法をご提案いたします。
AutoLISP(LISP)
ObjectARX (C++)
AutoCAD VBA (Visual Basic)
.NET API (C#)

 
 
これらの「打ち合わせ」は、詳細な仕様が決まるまで数回実施されることもあります。

お見積もりを見る
プログラム設計〜開発開始

  これまでの打ち合わせをもとに設計及び開発を開始します。