InfraWorksのようにCivil3Dで国土地理院数値地図の建物データを3D表示させたい。
という野望で前回はポリラインの高度をTINサーフェスの高さに合わせるコマンドを作成しました。

Civil3Dの.NET APIでポリラインの高度をTINサーフェスに合わせて設定する

今回はポリラインを押し出して3Dソリッドを作成し、色をランダムに設定するような機能を追加しました。

シーケンス 03
コマンドを実行動画

.NETでポリラインから3Dソリッドを作成するのは今回初挑戦。
色々検索してこちらのページを参考にして作ってみました。

http://www.acadnetwork.com/index.php?topic=226.0

ポリラインをリージョンに変換して3Dソリッドを作成されています。
solid.Extrude(region, 30.0, 0.0) という部分ですね。
しかしこれで作成した3Dソリッドは押し出しの高さのプロパティを持たないんですねぇ。

003
Extrudeメソッドで作成した3Dソリッド

これだと後から高さを変更したくても変更できません。
出来上がって欲しいのはプロパティのソリッドタイプが「押し出し」で高さのプロパティを持っている3Dソリッドです。

002
高さのプロパティをもった押し出しソリッド

そんな3Dソリッドを作成する方法を探し続けてやっと見つかりました。

https://forums.autodesk.com/t5/net/create-an-extruded-solid3d-from-a-polyline/td-p/3328487

メッセージ3/5にある
sold.CreateExtrudedSolid(curv, New Vector3d(0, 0, 20), New SweepOptions()) という部分です。
CreateExtrudedSolidメソッドを使えばいいという事が分かりました。
ランダムに設定した色はもうひと工夫が必要ですが、とりあえず野望は達成という事で。

001

(宮田)