こんにちは、ISDです。
モデリングの作業をしていて、「あー、レイヤの命名規則こんな風にしておけばよかった…」と、なったことはありませんか?
まぁ、1つや2つのレイヤならチョコっと変更すればいいのですが、対象のレイヤが10とか20とかあった場合、少し面倒です。
RENAME コマンドでもできるのですが… ここは後学のため、あえてDynamoでやってみます。
今回は、エクセルで作成したレイヤのリストをもとにレイヤの名称を変更してみました。
エクセルで画層のリストを作成する
このようなレイヤがあるとします。
今回は、レイヤの名称の「橋梁」の部分を「〇▽橋梁」に変更してみます。
エクセルで、レイヤ名称の変更前と変更後のリストを作成します。
Sheet1 の A の列に変更前のレイヤ名、B の列に変更後のレイヤ名となるリストを作成します。
ここは、文字列の置換機能やキーボードマクロなどを活用して、効率よくいきましょう!
作成したら、.xlsx形式で保存します。
Dynamoでレイヤ名称を変更する
では次に、エクセルで作成したリストをもとにレイヤ名称を変更してみます。
使用するノード
File Path
[参照…]をクリックするとダイアログが開き、ダイアログから選択したファイルのパスを取得します。
File From Path
パスからファイルを開き、ファイルオブジェクトを作成します。
Data.ImportExcel
エクセルのファイル(.xlsx)からデータを読み込みます。
データは行ごとに一連のリストとして返されます。
このノードは、Windows に EXCEL がインストールされている必要があります。
List.Transpose
リストの行と列を入れ替えます。
List.FirstItem
リスト内の最初の項目を返します。
List.LastItem
リスト内の最後の項目を返します。
Document.Current
現在開いているAutoCADのドキュメントを取得します。
Document.LayerByName
指定した名前の画層オブジェクトを取得します。
Layer.SetName
画層オブジェクトの名称を設定します。
ノードを上図のように配置します。
少し補足説明します、
エクセルのデータを読んだあと、List.Transpose でリストの行と列を入れ替えています。
これにより、「変更前のレイヤ名称」のリストと「変更後のレイヤ名称」のリストに仕分けされた状態になります。
Dynamoでは、データを項目ごとに仕分けしてリスト化することがキモになることが多いので、 List.Transpose は お世話になる頻度が高いノードです。
Dynamo を実行すると
「橋梁_下部構造_フーチング」 → 「〇▽橋梁_下部構造_フーチング」
のようにレイヤ名称が変更されました。
今回の Dynamo のファイルは、こちらからダウンロードできますのでよろしければどうぞ。
コメント