【CADプログラミング】 STEP中間ファイルについて

最近、業務で取り扱っている話題で、”CADデータをモデルとした測定装置”をテーマにしています。


○概要

グリッド投影などによる3D復元、ToFカメラや共焦点顕微鏡などを活用した3D計測技術が昨今では注目が集まっています。

3Dセンサは、厳密には自由空間全体を捉えるようなものではなく、その光学的な測定域の事情から計測範囲や光軸、分解能などに制約を受けており、”銀の弾丸”はない状況で、現状では用途に応じたセンサを活用することが基本です。

一方で、3Dセンサと仮想空間のデータの結合について。

CADモデリングを組み合わせて、3Dセンサのデータと相関を取ることで、理想化された擬似的な画像生成を実現したり、2D-3D空間を繋げたりすることで、新たなシステムのアイディアを産むことができるかもしれません。

そこで、CADモデリングデータと実測データを繋ぎ合わせることを目指して、現在業務を進めています。

○STEPデータ

CADデータで最も有名なデータフォーマットはSTL(Stereolithography)であり、CADソフトや3Dプリンタなどの用途で多様に使用されています。

STLはメッシュ集合で構築することで物体のモデリングを実現しています。このメッシュに粗密をつけたり、形状(三角形、四角形など)を与えることで、その構造を実現します。メッシュ、と聞くだけでも、とりあえずは有限要素法との相性は良さそうですね。

ですが、STLデータはソフトウエアでもかなり取り扱いがブレることから、用途は幅広いながらも、表現方法に大きな違いが現れやすいとも言われています。またCADの統一されたファイルフォーマットはSTL以外にも幅広くあります。

こうした事情から、一貫したファイルフォーマットを実現するために、CADには「中間ファイル」と呼ばれるものが存在します。その一つがSTEPファイルと呼ばれるもので、ISOに準拠したものとなっています。

○STEPファイルを取り扱うソフトウエア

無償、有償と幅広いです。開発言語についても、JavaやRuby用途のものがありますが、今回はC++(とPython)で適用できるものに絞ります。詳しいことは、スウェーデン王立工科大学の学位論文に記載がありましたので、ご紹介します。


私が最初選択した時はSTEP Inc.社の「ST-Developer」と言うソフトウエア、ないしライブラリを適用する方が良いと思いましたが、これは有料となってしまっており、投資対効果が見込めるまでは活用が難しいと判断しました。


次に候補になったのは、cascade 3d。これを利用したFreeCADと呼ばれるソフトは、比較的動作が安定して使いやすい(個人的な感触)印象がありますが、残念なことに、LGPLライセンスです。これを企業活動で採用すると、GPL違反に近い状態になります。

回避策を立てたとしても動的リンクをかます使い方になる可能性が高いと思うので、ライセンス問題はグレーのままですし、処理速度も懸念事項になります。もちろん、勉強用だとか、OSSへの発展という意味では最も良い候補かもしれませんが、企業コンプライアンスへのリスクがあるので、今回は避けました。


最終的には、NIST(アメリカ国立標準技術研究所)がリリースしているSTEPcodeを採用することになりました。基本的にはSTEPデータを読み取って、そのデータ構造を明らかにするためのライブラリ、という程度の認識ですので、実を言うとそこまで便利な機能はないと言う印象です。

とはいえ、構文レベルでは大体読み取ってくれるのがありがたいです。英語レベルが少し弱いこともあって、構文理解に少し時間がかかりましたが、STEPはある程度学べれば難なく理解できるもののようです。

Windows, Linuxで動作します。ただ、最近になってこのライブラリを導入することになったせいか、割と盛り上がってた時期(2015年くらい?)と比べるて移植環境が微妙に変わったみたいなので、詰まりました。その辺りもここで色々公開しつつ、たまにgithubも見つつで動向を見ていきたいと思います。

○ 本シリーズについて

・STEPCodeの導入やトラブルが起きやすい部分

・Pythonとの連携

・STEPデータの読み込み/書き込み、文法構造の理解

・数値計算(当面は円筒座標系を取り扱います)


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