プロジェクトにロードされたファミリを配置するDynamo

yuki.minami
Contributor
Contributor

プロジェクトにロードされたファミリを配置するDynamo

yuki.minami
Contributor
Contributor

プロジェクトにロードされたファミリをタイプ含めて自動で配置できればと思っています。

他の方の投稿を参考にして、配置するファミリを選択してタイプを配置ということは出来ました。

しかし、現在の方法ですとファミリを一つ一つ選択する必要が出てしまいます。

 

理想としては、プロジェクトにロードされた全てのファミリから、カテゴリを選択してタイプ含めて全て配置したいです。

 

アドバイス頂ければ幸いです。
よろしくお願いします。


Revit 2022
Dynamo core 2.10.1.3976

Dynamo Revit 2.10.1.4002

 

0 件のいいね
返信
解決済み
712件の閲覧回数
11件の返信
返信 (11)

SUGKJ
Collaborator
Collaborator

タイプを配置するノードに流し込むリストをうまく作る必要があると思います。
具体的には、タイプのリスト構成と座標のリスト構成が同じになるようにしてみてください。
(=タイプと座標それぞれのリストに含まれる要素数が同じになるようにする。)

SUGKJ

EESignature

yuki.minami
Contributor
Contributor

返信遅くなり申し訳ありません。

私がDynamo初心者なため、そもそもプロジェクトにロードされたファミリをリスト化する方法が分かっておりません。
(プロジェクトに配置されているものは、リスト化出来ました。)

Orchidの「Families」を使うことで、配置されていないファミリをリスト化できましたが、1つ1つ選ぶ必要があり全てを選択するのは現実的ではありませんでした。

最初にロード済みのファミリをリスト化する部分でアドバイス頂けますと幸いです。

0 件のいいね

yasuyuki_kido
Collaborator
Collaborator

こんにちは

Element typesからファミリインスタンスを取得すると一式取得できますので

ファミリのカテゴリ毎にグループ分けをして、必要なカテゴリをインデックスで取得すれば

やりたい事が出来ると思います。

カテゴリ取得はClockworkパッケージを使用してます

 

プロジェクト内のファミリを取得.JPG

参考になればと思います。

Yasuyuki Kido
この投稿が参考になりましたら、「いいね」を押してください。
この投稿で問題を解決できましたら、「解決策として承認」ボタンを押してください。

EESignature

yuki.minami
Contributor
Contributor

スクリーンショット 2022-07-20 113037.pngClockworkパッケージを使うことで必要なリストを作成することができました。
ありがとうございます。

頂いたスクリーンショットではファミリ名を取得していましたが、私の場合はタイプを全て配置したいのでタイプ名を取得するようにしています。

最後にプロジェクト上のポイントに取得したタイプを配置したいのですが、そのまま繋げてもうまく動作しません。

こういった場合はタイプを取得したリストを一度、「Familiyinstance.bypoint」が受け取れるように形式を変換?する必要があるということでしょうか?

 

初歩的な質問で申し訳ないですが、ご教授いただければ幸いです。

0 件のいいね

yasuyuki_kido
Collaborator
Collaborator

前に進めてよかったですね。

2点ほどおかしいのではと思うところがありまして

1点目は

まずREVITの既定の振る舞いでタグやドアなどはホストがないと配置されないのはご存じですよね?

 共有頂いた画像を見ると含まれているように見えます。

 座標だけでの配置は出来ないので除外しないと上手くいかないと思います。

2点目は さんが投稿されている通り

 点の数と要素の数を合わせる事と、リストの階層を合わせる事が大事だと思います。

 

まずは今取り出したリストのカテゴリからホストなしで配置できる家具などを取り出し

 配置できるか確認されては如何でしょうか?

私もまずは小さい範囲で上手くいくかテストして少しずつ対象範囲を広げて試しています。

 それしか道はないと思いますので頑張ってください

 

