Autodesk Developer Network 2011
Autodesk
建築モデリング
§デモ
此処でご紹介するサンプルは、アセンブリの要素をグループ化するサンプルです。

スライド中の画像に有る様にビューを3D直交モードにします。

そして2つのアセンブリを比較する方法をご紹介します。

デスクトップに移動します。

このモデルは壁と柱と2つの窓で構成されて、もう一つは壁と柱で構成されています。

登録された外部コマンドにてアセンブリを作成します。

このサンプルではアセンブリを自動で作成します。

Document doc = uidoc.Document;
この外部コマンドは、以前のサンプルと同じ様にアプリケーションやドキュメントにアクセスします。

ICollection<ElementId> elemIds = uidoc.Selection.GetElementIds();
ここでは、選択セットから要素IDを取得します。

要素IDとテゴリーIDでアセンブリインスタンスを作成します。

keyElemId = elemId;
categoryId = doc.get_Element(elemId).Category.Id;
break;
この場合、最初の要素に着目してテゴリー情報を使用します。

transaction.Start("Create Assembly Instance");
AssemblyInstance assemblyInstance = AssemblyInstance.Create(doc, elemIds, categoryId);
transaction.Commit();
トランザクションを開始します。アセンブリはカテゴリになるアセンブリを作成します。そしてトランザクションをコミットします。

transaction.Start("Set Assembly Name");
assemblyInstance.AssemblyTypeName = "My Assembly Name " + keyElemId.ToString();
transaction.Commit();
次に他のトランザクションを開始。
何故なら、このアセンブリに名前を設定するからです。
この場合は“My Assembly Name” と要素IDを合わせてアセンブリ名としています。
トランザクションをコミットします。

if (assemblyInstance.AllowsAssemblyViewCreation())
アセンブリビューが作成可能かを確認します。

transaction.Start("View Creation");
View3D view3d = AssemblyViewUtils.Create3DOrthographic( doc, assemblyInstance.Id );
View partList = AssemblyViewUtils.CreatePartList( doc, assemblyInstance.Id );
transaction.Commit();
再度トランザクションを開始して、スライドのように3Dビューとパートリストを作成します。

プロジェクトブラウザのアセンブリの下には2つのビューが確認出来ます。

これをダブルクリックするとビューが確認できます。


3Dビューに戻り、もう一つアセンブリを作成します。外部コマンドを実行します。

プロジェクトブラウザーにアセンブリが表示されます。

外部コマンドを実行してアセンブリを比較します。

アセンブリを2つ選択し、終了ボタンをクリックします。

AssemblyDifference difference = AssemblyInstance.CompareAssemblyInstances( firstInstance, secondInstance );
何が異なるでしょうか。

AssemblyDifferenceMemberCount diffMemberCount = difference as AssemblyDifferenceMemberCount;
if (diffMemberCount != null){
        TaskDialog.Show("Revit", "Elements counts differ: " + diffMemberCount.Count1 + " & " + diffMemberCount.Count2 );
        return;
}
アセンブリ内の要素の数が異なります。

では、プレゼンテーションに戻ります。