Autodesk Developer Network 2011
Autodesk
要素にデータを格納
1.スキーマを作成
2.読み取り/書き込みアクセス許可をスキーマに設定
3.スキーマに1つまたは複数のフィールドを定義
4.スキーマに基づいたEntity オブジェクトを作成
5.作成したEntity オブジェクトのフィールドに値を割り当てる
6.Entity オブジェクトを要素に追加する
§主要なクラス
§Schema クラス
§SchemaBuilder クラスでスキーマを作成
§FieldBuilder クラスでフィールドを作成
§Entity クラスのインスタンスはスキーマのインスタンスを保持
§サンプルとドキュメント
§ExtensibleStorage サンプルアプリケーション
§ExtensibleStorageManager SDK サンプル
§デベロッパガイド 22.5 章“Extensible Storage”(英語)
拡張ストレージの作成方法です。

まづ、スキーマを作成して名前を付けます。
読み取り/書き込みアクセスの許可をスキーマに設定します。
1つまたは複数のデータフィールドを定義します
そしてスキーマを作成を完了することで保存します。
そしてEntityクラスで定義されたオブジェクトを作成してフィールドに値を設定し、目的の要素にEntityオブジェクトを追加します。

主要クラスですが、

Schemaクラスはスキーマオブジェクトを定義し、SchemaオブジェクトはSchemaBuilderクラスを使用して作成します。フィールドはFieldBuilderクラスを使用して作成します。Entityクラスで定義されたオブジェクトはスキーマのインスタンスを保持します。

DEMO:

では、ここでデモを行います。

拡張ストレージのアプリケーションがすでにRevit にロードされています。EXECUTEめどっどにブレークポイントがセットしてあります。データをアタッチするために壁が作成してあります。ツールメニューから拡張ストレージでを実行します。ブレークポイントで止まったので、コードを見てきます。ExecuteメソッドのCommandDataからRevitのあぷけーしょんとドキュメントにアクセスできます。PickObject メソッドを使用し、UserInterface Selection そして、壁を選択してデータを追加します。データはピックした座標です。PickObjectメソッドは選択した壁と座標を取得できます。まづ面を選択するように指定します。Wallフィルタを指定いします。壁フィルタはISELECTIONFILTERを実装します。これは引数をとります。(???)このメソッドを使うと、REVITに実行が移り、壁のみを選択するように促します。
戻り値のPickObjectは参照(リファレンス)です。参照のデータフィールドの一つは要素IDです。もう一つは選択が行われた座標です。これで、選択した壁と座標を取得しました。
モデルにデータを追加します。トランザクションを開始します。新しいSchemaBuilderのインスタンスを作成します。GUIDを渡します。あたしいスキーマは読み込み専用でパブリックアクセスにします。書き込みアクセスはベンダーのみとします。ベンダーに書き込みアクセスを許可するのでベンダーIDを設定する必要がります。ベンダーIDはアドインマニフェストに設定したベンダーIDと同じです。つぎはフィールドを指定します。選択場所を保存しますので、単位タイプはリンクで、ドキュメンテーションのフィールドも指定します。スキーマ名を指定します。そしてこのデータフィールドのためのエンティティを作成します。フィールドを設定してスキーマをアタッチして、エンティティを要素に追加します。トランザクションをコミットします。それによってデータが壁に書き込まれます。