プロジェクトにロードされたファミリをタイプ含めて自動で配置できればと思っています。
他の方の投稿を参考にして、配置するファミリを選択してタイプを配置ということは出来ました。
しかし、現在の方法ですとファミリを一つ一つ選択する必要が出てしまいます。
理想としては、プロジェクトにロードされた全てのファミリから、カテゴリを選択してタイプ含めて全て配置したいです。
アドバイス頂ければ幸いです。
よろしくお願いします。
Revit 2022
Dynamo core 2.10.1.3976
Dynamo Revit 2.10.1.4002
解決済! 解決策の投稿を見る。
回答者: yasuyuki_kido. 解決策の投稿を見る。
タイプを配置するノードに流し込むリストをうまく作る必要があると思います。
具体的には、タイプのリスト構成と座標のリスト構成が同じになるようにしてみてください。
(=タイプと座標それぞれのリストに含まれる要素数が同じになるようにする。)
SUGKJ
返信遅くなり申し訳ありません。
私がDynamo初心者なため、そもそもプロジェクトにロードされたファミリをリスト化する方法が分かっておりません。
(プロジェクトに配置されているものは、リスト化出来ました。)
Orchidの「Families」を使うことで、配置されていないファミリをリスト化できましたが、1つ1つ選ぶ必要があり全てを選択するのは現実的ではありませんでした。
最初にロード済みのファミリをリスト化する部分でアドバイス頂けますと幸いです。
こんにちは
Element typesからファミリインスタンスを取得すると一式取得できますので
ファミリのカテゴリ毎にグループ分けをして、必要なカテゴリをインデックスで取得すれば
やりたい事が出来ると思います。
カテゴリ取得はClockworkパッケージを使用してます
参考になればと思います。
Yasuyuki Kido
この投稿が参考になりましたら、「いいね」を押してください。
この投稿で問題を解決できましたら、「解決策として承認」ボタンを押してください。
Clockworkパッケージを使うことで必要なリストを作成することができました。
ありがとうございます。
頂いたスクリーンショットではファミリ名を取得していましたが、私の場合はタイプを全て配置したいのでタイプ名を取得するようにしています。
最後にプロジェクト上のポイントに取得したタイプを配置したいのですが、そのまま繋げてもうまく動作しません。
こういった場合はタイプを取得したリストを一度、「Familiyinstance.bypoint」が受け取れるように形式を変換?する必要があるということでしょうか?
初歩的な質問で申し訳ないですが、ご教授いただければ幸いです。
前に進めてよかったですね。
2点ほどおかしいのではと思うところがありまして
1点目は
まずREVITの既定の振る舞いでタグやドアなどはホストがないと配置されないのはご存じですよね?
共有頂いた画像を見ると含まれているように見えます。
座標だけでの配置は出来ないので除外しないと上手くいかないと思います。
2点目は SUGKJさんが投稿されている通り
点の数と要素の数を合わせる事と、リストの階層を合わせる事が大事だと思います。
まずは今取り出したリストのカテゴリからホストなしで配置できる家具などを取り出し
配置できるか確認されては如何でしょうか?
私もまずは小さい範囲で上手くいくかテストして少しずつ対象範囲を広げて試しています。
それしか道はないと思いますので頑張ってください
Yasuyuki Kido
この投稿が参考になりましたら、「いいね」を押してください。
この投稿で問題を解決できましたら、「解決策として承認」ボタンを押してください。
ご指摘ありがとうございます。
1点目
今回はカテゴリが「衛生器具」のファミリを抽出しており、その中にホストが必要なファミリは含まれていません。
なので、ファミリの配置は問題ないと考えます。
2点目
以前作成したものでは、点の数と実際に配置されるタイプ数に差異があっても問題なく動作していたので、ここに関してはあまり気にしていませんでした。(タイプ数より点の数が少ないと配置されないものは出ていました。)
試しに点の数とリストの階層を揃えましたが、上手く動作しませんでした。
何か原因がご存じであればご教授いただければ幸いです。
返事ありがとうございます。
ご報告の通りだと原因がちょっと分かりませんね。。。
一旦 レベル指定で試しても同じでしょうか?
Yasuyuki Kido
この投稿が参考になりましたら、「いいね」を押してください。
この投稿で問題を解決できましたら、「解決策として承認」ボタンを押してください。
失礼しました。
原因が分かりました。
Family typeにつないでいるのが文字列なので反応していません。
繋ぐのはFamily Typeである必要があるのでグループ分けした状態から引っ張ってくる必要があります。
Yasuyuki Kido
この投稿が参考になりましたら、「いいね」を押してください。
この投稿で問題を解決できましたら、「解決策として承認」ボタンを押してください。
回答ありがとうございます。
グループ分けした状態から「Familiyinstance.bypoint」に繋ぐことで配置できました。
ただ、今のままだと特定カテゴリのファミリだけを配置することが出来ないので、もう少し調整してみようと思います。
今回はグループ分けした後に「List.GetItemAtIndex」を使ったことで文字列になってしまい上手く動作しませんでしたが、グループ分け前のタイミングで必要なカテゴリを抽出する必要があるということでしょうか?
若しくは、文字列になったものを「FamiliyType」に戻すような処理もできるのでしょうか?
今のままだと特定カテゴリのファミリだけを配置することが出来ないので
⇒「衛生器具」という特定カテゴリのファミリを配置したのではないのですか?
今回はグループ分けした後に「List.GetItemAtIndex」を使ったことで文字列になってしまい
⇒厳密にいうと「GetParameterValueByName」で文字列に変換されます。
「List.GetItemAtIndex」は指定されたインデックスの内容を取り出すだけです。
グループ分け前のタイミングで必要なカテゴリを抽出する必要があるということでしょうか?
⇒そうですね
取り出したいカテゴリが数種類なのか二桁なのかによってアプローチは変えると思いますけど
数種類ならコードブロックに書きますし、数十種類ならExcelをはさんで処理します。
数種類ならこんな感じです。
若しくは、文字列になったものを「FamiliyType」に戻すような処理もできるのでしょうか?
⇒ 「FamilyType.ByName」を使えば出来ます。
Yasuyuki Kido
この投稿が参考になりましたら、「いいね」を押してください。
この投稿で問題を解決できましたら、「解決策として承認」ボタンを押してください。
色々とご教授ありがとうございました。
これ以上は質問が尽きなくなってしまうため解決策とさせて頂きました。
教えて頂いた方法で、ゴールが見えてきたので後は自分で調整してみようと思います。
大変助かりました。ありがとうございます。
お探しの情報が見つからないときは、コミュニティで質問しましょう。困っている人がいたら、情報を教えてあげましょう。