1. はじめに:高額な専用土木CADからの脱却
★大規模造成工事の切盛計算が一瞬で無料でできます。
土木・測量・建設業界において、地盤の切土(カット)・盛土(フィル)の体積計算は、工事の積算・見積もり・施工計画の根幹をなす極めて重要な工程です。
しかし、これらの3D土量計算を正確に行うためには、百万円単位の導入コストや年間サブスクリプション費用がかかる高額な3D CADソフトウェア(Autodesk Civil 3Dや各種土木専用CADパッケージ)を導入するのが一般的でした。
「現場の現場による現場のためのツールを、オープンソースで手軽に構築できないか?」
この課題を解決すべく、オープンソースの3D CADである FreeCAD と Python を組み合わせ、独自ワークベンチ 「Construction ワークベンチ」 を開発しました。
本記事では、Excelの X, Y, Z 座標データから一瞬で3Dサーフェス(TINメッシュ)を自動生成し、さらに基準GLを設定して完全な「水密Solid(閉じた立体)」を構築、ブーリアン減算処理によって切土量・盛土量を立米(m³)単位で精密算出するアルゴリズムと実装ノウハウを徹底解説します。
2. 土木現場における土量計算の課題と限界
2.1 従来の点高法・平均断面法の弱点
従来、現場で広く使われてきた土量計算手法には主に以下の2つがあります。
- 平均断面法: 指定した測線(路線)に沿って一定間隔で断面を作成し、隣り合う断面の面積の平均に距離を掛けて体積を算出する手法。
- 点高法(メッシュ法): 対象エリアを格子(グリッド)状に分割し、各マスの中心高さの差分にセル面積を掛けて集計する手法。
| 計算手法 | 特長 | 弱点・課題 |
|---|---|---|
| 平均断面法 | 手計算や2D CADでも計算可能 | 断面と断面の間の複雑な地形変化を無視するため、局所的な凹凸で誤差が大きい |
| 点高法 | 3D的に広いエリアを一括計算できる | グリッドサイズ(ピッチ)の依存度が高く、計算精度と処理負荷のトレードオフが存在する |
特に点高法の場合、格子間隔を細かく設定するほど精度は上がりますが、広大な現場では計算点数が数万点に膨れ上がり、描画フリーズや処理の遅延を引き起こします。
2.2 なぜ「水密Solid(立体)×ブーリアン演算」なのか?
本プロジェクトで採用したのが、「3D Solid(立体)による幾何学的ブーリアン演算」 です。
- 現況地形のサーフェスから、任意の基準高まで壁と底面を垂直に伸ばした「現況ソリッド」を作成。
- 計画地形のサーフェスからも同様に「計画ソリッド」を作成。
- 3D CADカーネル(OpenCASCADE)の幾何演算エンジンを利用して、以下の集合算(ブーリアン差分)を実行:
- 盛土 (Fill Volume) = 計画ソリッド − 現況ソリッド
- 切土 (Cut Volume) = 現況ソリッド − 計画ソリッド
このアプローチの最大のメリットは、幾何学的なブーリアン空間交差として体積を厳密に計算するため、メッシュ分割ピッチによる近似誤差が発生しない 点にあります。さらに、算出された切土・盛土形状そのものが「閉じた3Dソリッドオブジェクト」としてCAD上に実体化するため、流体解析(CFD)やBIM/CIMの3D施工データとしてそのまま二次利用が可能となります。
3. 開発した「Construction ワークベンチ」の全貌
今回構築したシステムは、FreeCADのPython APIおよびPySide GUIツールキットを活用した拡張モジュールです。
3.1 ディレクトリ構成とモジュール設計
システム全体のディレクトリ構成は以下の通りです。役割ごとに完全に分離されたクリーンなアーキテクチャを採用しています。
3.2 堅牢な多言語化(i18n)とUI制御
Controller.py に組み込まれた自動パッチ機能により、ツール内で作成された QDialog や QMessageBox などのUIパーツは、ユーザーが日本語/英語を切り替えた際に動的に翻訳辞書を参照してテキストが自動的に置き換わる仕組みになっています。
4. コア機能①:Excel座標からの自動サーフェス(TINメッシュ)生成
4.1 座標系の単位変換(mmとmの壁を超える)
土木分野で扱われる測量座標データ(公共測量座標系など)は メートル(m)単位で記述されます。一方、FreeCADをはじめとする多くの3D CADシステムの内部標準単位は ミリメートル(mm)単位です。
この単位の相違による計算ミスを防ぐため、データインポート時に明示的な単位選択ダイアログを表示します。
- 土木座標(m): X, Y, Z の各数値を 1000 倍してFreeCAD空間に配置。
- CAD座標(mm): 数値をそのまま1倍で配置。
4.2 SciPy Delaunay三角分割を用いた高速メッシュ化
散布された X, Y, Z 点群データから地形サーフェス(TIN: Triangulated Irregular Network)を生成するため、Pythonの高度数値計算ライブラリ SciPy の Delaunay アルゴリズムを採用しました。
この処理により、数千~数万点の点群データであっても、一瞬で歪みのないスムーズな3D地形メッシュ(TIN)へと変換されます。
5. コア機能②:水密Solidの自動構築とブーリアン演算アルゴリズム
本ワークベンチの技術的ハイライトである、オープンサーフェス(開いたメッシュ)から完全な「水密Solid(閉じた立体)」を自動生成するアルゴリズムについて解説します。
5.1 なぜ従来のメッシュソリッド化は失敗するのか?
一般的なCADにおいて、メッシュをソリッドに変換する際、Part.Wire や Part.Face を使って境界エッジから面を張ろうとすると、「外周エッジが見つからない」「底面の生成に失敗しました」 といったエラーが頻発します。
この原因は、メッシュからCAD形状に変換する際の位相構造(Topology)において、隣接する三角形の辺同士の「縫い合わせ順序(Winding Order)」や微小な座標誤差により、境界線の順序付きループ(閉じたワイヤー)が正しく構成できないことにあります。
5.2 境界エッジ自動抽出と側面・底面の完全閉鎖アルゴリズム
この問題を解決するため、CADカーネルの線つなぎ処理に頼るのではなく、「位相幾何学(トポロジー)的に三角形メッシュレベルで最初から完全に閉じた水密立体をダイレクトに組立てるアルゴリズム」 を独自開発しました。
【完全水密ソリッド生成の5ステップ】
- 上面(Top Surface): 原本の地形サーフェスの全三角形をそのまま保持。
- 境界エッジ(Boundary Edges)の自動抽出:
すべての三角形の辺(エッジ)の出現回数をカウント。「出現回数が1回だけの辺」 が即ち「地形の最も外側の境界線」となります。 - 下面(Bottom Surface):
原本の全三角形の Z 座標を、指定された基準高(Z = Base GL)に置き換えて投影。この際、立体の外側を向くように頂点の並び順を反転させて法線ベクトルを下向きに設定。 - 側面(Side Walls):
ステップ2で抽出した境界エッジの各線分(P₁ → P₂)に対し、基準GL上の対応する点(B₁, B₂)を結ぶ四角形(ポリゴン)を定義し、それを2つの三角形に分割して側面を塞ぐ。 - ソリッド化(Part Solid):
集めたすべての三角形面(上面・下面・側面)から1つの閉じたメッシュを再構築し、Part.Solidに一括変換。
このアルゴリズムにより、どんなに地形の外周が入り組んで複雑であっても、エラー率 0% で確実に水密ソリッド化 することに成功しました。
5.3 OpenCASCADEカーネルによる体積(m³)の厳密算出
生成された現況ソリッド(solid_exist)と計画ソリッド(solid_plan)に対し、幾何切削を実行します。
6. 実践検証:リアルデータでの切盛土量計算結果
実際に準備した121点の地形測量座標データ(data.xlsx および data - コピー.xlsx)を用いて、開発したツールでの動作検証を行いました。
6.1 実装テストの実行結果
データ読み込みからソリッド生成、ブーリアン演算までの処理はわずか数秒で完了し、画面上に以下の精緻な計算結果が出力されました。
【Solidブーリアン 土量計算結果】
基準GL: Z = -975.245
- ▼ 切土 (Cut Volume) : 14,224.12 m³
- ▲ 盛土 (Fill Volume) : 9,966.02 m³
差引合計 (盛 − 切): -4,258.10 m³ (土量が差し引き約 4,258 m³ 余る計算)
6.2 3Dモデル上の可視化結果
計算完了と同時に、ツリービューには算定根拠となる3D立体モデルが自動登録・色分け表示されます。
- 切土部位(Cut Solid): 赤色(
ShapeColor = (1.0, 0.4, 0.4))で3D空間上に実体化。 - 盛土部位(Fill Solid): 青色(
ShapeColor = (0.2, 0.6, 1.0))で3D空間上に実体化。
これにより、「現場のどの領域をどれくらい削り、どこにどれだけ土を盛る必要があるか」がひと目で視覚的に把握できるようになりました。
7. BIM/CIMおよび流体解析(CFD)への応用展開
今回達成した「水密Solidモデルの自動生成」は、単なる土量計算にとどまらない大きな拡張性を秘めています。
① 土木BIM/CIM(3D施工データ)への統合
生成された切土・盛土ソリッドは、FreeCADから標準の STEPファイル(.step / .stp) や IFCフォーマット として書き出すことができます。これにより、i-Constructionが進む土木現場において、3D油圧ショベル等のICT建機用施工データや発注者提出用のBIM/CIM成果品としてそのまま活用できます。
② 流体解析(CFD)・防災シミュレーションへの適用
従来のアパチャー(開いた面)データでは流体解析の計算格子(メッシュ)を切ることができませんでした。本ツールで作成される完全水密ソリッドであれば、OpenFOAMやAnsys等の流体解析ソフトにインポートし、洪水時の浸水被害シミュレーションや地すべり発生時の土砂流出解析の計算ドメインとしてダイレクトに利用可能です。
8. まとめ:オープンソースCADが切り拓く土木DXの未来
本プロジェクトを通じて、高額な商業用専用CADソフトを導入することなく、オープンソースの FreeCAD + Python という完全無料の環境下で、極めて高度かつ実践的な土木3Dワークベンチを構築できることが証明されました。
本ワークベンチの価値まとめ
- 完全無料(¥0)の圧倒的コスパ: ライセンス費用をかけず、誰でもすぐに高度な土量計算環境を構築可能。
- 爆速の操作性: Excel/CSVデータを読み込んでボタンをクリックするだけで、数秒で切盛土量(m³)を自動算出。
- 失敗しない幾何アルゴリズム: ドロネー三角分割と水密メッシュ化技術により、外周エラーなしで確実に3Dソリッド化。
- 解析・BIM/CIM連携: 算出結果が3Dソリッドとして実体化するため、二次解析や施工データへの応用が容易。
建設・土木業界におけるデジタルツインやDXの推進が叫ばれる今、オープンソースを活用した内製ツール開発は、中小規模の現場やエンジニアにとって強力な武器となります。
今後も現場のニーズに応える機能拡張などを継続開発してまいります。

0 件のコメント:
コメントを投稿
コメントありがとうございます!承認後に公開されます