【CADプログラミング】 STEP中間ファイル ap203とap214
○ STEPデータを使用する前提
定義されているISOの規格は多種多様ですが、今回想定する規格は
・ap203(模型のみで色によるラベリングなし)
・ap214(模型のみで色によるラベリングあり)
の二つを採用する予定です。
また、今回は私の会社ではとある部品メーカーのCADを利用しながら見せていくと言う形式を取る予定ですが、このページ内では著作権もあるので提示しない予定です。一応、自分自身でそれに近いCADデータを作って、どんな構想をして行ったか、と言うことを伝えたいと思います。
○ STEPデータの構文
APIは以下のサイト(英語)
ただし、詳しい説明はありません。実際にいろいろなCADソフトの挙動を見ながら、これはこうだというのを理解していく必要があります。また、そもそもSTEPファイルは「モデリングデータの規格で容器に過ぎない」ので、あるソフトで作られたSTEPファイルが、違うソフトで読めないということは普通にあります。
現時点で、数値情報が見える構文をちょっとだけお見せします。とは言っても簡単なものばかりです。
ボトムアップで追っていって、少しずつモデルを使うと言う形式をとっています。3Dセンサの連携ではそもそも面形状だとか、面がどう囲われているか、と言った情報を使うことは今のところないので、たやすく理解できるところだけを追求しています。
# 1358 = VERTEX_POINT('', # 1833)
頂点を定義します。#~と書いているところに、実際の座標を表します。
# 1833 = CARTESIAN_POINT( '', 1.00, 2.00, 3.00)
カルテシアン点ですが、これは直交座標系での座標位置を表します。カルテシアン座標と言うのは、直交座標のことで、かの有名な数学者のデカルト(Des Cartes)を文字っているようですよ。
# 1832 = VECTOR('', # 2199, 1000.0)
ベクトルを表します。第二引数は方向、第三引数はベクトルの長さを表します。
# 2199 = DIRECTION('', (0.00, 1.00, 0.00))
方向を表します。この場合の方向は、y軸に並行な正規化単位ベクトルになりますね。
# 1225 = LINE('', # 1543, # 1544)
線を表します。直線を定義するには、第二引数を表す直線の中に含まれる一つの点と、第三引数を表す並進ベクトルがあれば定義できますね。
# 1242 = CIRCLE('', # 1584, 17.5)
円ですね。第二引数の#1584は基準面、第三引数は円の半径を表します。
# 1584 = AXIS2_PLACEMENT_3D('', # 2146, # 2147, # 2148)
円は円の方程式(X-X0)^2+(Y-Y0)^2=R^2の形式で表されますね。この円の方程式を定義するのに必要なものは、円の中心と円の法線ベクトルが必要になります。この場合、第二引数は直行座標、第三引数は法線ベクトル、第四引数は法線ベクトルと垂直な方向の1本目のベクトルになります。例えば、
# 1242 = CIRCLE( '', # 1584, 17.5)
# 1584 = AXIS2_PLACEMENT_3D('', # 2146, # 2147, # 2148)
# 2146 = CARTESIAN_POINT( '', 3.5, 0, 0)
# 2147 = DIRECTION( 0.0, 0.0, 1.0)
# 2148 = DIRECTION( 1.0, 0.0, 0.0)
とかけば、z軸に垂直で、x軸を一番目の平行なベクトルとした、(3.5, 0, 0)の座標が中心の円を、半径17.5で描画しなさい、と言うことになります。プログラミングと似ていますね。
# 3166 = B_SPLINE_CURVE_WITH_KNOTS( '', 3, ( ... ), ..., ..., ..., ...)
この構文は長いので、現時点では取り扱っていませんが、Bスプライン曲線を表します。この解析が出来るレベルにまで到達すると、それなりに面白そうなことが出来るかと思います。ただし、センサ側の空間分解能との兼ね合いが難しいので、今回の業務ではこの内容は省いています。
# 1033 = EDGE_CURVE('', # 1223, # 1224, # 1225, T. );
最後ですが、辺を表します。# 1223, # 1224には、最初に示した”頂点”が定義されます。また、# 1225はカーブの形状(直線?円弧?Bスプライン曲線?などなど)が入ります。最後のパラメータはsame_senseと言うパラメータで、まだわかっていませんが、ここはもっと上位の構文と関係がある部分と予想しています。
この記事が気に入ったらサポートをしてみませんか?