Yasuyuki Kido
この投稿が参考になりましたら、「いいね」を押してください。
この投稿で問題を解決できましたら、「解決策として承認」ボタンを押してください。

EESignature

yuki.minami
Contributor
Contributor

ご指摘ありがとうございます。

1点目

今回はカテゴリが「衛生器具」のファミリを抽出しており、その中にホストが必要なファミリは含まれていません。

なので、ファミリの配置は問題ないと考えます。

2点目

以前作成したものでは、点の数と実際に配置されるタイプ数に差異があっても問題なく動作していたので、ここに関してはあまり気にしていませんでした。(タイプ数より点の数が少ないと配置されないものは出ていました。)

 

試しに点の数とリストの階層を揃えましたが、上手く動作しませんでした。

何か原因がご存じであればご教授いただければ幸いです。

スクリーンショット 2022-07-20 130811.png

yasuyuki_kido
Collaborator
Collaborator

返事ありがとうございます。

ご報告の通りだと原因がちょっと分かりませんね。。。

一旦 レベル指定で試しても同じでしょうか?

レベルも指定.png

 

 

Yasuyuki Kido
この投稿が参考になりましたら、「いいね」を押してください。
この投稿で問題を解決できましたら、「解決策として承認」ボタンを押してください。

EESignature

yasuyuki_kido
Collaborator
Collaborator

失礼しました。

 原因が分かりました。

 

Family typeにつないでいるのが文字列なので反応していません。

 繋ぐのはFamily Typeである必要があるのでグループ分けした状態から引っ張ってくる必要があります。

レベルも指定_02.png

レベルも指定_04.png

Yasuyuki Kido
この投稿が参考になりましたら、「いいね」を押してください。
この投稿で問題を解決できましたら、「解決策として承認」ボタンを押してください。

EESignature

yuki.minami
Contributor
Contributor

回答ありがとうございます。

グループ分けした状態から「Familiyinstance.bypoint」に繋ぐことで配置できました。

 

ただ、今のままだと特定カテゴリのファミリだけを配置することが出来ないので、もう少し調整してみようと思います。

今回はグループ分けした後に「List.GetItemAtIndex」を使ったことで文字列になってしまい上手く動作しませんでしたが、グループ分け前のタイミングで必要なカテゴリを抽出する必要があるということでしょうか?

若しくは、文字列になったものを「FamiliyType」に戻すような処理もできるのでしょうか?

yasuyuki_kido
Collaborator
Collaborator
解決済み

 

今のままだと特定カテゴリのファミリだけを配置することが出来ないので

⇒「衛生器具」という特定カテゴリのファミリを配置したのではないのですか?

今回はグループ分けした後に「List.GetItemAtIndex」を使ったことで文字列になってしまい

⇒厳密にいうと「GetParameterValueByName」で文字列に変換されます。

 「List.GetItemAtIndex」は指定されたインデックスの内容を取り出すだけです。

グループ分け前のタイミングで必要なカテゴリを抽出する必要があるということでしょうか?

⇒そうですね

 取り出したいカテゴリが数種類なのか二桁なのかによってアプローチは変えると思いますけど

 数種類ならコードブロックに書きますし、数十種類ならExcelをはさんで処理します。

 数種類ならこんな感じです。
 レベルも指定_04.png

若しくは、文字列になったものを「FamiliyType」に戻すような処理もできるのでしょうか?

⇒ 「FamilyType.ByName」を使えば出来ます。

Yasuyuki Kido
この投稿が参考になりましたら、「いいね」を押してください。
この投稿で問題を解決できましたら、「解決策として承認」ボタンを押してください。

EESignature

yuki.minami
Contributor
Contributor

色々とご教授ありがとうございました。

これ以上は質問が尽きなくなってしまうため解決策とさせて頂きました。

教えて頂いた方法で、ゴールが見えてきたので後は自分で調整してみようと思います。

大変助かりました。ありがとうございます。