V-nasClairスクリプトを媒介としたAI-CIM連携の可能性検証
AIとPythonでV-nasClairスクリプトを生成し、土木構造物の3Dモデル、ソリッド化、数量確認、CIM連携へつなげる試行を整理します。
今回、V-nasClairのスクリプト機能を使い、樋門の一部を3Dモデルにする検証を行いました。
川裏翼壁では、部材を分けて形状を作り、CAD上でソリッドへ変換して体積を確認するところまで進みました。一方、画面に立体が表示されても、そのまま数量を扱えるモデルになっているとは限りませんでした。
この記事で残したいのは、AI・Python・CADをどう分担させたかと、実際にモデルを作って初めて分かった、その違いです。
BIM/CIM成果品を一式自動で完成させる仕組みができた、という話ではありません。
通常のCAD操作と、今回試した方法
V-nasClairでは、断面形状やポリラインを作図し、押し出しやスイープなどの機能で立体を作れます。人が図面を見ながら形状や方向を指定する方法は、個別の形に対応しやすいものです。
今回考えたのは、その操作をすべてAIへ代行させることではありません。
樋門には現場ごとの違いがある一方、底版や壁のように、部材構成と寸法条件を整理して繰り返し扱える部分もあります。その範囲をテンプレート化し、CADへ渡す命令をプログラムから作れないかと考えました。
| 方法 | 形状を作るまでの進め方 |
|---|---|
| 通常のCAD操作 | 人が断面や線を選び、押し出し方向や延長を指定する |
| 今回の検証 | 人が構造と寸法条件を整理し、AIと作成した処理からスクリプトを出力する |
CADで使う「スクリプト」は、作図などの操作を記した命令列です。今回の検証では、この命令列を、構造物の条件とCADの間の受け渡しに使っています。
まず構造物を、意味のある部材へ分ける
題材にしたのは、川裏翼壁や川裏胸壁など、樋門の一部構造です。
川裏翼壁のU型ます形状では、底版、左右の側壁、背面壁、函体側の立ち上がり壁へ分けました。天端勾配や切り欠きがある場合も、どの部材の形が変わるのかを整理します。
川裏胸壁では、逆T式の本体、底版、たて壁、前趾・後趾、貫通開口、補強巻立て部、角落とし溝、可とう継手や目地との位置関係を確認しました。
単に「壁に穴がある」と見れば似た形でも、どの部分が何のためにあるかを取り違えると、寸法の与え方や部材の分け方が変わってしまいます。
ここは、AIへ図面を渡すだけでは安定しません。人が構造の意味を説明し、AIが整理した部材構成や座標の考え方を確認する必要があります。
配筋図の検証でも感じたことですが、形を作る前に、どの部材を何の条件で作るのかを決める仕事があるということです。
AI・Python・CADを分けて使う
整理した役割は、次の流れです。
- 人が構造と条件を整理部材の意味、寸法、対象範囲を決める
- AIが処理の作成を補助部材分解や座標計算を整理し、コードの作成・修正を手伝う
- Pythonが命令列を出力寸法から座標を計算し、V-nasClairへ渡すスクリプトを作る
- CAD上で人が確認生成した形状を見て、ソリッド化や体積確認を行う
AIに毎回すべての座標を考えさせるより、繰り返す計算をPythonの処理として残す方が、どの条件から値が出たのかを追いやすくなります。
例えば、部材の構成が決まっていれば、寸法から座標点を作る、面を分割する、部材ごとにレイヤを分ける、スクリプトファイルへ出力するといった処理をまとめられます。理論体積を別に計算し、CAD側の値と比較することも考えられます。
ただし、ここで目指している、寸法を入れ替えて繰り返し使えるテンプレート生成器は、まだ整備していく段階です。一つの形状を作れたことと、別の条件でも安定して使えることは分けて確認する必要があります。
AIは生成器の設計や修正を補助し、Pythonは決めた計算を繰り返す。CADは形状の確認と、CAD要素としての処理を担う。この分担で考えています。
立体に見えても、体積を確認できるとは限らなかった
今回の検証で、特に重要だったのがサーフェスとソリッドの違いです。
サーフェスは表面を表すもので、画面上では立体に見えます。一方、ソリッドは中身のある立体として扱うための要素です。
今回も、スクリプトで生成した形状は画面上では正しく見えていました。しかし、そのままではCADで体積を持つソリッド要素として扱えないケースがありました。
そこで試したのが、部材ごとに閉じた三角形TINを作り、V-nasClair上でソリッドへ変換する方法です。TINは、三角形の集まりで面を表す方法です。今回は部材の外側を三角形の面で閉じるように構成しました。
具体的には、部材を分け、それぞれの面を閉じた形にし、レイヤも部材ごとに分けてCADへ渡します。その後、CAD上で部材別にTINからソリッドへ変換し、体積を確認しました。
川裏翼壁では、底版、側壁、背面壁、立ち上がり壁について、この確認まで行うことができました。
画面で見た形だけで終わらず、数量を扱うための要素として認識されるかまで確認して、ようやく次の工程を考えられるようになりました。
もっとも、ソリッドになれば設計数量がそのまま確定するわけではありません。モデルの寸法や部材の重なり、数量として扱う範囲が適切かは、元の図面や数量の条件と照合する必要があります。
勾配・切り欠き・円形部材には、別の確認が残る
単純な直方体で形が作れても、すべての樋門へ使えるとは限りません。
天端の勾配や切り欠きがあると、面の分け方が変わります。部材の境界や角落とし溝も、外形をそれらしく描くだけでは不十分です。
円形の開口や部材では、外周面・内周面・端部面をどう閉じるかが課題になりました。円を多角形で近似し、三角形の面へ分割する方法で、数量確認へつなぐ見通しは得られました。
ただし、近似した形状である以上、表示が自然かだけでなく、必要な寸法や数量の確認に使えるかも見る必要があります。
現時点では、スクリプトだけで最終ソリッドまで一貫して作ることには課題が残っています。まずソリッド化できる下地を出力し、CAD側で変換・確認する方法が、今回の検証では現実的でした。
形状の先にある、属性・IFCとの接続
BIM/CIMで利用するには、形だけでなく、どの部材か、何の材料かといった属性や、部材の階層関係も必要になります。
川田テクノシステムのi-ConCIM_Kitの公式説明では、V-nasClairのアドオンとして、J-LandXML・IFCの入出力とIFC属性の付与を行えることが示されています。IFCは、モデルや属性を受け渡すための形式です。
このような既存機能へ接続できれば、今回作った形状を、その後の情報交換へ使える可能性があります。
ただし、属性を付けてIFCへ出力することや、積算へ連携することまでを、今回の自作処理ですべて確認したわけではありません。形状・体積の確認と、成果品としての情報整理は別の工程です。
| 今回の到達点 | 残っていること |
|---|---|
| 川裏翼壁の部材別形状を作り、CADでソリッド化・体積を確認 | 別の寸法や形状でも使えるかを検証する |
| 勾配、切り欠き、円形部材の表現方法を検討 | 派生形で面の閉じ方や数量を安定して確認する |
| AI・Python・CADの役割を整理 | 再利用できる生成器を整備する |
| 属性・IFCへつなぐ既存製品の機能を確認 | 自作モデルでの属性付与、受け渡し、数量連携を検証する |
BIM/CIM成果品へつなげる場合も、元請会社から受ける条件や必要な利用目的を確認し、それに合う情報を整える必要があります。
次は、一つの形を繰り返し使えるかを確かめる
今回の成果は、AIがCIMモデルを丸ごと作ったことではありません。構造を部材へ分け、座標を計算する処理へ落とし、CAD上で形と体積を確認する道筋が見えたことです。
次に進めたいのは、対象を広げることよりも、同じ部材構成で寸法が変わったときに、どこまで処理を再利用できるかの確認です。
手作業で作る方が早い形状もあると思います。テンプレートが使える部分と、個別に作図・確認した方がよい部分を分けなければ、維持する手間ばかり増えるかもしれません。
人が構造と条件を確認し、繰り返す計算や命令の作成を機械へ任せる。今回確認できた範囲を足場に、その分担が実務でどこまで役立つのかを、引き続き確かめたいと考えています。