Civil 3D の Dynamo で、計画線の座標をCSV出力してみた
Civil 3D の Dynamo の第2弾です。今回は仕事で必要だったので、チャレンジしてみました。これを Civil 3D の機能でやろうとすると、
1. 計画線からCOGOポイントを作成
2. COGOポイントからCSVを出力
という手順になるのですが、これがね、意外とね、手間だったりするのですよ。計画線ごとにポイントグループ作ったりとか、見た目がちょっとアレなので、スタイル変更したりとか。
なので、Dynamo でラクチ~ン!ってなりましたよ~!
1. お題
計画線を選択し、IPの座標をDWGファイルと同じフォルダにCSVで出力する。
2. 環境
Civil 3D 2021.2 Update
Dynamo Core 2.5.2.7915
Dynamo Civil 3D 2.5.2.860
Civil3DToolkit 1.1.18(インストール方法は、「Civil 3D の Dynamo を、超絶初心者が作ってみた」の「7.パッケージをインストールする」を参照)
3. 計画線からIPの座標を抽出する
計画線からIPの座標を抽出するノード
FeatureLine.GetPIPoints (Civil3DToolkit)
オブジェクトを選択するノード
Select Object
Dynamo Playerでオブジェクトを選択したいので、右クリックして「入力」にチェックを入れてね!
で、この2つのノードは「Civil Object」と「FeatureLine」なので、繋げても動いてくれません。変換が必要になります。
Civil Object から FatureLine に変換するノード
FeatureLine.ByObject (Civil3DToolkit)
4. 座標をCSV出力する
「FeatureLine.GetPIPoints」の「Point」のまま出力すると、「Point (X=・・・」とか出力されて、泣きたくなることに。XYZに変換する必要があります。
ポイントからX、Y、Z座標を抽出するノード
Point.X、Point.Y、PointZ
リストを作成するノード
List Create
ここで安心してはいけない。縦にずらっと並んだリストになってるので、行と列の入れ替えをしてから、CSVに出力するのだ!
リストの行と列を入れ替えるノード
List.Transpose
CSVに出力するノード
Data.ExportCSV
5. CSVを保存する場所を指定する
CSVファイルは、DWGファイルと同じ場所に保存したい。だって見つけやすいんだもん!とか考えたのが、困難の道であった。「DWGファイルのファイル名を取得する」ってノードが見つからないの・・・。Revit でも用意されてないっぽいから、Civil 3D なんて期待しちゃダメよね。力技で解決よ!
開いているファイルを取得するノード
Document.Current
ファイル名を取得するノード
Python Script
ナイからね、力技で自分で用意します。ノードの下の部分をダブルクリックすると、コードが表示されます。
最後の「OUT = 0」を、以下に変更して、「変更を保存」ボタンをクリック。
OUT = Application.DocumentManager.MdiActiveDocument.Name
成功だ~!
あとは、このファイル名からパスを取得して、CSVのファイル名をくっつける。
ファイル名からパスのみを取得するノード
FileSystem.DirectoryName
ファイル名のノード
String
文字をつなげるノード
String.Concat
最後に、「Data.ExportCSV」の「filePath」につなげてあげる。
DWGファイルと同じフォルダに「point.csv」が作成されます。こんな感じ。
6. 今回のサンプルファイル
欲しい方は、以下よりダウンロードしてください。