Dynamo :: SubcategoryごとにGeometryを取得
DynamoでRevit内に配置されたFamilyからGeometryを取得する際、Categoryを元に選択することはよくあるかと思いますが、
試しに、RevitからリビングテーブルFamilyを、デフォルトのノードから取得すると、このように一つのリストに全てのGeometryが格納されます。
この場合、天板と幕板、脚のGeometryを別々に利用したい時には、インデックスなどから手動でリストを分けることになってしまいます。
そこで今回は、FamilyのSubcategoryを利用して、部材ごとにGeometryをリスト分けする方法について扱います。
レシピ
レシピは上図の通りです。(Dynamoのバージョンは2.0.1)
Subcategoryを取得するにあたり、Clockwork(2.x)とOrchidの2つパッケージを利用しています。
Orchidはパッケージマネージャーからではなく、GitHubからダウンロードします。
ダウンロードされたファイルの[Builds]フォルダ内にインストーラーが格納されています。
それでは、順を追って説明します。
1.FamilyにSubcategoryを割り当て
まずは、Subcategoryごとにリストを分けるため、Revit内で元となるFamilyにSubcategoryを割り当てます。
ここでは、[リビングテーブル]Familyを編集して、Subcategoryを追加しました。
2.FamilyTypeからFamilyを取得
続いてDynamoに移り、[Family Types]ノードで対象のFamilyを選択し、
Orchidの[GetFamilyDocument]ノードに繋ぎます。
3.CategoryからSubCategoryを取得
Familyとは別に、[Categories]ノードからCategoryを選択し、Clockworkの[Subcategories]ノードへ繋ぎます。
4.FamilyとSubcategoryからElementを取得
最後に、Orchidの[ElementByCategory]ノードでSubcategoryごとにElementを取得し、[Geometry]ノードに繋ぐと、Subcategoryごとにリストが分かれたGeometryを取得することができました。
おわりに
いかがでしたか。Subcategoryは手動で割り当てる必要がありますが、Dynamoでは扱い易くなったのではないでしょうか。
ぜひお試しください。
使用した主なノード
- [GetFamilyDocument] (Orchid > Elements > FamilyType > GetFamilyDocument)
- [Subcategories] (Clockwork > Revit > Elements > Subcategories)
- [ElementByCategory] (Orchid > Elements > Selection > ElementByCategory)
はじめまして。
大変すばらしいプログラムなので作成してみたいのですが
うまくOrchidをセットアップすることができませんでした。
[Builds]をダウンロードしフォルダ内にインストーラーで
インストールしたのですがDynamoで使うには
そのあとどうすればよろしいのでしょうか
お手数ですがご教授お願いできれば幸いです。
どうぞよろしくお願い致します。
コメントありがとうございます。
インストール完了後RevitとDynamoを再起動すればNodeのLibraryのAdd-Onsの一覧の中に出てくるはずなので、
・DynamoのバージョンとOrchidのバージョンがあっていない。
・[Settings → Manage Node and Package Paths]で、パッケージのパスが指定できていない。
がありそうです。
Revitから起動するDynamoのパッケージは、環境によりますが、通常[C:¥Users¥ユーザー名¥AppData¥Roaming¥Dynamo¥Dynamo Revit¥バージョン名¥packages]下に保存されているので、インストールがうまくいっていれば、こちらにOrchidのパッケージがあるはずです。