日本財団 図書館


5. 実装調査:「Ship STEPファイルの解析」の概要
5.1 概要
 STEPのデータは最終的に、STEP物理ファイルを経由して交換される。従ってこのファイルを理解しておく必要があり、ここでは米国を中心に作成された6ケのファイルについて解析した中からその構成や見方の要点を説明する。
 
5.2 解析例(hull_buikhead.stp)
(1)ファイルの構造と説明
 STEPファイルは、大きくヘッダー部とデータ部の2つからなる。ヘッダー部には、作成日付や作成者などのデータと、当該ファイルがどのアプリケーションプロトコルのものであるかを示すスキーマ名がセットされる。
 データ部には、実際のインスタンスのデータがセットされる。ここには形状データや管理データが一体となって展開され、エンティティ名でそのデータの意味を知る事ができる以外に、出現順序などには決まりはなく渾然とした状態でデータが埋まっている。
 
 STEPファイルは、ISO-10303-21;で始まりEND-ISO-10303-21;で終了し、その間にヘッダー部とデータ部が存在する。ヘッダー部はHEADERで始まり、END_SEC;で終了する。データ部は、DATA;で始まりENDSEC;で終了する。
 
図5.1 STEPファイルの構造
 
 以下にヘッダー部の説明を行う;
HEADER;
 /**/の間に記述された内容は処理上無視されるのでコメントを記述するのに用いられる。これはデータ部でも同じで/**/の間にコメントを記入することが出来る。なお、EXPRESSのスキーマに対するコメントは、/ ** /ではなく(**)である。
 
 FILE_DESCRIPTIONには2ケの属性があり1つはdescriptionでファイルの目的や概要などを記述する。ここは省略して()のままでも許される。本例では'ESTEP AP216 Test Cases #1-2'が設定されている。
 
図5.2 ヘッダー部のデータ
関連ホームページ:www.steptools.com
 
 次は、implementation_levelで、ファイルの特性をセットする、詳しい説明は省くがここは'2;1'とセットするものと理解しておけばよい。
 
 FILE_NAMEには、7ケの属性がある。
 name には、通常データの名前が設定される、これは必ずしもファイル名と同じではなく本例の場合は'test_case_2'となっている。
 time_stamp は、ファイルが作成された時の日付で、本例では'2001-09-24T13:26:02- 04:00'となっている。
 authorはフィルを作成した人の名前を意味し、ここでは'Blair Downie'となっている。なおヘッダー部分はANK文字を設定しておいたほうが無難なので、名前に漢字を設定するのは止めたほうが良い。
 organizationとは、所属部署名のことであり、通常はその会社名と部署名程度がセットされる。本例では会社名の他に住所やホームページのアドレスなどもセットされていて('STEP Tools, Inc.','216 River Steet','Troy, NY 12180','info@steptools.com')となっている。
 preprocessor_versionは、STEPファイルを作成した処理装置の版数であり、本例では'ST-DEVELOPER v8'となっていて米国のSTEP TOOLs inc社のstepプロセッサであるST-DEVELOPERのV8であることが示されている。変換の不具合などが発生した場合に、版数がアップされているか等を調べる時には使えるものである。
 originating_systemはデータが供給されたシステム名で例えばCATIAの3次元モデルを吐き出した場合であれば、それを設定すると良い。この例では''のように何もセットしていない。
 authorisation は、許可を与えた人や組織を設定するが一般的には何もセットされていないケース(''となっている)が多い。
 
 FILE_SCHEMAは、このファイルに展開されるデータのアプリケーションプロトコルのスキーマ名であり、AIMの先頭にあるスキーマ名をセットする、一般的にここは大文字で書くことになっている。本例では、AP216であることを示す 'SHIP_MOULDED_FORM_SCHEMA'が設定されている。AP218では、'SHIP_STRUCTURES_SCHEMA'となる。
 
 ENDSEC;これにてヘッダー部が終了する。
 
