こんにちは、ISDです。
前回は、エクセルで作成したレイヤのリストをもとにレイヤを作成してみました。
今回は、もう少しだけ実践的なことをやってみたいと思います。
国交省の「3 次元モデル成果物作成要領(案) 令和3年3月」では、構造全体、構造体、構成要素、部材の4段階に階層分けを行ってそれぞれの段階に属性情報を付与することとなっています。
ということで、後々オブジェクトへの属性情報を付与するという作業が出てくるのですが…
この作業を見据えて(あとで楽するために)、階層毎の属性情報を反映させたレイヤ名称で作成してみましょう。
エクセルで属性情報のリストを作成する
今回は、橋梁のモデルを例にとります。
下表のような構成で属性情報を付与することを考えてみます。
※階層4は省略
階層1 | 階層2 | 階層3 |
橋梁 | 上部構造 | 主桁 |
横桁 | ||
横構 | ||
床版 | ||
舗装 | ||
下部構造 | フーチング | |
壁 | ||
柱 | ||
梁 | ||
基礎構造 | ||
上下部接続部 | 支承 | |
落橋防止システム | ||
伸縮装置 | ||
付属物 | 高欄 | |
防護柵 | ||
排水施設 | ||
点検施設 |
これらの各階層の属性情報を反映した名称のレイヤを作成しておいて、CIMモデルの各オブジェクトを然るべきレイヤに配置しておけば、後々の属性情報の付与作業も効率よく行え…そうな気がします。
エクセルで属性情報のリストを作成します。
Sheet1 の A の列に階層1の属性情報、Bの列に階層2の属性情報、Cの列に階層3の属性情報のリストを作成します。
1行目は、見出し行です。
また、空白のマスが無いようにしてください。
作成したら、.xlsx形式で保存します。
属性情報を反映したレイヤ名称でレイヤを作成する
では次に、エクセルで作成した属性情報のリストをもとにレイヤを作成してみます。
使用するノード
File Path
[参照…]をクリックするとダイアログが開き、ダイアログから選択したファイルのパスを取得します。
File From Path
パスからファイルを開き、ファイルオブジェクトを作成します。
Data.ImportExcel
エクセルのファイル(.xlsx)からデータを読み込みます。
データは行ごとに一連のリストとして返されます。
このノードは、Windows に EXCEL がインストールされている必要があります。
Layer.Create
ドキュメント内にレイヤを作成します。
Document.Current
現在開いているAutoCADのドキュメントを取得します。
List.RestOfItems
リストの最初の項目を削除します。
String.Join
複数の文字列を1つの文字列に連結し、結合されるそれぞれの文字列の間に区切り文字を挿入します。
ノードを上図のように配置します。
少し補足説明します、
エクセルのデータを取り込んでいる部分ですが、Data.ImportExcel が返してくるデータは上図のように1行ごとに属性情報のリストになっています。
また、エクセルのデータの1行目は見出し行にしていましたので処理に必要ありませんので、List.RestOfItems でリストの最初の項目(1行目のデータ)を削除します。エクセルで属性情報のリストを作成する際に見出し行を入れなかった場合はこの処理は必要ないので、List.RestOfItems のノードは迂回してください。
各階層の属性情報からレイヤ名称を作成するため、Layer.Create の前に String.Join のノードを追加します。
String.Join は複数の文字列を1つの文字列に連結し、結合されるそれぞれの文字列の間に区切り文字を挿入してくれるので、階層1~3の属性情報を連結した文字列を作成できます。区切り文字には属性情報の中で使われていない文字を指定してください。※”_”(アンダースコア)あたりがよいと思います。
Dynamo を実行すると、 「橋梁_上部構造_主桁」のように、各階層の属性情報が名称に入っているレイヤが作成されます。
今回の Dynamo のファイルは、こちらからダウンロードできますのでよろしければどうぞ。