見出し画像

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の座標を抽出する

画像1

計画線から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

画像2

ここで安心してはいけない。縦にずらっと並んだリストになってるので、行と列の入れ替えをしてから、CSVに出力するのだ!

リストの行と列を入れ替えるノード
List.Transpose

CSVに出力するノード
Data.ExportCSV

画像3

5. CSVを保存する場所を指定する

CSVファイルは、DWGファイルと同じ場所に保存したい。だって見つけやすいんだもん!とか考えたのが、困難の道であった。「DWGファイルのファイル名を取得する」ってノードが見つからないの・・・。Revit でも用意されてないっぽいから、Civil 3D なんて期待しちゃダメよね。力技で解決よ!

開いているファイルを取得するノード
Document.Current

ファイル名を取得するノード
Python Script
ナイからね、力技で自分で用意します。ノードの下の部分をダブルクリックすると、コードが表示されます。

画像4

最後の「OUT = 0」を、以下に変更して、「変更を保存」ボタンをクリック。

OUT = Application.DocumentManager.MdiActiveDocument.Name

画像5

成功だ~!

画像6

あとは、このファイル名からパスを取得して、CSVのファイル名をくっつける。

ファイル名からパスのみを取得するノード
FileSystem.DirectoryName

ファイル名のノード
String

文字をつなげるノード
String.Concat

画像7

最後に、「Data.ExportCSV」の「filePath」につなげてあげる。

画像8

DWGファイルと同じフォルダに「point.csv」が作成されます。こんな感じ。

画像9

6. 今回のサンプルファイル

欲しい方は、以下よりダウンロードしてください。


この記事が気に入ったらサポートをしてみませんか?