STEPファイルのフォーマット概要
- STEPファイルは、ISOの標準規格でありISO 10303です。 異なるCAD、CAM 間でCADデータを交換するため中間ファイルフォーマットです。
- 同様な中間ファイルフォーマットとしてIGES(Initial Graphics Exchange Specification)があります。
- ISO 10303の正式な名称は、「Industrial automation systems and integration – Product data representation and exchange」です。
STEPファイルのデータ構造
ISO-10303-21; ←ISOのバージョンと枝番
HEADER; ← ヘッダーセクション
FILE_DESCRIPTION( … )
FILE_NAME( … );
FILE_SCHEMA ( … );
FILE_POPULATION( … ); ← STEPバージョン3以降
SECTION_LANGUAGE( … ); ← STEPバージョン3以降
SECTION_CONTEXT( … ); ← STEPバージョン3以降
ENDSEC; ←ヘッダーセクションの終わり
ANCHOR; ← アンカーセクション
・・・ 省略 ・・・
ENDSEC; ← アンカーセクションの終わり
REFERENCE; ←リファレンスセクション
#9998 = <http://www.hoge1.com/>;
#9999 = <http://www.hoge2.com/>;
ENDSEC; ←リファレンスセクションの終わり
DATA; ←データセクション
#5=APPLICATION_CONTEXT(‘automotive design’);
・・・ 省略 ・・・
#50=VERTEX_POINT(”,#49);
#51=CARTESIAN_POINT(”,(5.0,0.0,0.0));
#52=DIRECTION(”,(-1.0,0.0,0.0));
#53=DIRECTION(”,(0.0,0.0,-1.0));
・・・ 省略・・・
ENDSEC; ←データセクションの終わり
SIGNATURE; ←シグネチャーセクションり
・・・ 省略・・・
ENDSEC; ←シグネチャーセクションの終わり
END-ISO-10303-21; ←ISOのバージョンが有効な範囲の終わり
- STEPの最新バージョンは3です。
- バージョン3は、外部リソースへの参照、ZIPアルゴリズムに基づく圧縮アーカイブを使用したデータ共有、UTF-8エンコード、およびデジタル署名の使用をサポートしています。
- コメントはC言語と同じく/* */で囲まれた部分です。
- ファイルの拡張子はstep,step,p21のいずれかです。
データセクション
- DATAセクションには、1つの特定のエクスプレススキーマに従ってアプリケーションデータが含まれます。このデータのエンコードは、いくつかの簡単な原則に従います。
- データ内のすべてのエンティティインスタンスには、「#1234」の形式で一意の名前が付けられます。インスタンス名は正数(> 0)で構成されます。
- インスタンス名は、STEPファイル内でローカルでのみ有効です。同じコンテンツが再度エクスポートされる場合、インスタンス名は同じインスタンスに対して異なる場合があります。
- インスタンス名は、他のエンティティインスタンスを参照するためにも使用されます。参照されるインスタンスは、現在のインスタンスの前または後のどちらでも定義できます。
- 単一エンティティデータ型のインスタンスは、エンティティ名を大文字で記述し、その後に括弧内に定義された順序で属性値を続けて表されます。例:「#16 = CARTESIAN_POINT(…)」。
- 設定されていない属性値は「$」として指定されます。
- サブタイプの派生として再宣言されたxplicit属性は、スーパータイプ属性の位置に「*」としてエンコードされます。
- 列挙値、ブール値、および論理値は、「.TRUE.」などの先頭と末尾にドットが付いた大文字で指定されます。
CARTESIAN_POINT
x,y,zの座標を示します。
(1)形式
CARTESIAN_POINT ( Label名, ( x座標, y座標, z座標) ) ;
(2)例
#1 = CARTESIAN_POINT ( ‘NONE’, ( 1.0, 2.0, 3.0) ) ;
DIRECTION
方向ベクトルを示します。おそらく単位方向ベクトル。
(1)形式
DIRECTION ( Label名, (x方向の座標, y方向の座標, z方向の座標)) ) ;
(2)例
#3 = DIRECTION ( ‘NONE’, ( 0.0000000000000000000, 0.0000000000000000000, -1.000000000000000000 ) ) ;
VECTOR
(1)形式
VECTOR ( Label名, 向きを表すエンティティ番号, 大きさ ) ;
(2)例
#66 = VECTOR ( ‘NONE’, #3, 50.00000000000000000 ) ;
SHAPE_DEFINITION_REPRESENTATION
トップレベルのエンティティ
(1)形式
SHAPE_DEFINITION_REPRESENTATION ( “property_definition” のエンティティ番号, ”shape_representation”のエンティティ番号) ;
(2)例
#67 = SHAPE_DEFINITION_REPRESENTATION ( #30, #42 ) ;
PRODUCT_DEFINITION_SHAPE
(1)形式
PRODUCT_DEFINITION_SHAPE ( Label名, 説明, エンティティ番号 ) ;
(2)例
#30 = PRODUCT_DEFINITION_SHAPE ( ‘NONE’, ‘NONE’, #11 ) ;
PRODUCT_DEFINITION
(1)形式
PRODUCT_DEFINITION ( ID番号, 説明, product_definition_formationの番号、 product_definition_contextの番号)
(2)例
#11 = PRODUCT_DEFINITION ( ‘UNKNOWN’, ”, #72, #36 ) ;
GEOMETRIC_REPRESENTATION_CONTEXT
(1)形式
GEOMETRIC_REPRESENTATION_CONTEXT :次元の定義
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT:不確実な長さの定義(例:1.0e-05)
GLOBAL_UNIT_ASSIGNED_CONTEXT:単位系
単位系には、以下のものが定義されている
->#127 =( LENGTH_UNIT ( ) NAMED_UNIT ( * ) SI_UNIT ( .MILLI., .METRE. ) ); SI単位のメートルのミリ単位系を使用することを示している
->#6 =( NAMED_UNIT ( * ) PLANE_ANGLE_UNIT ( ) SI_UNIT ( $, .RADIAN. ) ); 角度はSI単位のラジアンを使用することを示している
->#87 =( NAMED_UNIT ( * ) SI_UNIT ( $, .STERADIAN. ) SOLID_ANGLE_UNIT ( ) ); 立体角はSI単位のステラジアンを使用することを示している
REPRESENTATION_CONTEXT:名前
( GEOMETRIC_REPRESENTATION_CONTEXT ( <次元> ) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT ( ( <エンティティ番号>) ) GLOBAL_UNIT_ASSIGNED_CONTEXT ( ( #127, #6, #87 ) ) REPRESENTATION_CONTEXT ( <識別ID>, <名前>) );
(2)例
#62 =( GEOMETRIC_REPRESENTATION_CONTEXT ( 3 ) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT ( ( #13 ) ) GLOBAL_UNIT_ASSIGNED_CONTEXT ( ( #127, #6, #87 ) ) REPRESENTATION_CONTEXT ( ‘NONE’, ‘WORKASPACE’ ) );
LINE
ポイントとベクトルの形式で表現する
(1)形式
LINE ( ‘NONE’, CARTESIAN_POINTの番号, VECTORの番号 ) ;
(2)例
#57 = LINE ( ‘NONE’, #104, #66 ) ;
TRIMMED_CURVE
トリムカーブ
(1)形式
TRIMMED_CURVE ( ラベル名, basis_curveの番号, ( SET OF trimming_select ), ( SET OF trimming_select ), sense_agreement, マスターの表現 ) ;
マスターの表現には、cartesian,parameter,unspecifiedのいずれかがセットされます。
(2)例
#118 = TRIMMED_CURVE ( ‘NONE’, #57, ( PARAMETER_VALUE ( 0.0000000000000000000 ), #15 ), ( PARAMETER_VALUE ( 1.000000000000000000 ), #4 ), .T., .PARAMETER. ) ;
CIRCLE / AXIS2_PLACEMENT_3D
円
(1)形式
CIRCLE (ラベル名, AXIS2_PLACEMENT_3Dの番号, 半径 ) ;
AXIS2_PLACEMENT_3D ( ラベル名, CARTESIAN_POINTの番号, 軸1のベクトルの番号, 軸2のベクトルの番号 ) ;
(2)例
#47 = CIRCLE ( ‘NONE’, #100, 9.999999999999998200 ) ;
#100 = AXIS2_PLACEMENT_3D ( ‘NONE’, #5, #40, #76 ) ;
GEOMETRIC_CURVE_SET
曲線のリスト
(1)形式
GEOMETRIC_CURVE_SET ( ‘NONE’, ( ,区切りの曲線の番号) ) ;
(2)例
#116 = GEOMETRIC_CURVE_SET ( ‘NONE’, ( #91, #108, #29, #35, #24, #32, #82, #135, #70, #79, #71, #113, #2, #124, #45, #97, #80, #52, #118, #21, #83, #63, #131 ) ) ;
B_SPLINE_CURVE
Bスプライン曲線
(1)形式
BOUNDED_CURVE ( )は基底のエンティティ
curve_formは、polyline_form,circular_arc,elliptic_arc,parabolic_arc,hyperbolic_arc,unspecifiedのいずれか。
closed_curveは、T(True)またはF(False)のいずれか。self_intersectも同様。
B_SPLINE_CURVE_WITH_KNOTSは、Bスプライン曲線のKNOT。
knot_typeは、uniform_knots,quasi_uniform_knots,piecewise_bezier_knots,unspecifiedのいずれか。
( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( <次数>, ( <コントロールポイントリスト > ), curve_form, closed_curve , self_intersect)
B_SPLINE_CURVE_WITH_KNOTS ( ( 3, 2, 3 ),( 3.141592653589793100, 4.712388980384689700, 6.283185307179586200 ),knot_type )
CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.7071067811865475700, 1.000000000000000000, 0.7071067811865475700, 1.000000000000000000 ) )
REPRESENTATION_ITEM ( ” ) );
(2)例
#124 =( BOUNDED_CURVE ( ) B_SPLINE_CURVE ( 2, ( #141, #111, #78, #123, #69 ),.UNSPECIFIED., .F., .T. )
B_SPLINE_CURVE_WITH_KNOTS ( ( 3, 2, 3 ),
( 3.141592653589793100, 4.712388980384689700, 6.283185307179586200 ),
.UNSPECIFIED. )
CURVE ( ) GEOMETRIC_REPRESENTATION_ITEM ( ) RATIONAL_B_SPLINE_CURVE ( ( 1.000000000000000000, 0.7071067811865475700, 1.000000000000000000, 0.7071067811865475700, 1.000000000000000000 ) )
REPRESENTATION_ITEM ( ” ) );
参考URL)