(2)データの構成
 本ファイルのデータの主要構造は図5.3の様になっていて、shipを意味する1ケのproductに対して6ケの意味合いがproduct_definition_formation-product_definitionの組合わせで表されている。
 
図5.3 データの構成
(拡大画面:6KB)
 
 先ず(#51-#54)は、ship_unitを表現する、つまりこのファイルで使われる寸法などの単位系を設定している。
 (#52-#55)は、global_axis_placementを表現していて、座標原点と船の位置の関係や方向と船との関係などを表している。
 (#53-#56)は、principal_characteristicsを表現していて、dead weightやlppなどの主要目を表す。
 (#700-#750)は、肝心のship_moulded_formを表現するもので、この図で見る限り(#710-#760)と(#1012-#1016)と同列になっているが、後述するように本来の意味は、(#710-#760)と(#1012-#1016)は(#700-#750)のメンバーである。
 (#710-#760)は、そのメンバーの一つでFrame 12のmoulded_formを意味し、その形状データを伴なっている。
 (#1012-#1016)も、メンバーでhullのmoulded_formであり、同じく形状データを伴なう。
 
(3)ファイルの詳細(ARMとAIMへのマッピング)
(1)application protocolの指定
 アプリケーションの種別は、先に述べたヘッダー部のFILE_SCHEMAに設定されているが、データ部では、スキーマの名前に加えてそのバージョン(何年版のどのステイタスのものかなど)が設定される。ところが、AP216のスキーマにはapplication_protocol_definitionが含まれていない(これは間違いなく誤りというべきである)。本ファイルでは、下記が必要である旨のコメントが付加されている。
 
#57=APPLICATION_PROTOCOL_DEFINITION('Draft International Standard','ship_moulded_form_schema', 2001,#58);
#58=APPLICATION_CONTEXT('application protocol for the exchange of ship moulded forms.');
#59=PRODUCT_CONTEXT('Ships',#58,'design');
 
 ここでは、スキーマはship_moulded_form_schemaであり、そのステイタスは2001年のDIS版であることが示されている。
 
(2)ship
 Ship STEPでは、如何なる場合にもproductは1ケで、それはshipつまり船本体を意味することになっている。図5.3のようにこの1ケのproductに対して、各種のビュー(UoF)からのデータが加えられて一つの意味を持つことになる。ところでproductには必ずproduct_categoryが付与される、ここでは次の様に'navy ship'で'Fleet auxiliary vessel'であることが示されている。
 
#12=PRODUCT_RELATED_PRODUCT_CATEGORY('navy ship',$,#89));
#10=PRODUCT_CATEGORY_RELATIONSHIP('navy ship types',$,#12,#11);
#11=PRODUCT_CATEGORY('Fleet auxiliary vessel',$);
 
(3)ship_unit
 ここでは、単位系の設定を示している、つまりファイルの中のデータに使われている長さはメートルかインチかなどである。
 
#30=GLOBAL_UNIT_ASSIGNED_CONTEXT('.UNUSED.','units',(#63));
#63=(
CONVERSION_BASED_UNIT('INCH',#61)
LENGTH_UNIT()
NAMED_UNIT(#580)
);
#61=LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(2.54),#561);
#561=(
LENGTH_UNIT()
NAMED_UNIT(*)
SI_UNIT(.CENTI.,.METRE.)
);
#580=DIMENSIONAL_EXPONENTS(1.,0.,0.,0.,0.,0.,0.);
 
 ここでは、#63が変換単位系であり、INCHを使うことを意味し、それは#61でセンチメートルの2.54倍(ミリメートルなら25.4倍)であると言っている。
 
(4)Global_axis_placement
 座標系と原点(axis and origin)の情報として、右手座標系で原点が0である。
 
#18=AXIS2_PLACEMENT_3D('global axes and origin',#290,#270,#280);
#270=DIRECTION('',(0.,0.,1.));
#280=DIRECTION('',(1.,0.,0.));
#290=CARTESIAN_POINT('',(0.,0.,0.));
 
 方向(orientation)の情報として、aft_pointingが設定されている。
 
#13=DESCRIPTIVE_REPRESENTATION_ITEM('orientation','aft pointing');
 
 後部のオフセット(after_perpendicular_offset)として、1344インチ。
 
#14=VALUE_REPRESENTATION_ITEM('after perpendicular offset', LENGTH_MEASURE(1344.));
 
(5)Principal_characteristics
 length_between_perpendicularsとして1320インチが、moulded_breadthとして300インチ、moulded_depthとして154インチが指定されている。
 
#48=PROPERTY_DEFINITION('.UNUSED.',$,#56);
#43=PROPERTY_DEFINITION_REPRESENTATION(#48,#33);
#38=NAME_ATTRIBUTE('principal characteristics',#43);
#33=REPRESENTATION('principal characteristics',(#15,#16,#17),#19);
 
#15=VALUE_REPRESENTATION_ITEM ('length between perpendiculars',POSITIVE_ LENGTH_MEASURE(1320.));
 
#16=VALUE_REPRESENTATION_ITEM('moulded breadth',POSITIVE_LENGTH_MEASURE(300.));
 
#17=VALUE_REPRESENTATION_ITEM('moulded depth',POSITIVE_LENGTH_MEASURE(154.));
 
(6)Class hierarchy
 Ship APでは、他のAPにはない特殊なマッピングが行われている。それは基本的にShip APとしては、サブタイプを作らないということである。そのために、CLASSの概念が導入されていて、sub-superの概念をこのCLASSを割り当てることで表現しようとしている。
 
図5.4 CLASS階層図
(拡大画面:6KB)
 
 本ファイルに出現するARMのサブタイプ階層図を、表したものが図5.4である。ここで#1020などはそれが該当するCALSSインスタンスの識別番号を意味する。
 これらの関係を、マッピングした結果がCLASSエンティティにて、その階層関係がGROUP_RELATIONSHIPにて表されている。
#960=CLASS('ship',$);
#970=CLASS('item',$);
#980=CLASS('definable object',$);
#990=CLASS('global axis placement',$);
#1021=CLASS('general characteristics definition',$);
#1022=CLASS('definition',$);
#1020=CLASS('versionable object',$);
#1030=CLASS('shiptype',$);
#1040=CLASS('functional definition',$);
#1050=CLASS('principal characteristics',$);
#1060=CLASS('ship moulded form',$);
#1070=CLASS('item structure',$);
#1090=CLASS('moulded form',$);
#1100=CLASS('moulded form functional definition',$);
#1110=CLASS('moulded form design definition',$);
#1120=CLASS('design definition',$);
#1023=CLASS('universal resource locator',$);
 
#800=GROUP_RELATIONSHIP('specialisation',$,#970,#960);
#810=GROUP_RELATIONSHIP('specialisation',$,#980,#970);
#820=GROUP_RELATIONSHIP('specialisation',$,#1021,#990);
#830=GROUP_RELATIONSHIP('specialisation',$,#1022,#1021);
#840=GROUP_RELATIONSHIP('specialisation',$,#1020,#1022);
#850=GROUP_RELATIONSHIP('specialisation',$,#1040,#1030);
#860=GROUP_RELATIONSHIP('specialisation',$,#1022,#1040);
#870=GROUP_RELATIONSHIP('specialisation',$,#1021,#1050);
#880=GROUP_RELATIONSHIP('specialisation',$,#1070,#1060);
#890=GROUP_RELATIONSHIP('specialisation',$,#980,#1070);
#900=GROUP_RELATIONSHIP('specialisation',$,#1020,#1070);
#910=GROUP_RELATIONSHIP('specialisation',$,#970,#1060);
#920=GROUP_RELATIONSHIP('specialisation',$,#970,#1090);
#930=GROUP_RELATIONSHIP('specialisation',$,#1040,#1100);
#940=GROUP_RELATIONSHIP('specialisation',$,#1120,#1110);
#950=GROUP_RELATIONSHIP('specialisation',$,#1022,#1120);







日本財団図書館は、日本財団が運営しています。

  • 日本財団 THE NIPPON FOUNDATION