iCAx开思工具箱
标题:
STP格式文件信息该如何阅读
[打印本页]
作者:
hanqi
时间:
2005-3-4 11:54
标题:
STP格式文件信息该如何阅读
在VB开发擦CATIA时,我想获得PART中零件的所有拓扑信息,(如棱边,角度,坐标系等......)有一种方法是将PART存成STP格式文件,我已经完成,现在不知道得到的文本文档中的得到的信息该如何阅读,我在附件中放了一份stp文件,是由一个pad导出的。不知各条语句所代表的意义.请问该去哪里找相关资料?欢迎给出指教。也欢迎同道者留下qq.
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('CATIA V5 STEP Exchange'),'2;1');
FILE_NAME('D:\\Documents and Settings\\zjy\\My Documents\\My Pictures\\Part1originstp.stp','2005-03-01T08:45:14+00:00',('none'),('none'),'CATIA Version 5 Release 13 (IN-9)','CATIA V5 STEP AP203','none');
FILE_SCHEMA(('CONFIG_CONTROL_DESIGN'));
ENDSEC;
DATA;
#5=PRODUCT('Part1','','',(#2)) ;
#1=APPLICATION_CONTEXT('configuration controlled 3D design of mechanical parts and assemblies') ;
#14=PRODUCT_DEFINITION(' ',' ',#6,#3) ;
#16=SECURITY_CLASSIFICATION(' ',' ',#15) ;
#15=SECURITY_CLASSIFICATION_LEVEL('unclassified') ;
#47=CARTESIAN_POINT(' ',(0.,0.,0.)) ;
#52=CARTESIAN_POINT('Axis2P3D Location',(0.,0.,0.)) ;
#57=CARTESIAN_POINT('Line Origine',(0.,0.,5.)) ;
#61=CARTESIAN_POINT('Vertex',(0.,0.,0.)) ;
#63=CARTESIAN_POINT('Vertex',(0.,0.,10.)) ;
#66=CARTESIAN_POINT('Line Origine',(30.,0.,0.)) ;
#70=CARTESIAN_POINT('Vertex',(60.,0.,0.)) ;
#73=CARTESIAN_POINT('Line Origine',(60.,0.,5.)) ;
#77=CARTESIAN_POINT('Vertex',(60.,0.,10.)) ;
#80=CARTESIAN_POINT('Line Origine',(30.,0.,10.)) ;
#92=CARTESIAN_POINT('Axis2P3D Location',(60.,0.,0.)) ;
#97=CARTESIAN_POINT('Line Origine',(60.,15.,0.)) ;
#101=CARTESIAN_POINT('Vertex',(60.,30.,0.)) ;
#104=CARTESIAN_POINT('Line Origine',(60.,30.,5.)) ;
#108=CARTESIAN_POINT('Vertex',(60.,30.,10.)) ;
#111=CARTESIAN_POINT('Line Origine',(60.,15.,10.)) ;
#123=CARTESIAN_POINT('Axis2P3D Location',(60.,30.,0.)) ;
#128=CARTESIAN_POINT('Line Origine',(30.,30.,0.)) ;
#132=CARTESIAN_POINT('Vertex',(0.,30.,0.)) ;
#135=CARTESIAN_POINT('Line Origine',(0.,30.,5.)) ;
#139=CARTESIAN_POINT('Vertex',(0.,30.,10.)) ;
#142=CARTESIAN_POINT('Line Origine',(30.,30.,10.)) ;
#154=CARTESIAN_POINT('Axis2P3D Location',(0.,30.,0.)) ;
#159=CARTESIAN_POINT('Line Origine',(0.,15.,0.)) ;
#164=CARTESIAN_POINT('Line Origine',(0.,15.,10.)) ;
#176=CARTESIAN_POINT('Axis2P3D Location',(0.,0.,0.)) ;
#188=CARTESIAN_POINT('Axis2P3D Location',(0.,0.,10.)) ;
#53=DIRECTION('Axis2P3D Direction',(0.,-1.,0.)) ;
#54=DIRECTION('Axis2P3D XDirection',(1.,0.,0.)) ;
#58=DIRECTION('Vector Direction',(0.,0.,1.)) ;
#67=DIRECTION('Vector Direction',(1.,0.,0.)) ;
#74=DIRECTION('Vector Direction',(0.,0.,1.)) ;
#81=DIRECTION('Vector Direction',(1.,0.,0.)) ;
#93=DIRECTION('Axis2P3D Direction',(1.,0.,0.)) ;
#94=DIRECTION('Axis2P3D XDirection',(0.,1.,0.)) ;
#98=DIRECTION('Vector Direction',(0.,1.,0.)) ;
#105=DIRECTION('Vector Direction',(0.,0.,1.)) ;
#112=DIRECTION('Vector Direction',(0.,1.,0.)) ;
#124=DIRECTION('Axis2P3D Direction',(0.,1.,0.)) ;
#125=DIRECTION('Axis2P3D XDirection',(-1.,0.,0.)) ;
#129=DIRECTION('Vector Direction',(-1.,0.,0.)) ;
#136=DIRECTION('Vector Direction',(0.,0.,1.)) ;
#143=DIRECTION('Vector Direction',(-1.,0.,0.)) ;
#155=DIRECTION('Axis2P3D Direction',(-1.,0.,0.)) ;
#156=DIRECTION('Axis2P3D XDirection',(0.,-1.,0.)) ;
#160=DIRECTION('Vector Direction',(0.,-1.,0.)) ;
#165=DIRECTION('Vector Direction',(0.,-1.,0.)) ;
#177=DIRECTION('Axis2P3D Direction',(0.,0.,1.)) ;
#178=DIRECTION('Axis2P3D XDirection',(1.,0.,0.)) ;
#189=DIRECTION('Axis2P3D Direction',(0.,0.,1.)) ;
#190=DIRECTION('Axis2P3D XDirection',(1.,0.,0.)) ;
#48=AXIS2_PLACEMENT_3D(' ',#47,$,$) ;
#55=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#52,#53,#54) ;
#95=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#92,#93,#94) ;
#126=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#123,#124,#125) ;
#157=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#154,#155,#156) ;
#179=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#176,#177,#178) ;
#191=AXIS2_PLACEMENT_3D('Plane Axis2P3D',#188,#189,#190) ;
#40=PRODUCT_DEFINITION_SHAPE(' ',' ',#14) ;
#31=APPROVAL_PERSON_ORGANIZATION(#25,#21,#19) ;
#25=PERSON_AND_ORGANIZATION(#22,#23) ;
#22=PERSON(' ',' ',' ',$,$,$) ;
#23=ORGANIZATION(' ',' ',' ') ;
#21=APPROVAL(#20,' ') ;
#20=APPROVAL_STATUS('not_yet_approved') ;
#19=APPROVAL_ROLE('APPROVER') ;
#13=DATE_AND_TIME(#11,#12) ;
#12=LOCAL_TIME(16,45,13.,#10) ;
#10=COORDINATED_UNIVERSAL_TIME_OFFSET(0,0,.AHEAD.) ;
#86=ORIENTED_EDGE('',*,*,#65,.F.) ;
#87=ORIENTED_EDGE('',*,*,#72,.T.) ;
#88=ORIENTED_EDGE('',*,*,#79,.T.) ;
#89=ORIENTED_EDGE('',*,*,#84,.F.) ;
#117=ORIENTED_EDGE('',*,*,#79,.F.) ;
#118=ORIENTED_EDGE('',*,*,#103,.T.) ;
#119=ORIENTED_EDGE('',*,*,#110,.T.) ;
#120=ORIENTED_EDGE('',*,*,#115,.F.) ;
#148=ORIENTED_EDGE('',*,*,#110,.F.) ;
#149=ORIENTED_EDGE('',*,*,#134,.T.) ;
#150=ORIENTED_EDGE('',*,*,#141,.T.) ;
#151=ORIENTED_EDGE('',*,*,#146,.F.) ;
#170=ORIENTED_EDGE('',*,*,#141,.F.) ;
#171=ORIENTED_EDGE('',*,*,#163,.T.) ;
#172=ORIENTED_EDGE('',*,*,#65,.T.) ;
#173=ORIENTED_EDGE('',*,*,#168,.F.) ;
#182=ORIENTED_EDGE('',*,*,#163,.F.) ;
#183=ORIENTED_EDGE('',*,*,#134,.F.) ;
#184=ORIENTED_EDGE('',*,*,#103,.F.) ;
#185=ORIENTED_EDGE('',*,*,#72,.F.) ;
#194=ORIENTED_EDGE('',*,*,#84,.T.) ;
#195=ORIENTED_EDGE('',*,*,#115,.T.) ;
#196=ORIENTED_EDGE('',*,*,#146,.T.) ;
#197=ORIENTED_EDGE('',*,*,#168,.T.) ;
#51=CLOSED_SHELL('Closed Shell',(#91,#122,#153,#175,#187,#199)) ;
#59=VECTOR('Line Direction',#58,1.) ;
#68=VECTOR('Line Direction',#67,1.) ;
#75=VECTOR('Line Direction',#74,1.) ;
#82=VECTOR('Line Direction',#81,1.) ;
#99=VECTOR('Line Direction',#98,1.) ;
#106=VECTOR('Line Direction',#105,1.) ;
#113=VECTOR('Line Direction',#112,1.) ;
#130=VECTOR('Line Direction',#129,1.) ;
#137=VECTOR('Line Direction',#136,1.) ;
#144=VECTOR('Line Direction',#143,1.) ;
#161=VECTOR('Line Direction',#160,1.) ;
#166=VECTOR('Line Direction',#165,1.) ;
#201=ADVANCED_BREP_SHAPE_REPRESENTATION('NONE',(#200),#46) ;
#49=SHAPE_REPRESENTATION(' ',(#48),#46) ;
#91=ADVANCED_FACE('',(#90),#56,.T.) ;
#122=ADVANCED_FACE('',(#121),#96,.T.) ;
#153=ADVANCED_FACE('',(#152),#127,.T.) ;
#175=ADVANCED_FACE('',(#174),#158,.T.) ;
#187=ADVANCED_FACE('',(#186),#180,.F.) ;
#199=ADVANCED_FACE('',(#198),#192,.T.) ;
#4=APPLICATION_PROTOCOL_DEFINITION('international standard','config_control_design',1994,#1) ;
#32=APPROVAL_DATE_TIME(#13,#21) ;
#200=MANIFOLD_SOLID_BREP('\X2\96F690E84EF651E04F554F53\X0\',#51) ;
#11=CALENDAR_DATE(2005,1,3) ;
#30=CC_DESIGN_APPROVAL(#21,(#16,#6,#14)) ;
#18=CC_DESIGN_DATE_AND_TIME_ASSIGNMENT(#13,#17,(#16)) ;
#29=CC_DESIGN_DATE_AND_TIME_ASSIGNMENT(#13,#28,(#14)) ;
#17=DATE_TIME_ROLE('classification_date') ;
#28=DATE_TIME_ROLE('creation_date') ;
#27=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#25,#26,(#16)) ;
#33=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#25,#34,(#6)) ;
#35=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#25,#36,(#6,#14)) ;
#37=CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT(#25,#38,(#5)) ;
#26=PERSON_AND_ORGANIZATION_ROLE('classification_officer') ;
#34=PERSON_AND_ORGANIZATION_ROLE('design_supplier') ;
#36=PERSON_AND_ORGANIZATION_ROLE('creator') ;
#38=PERSON_AND_ORGANIZATION_ROLE('design_owner') ;
#39=CC_DESIGN_SECURITY_CLASSIFICATION(#16,(#6)) ;
#202=SHAPE_REPRESENTATION_RELATIONSHIP(' ',' ',#49,#201) ;
#3=DESIGN_CONTEXT(' ',#1,'design') ;
#65=EDGE_CURVE('',#62,#64,#60,.T.) ;
#72=EDGE_CURVE('',#62,#71,#69,.T.) ;
#79=EDGE_CURVE('',#71,#78,#76,.T.) ;
#84=EDGE_CURVE('',#64,#78,#83,.T.) ;
#103=EDGE_CURVE('',#71,#102,#100,.T.) ;
#110=EDGE_CURVE('',#102,#109,#107,.T.) ;
#115=EDGE_CURVE('',#78,#109,#114,.T.) ;
#134=EDGE_CURVE('',#102,#133,#131,.T.) ;
#141=EDGE_CURVE('',#133,#140,#138,.T.) ;
#146=EDGE_CURVE('',#109,#140,#145,.T.) ;
#163=EDGE_CURVE('',#133,#62,#162,.T.) ;
#168=EDGE_CURVE('',#140,#64,#167,.T.) ;
#85=EDGE_LOOP('',(#86,#87,#88,#89)) ;
#116=EDGE_LOOP('',(#117,#118,#119,#120)) ;
#147=EDGE_LOOP('',(#148,#149,#150,#151)) ;
#169=EDGE_LOOP('',(#170,#171,#172,#173)) ;
#181=EDGE_LOOP('',(#182,#183,#184,#185)) ;
#193=EDGE_LOOP('',(#194,#195,#196,#197)) ;
#90=FACE_OUTER_BOUND('',#85,.T.) ;
#121=FACE_OUTER_BOUND('',#116,.T.) ;
#152=FACE_OUTER_BOUND('',#147,.T.) ;
#174=FACE_OUTER_BOUND('',#169,.T.) ;
#186=FACE_OUTER_BOUND('',#181,.T.) ;
#198=FACE_OUTER_BOUND('',#193,.T.) ;
#45=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#41,'TOL_CRV','CONFUSED CURVE UNCERTAINTY') ;
#60=LINE('Line',#57,#59) ;
#69=LINE('Line',#66,#68) ;
#76=LINE('Line',#73,#75) ;
#83=LINE('Line',#80,#82) ;
#100=LINE('Line',#97,#99) ;
#107=LINE('Line',#104,#106) ;
#114=LINE('Line',#111,#113) ;
#131=LINE('Line',#128,#130) ;
#138=LINE('Line',#135,#137) ;
#145=LINE('Line',#142,#144) ;
#162=LINE('Line',#159,#161) ;
#167=LINE('Line',#164,#166) ;
#2=MECHANICAL_CONTEXT(' ',#1,'mechanical') ;
#24=PERSONAL_ADDRESS(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',(#22),' ') ;
#56=PLANE('Plane',#55) ;
#96=PLANE('Plane',#95) ;
#127=PLANE('Plane',#126) ;
#158=PLANE('Plane',#157) ;
#180=PLANE('Plane',#179) ;
#192=PLANE('Plane',#191) ;
#43=PLANE_ANGLE_MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(0.0174532925199),#42) ;
#7=PRODUCT_CATEGORY('part',$) ;
#9=PRODUCT_CATEGORY_RELATIONSHIP(' ',' ',#7,#8) ;
#6=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('',' ',#5,.NOT_KNOWN.) ;
#8=PRODUCT_RELATED_PRODUCT_CATEGORY('detail',$,(#5)) ;
#50=SHAPE_DEFINITION_REPRESENTATION(#40,#49) ;
#62=VERTEX_POINT('',#61) ;
#64=VERTEX_POINT('',#63) ;
#71=VERTEX_POINT('',#70) ;
#78=VERTEX_POINT('',#77) ;
#102=VERTEX_POINT('',#101) ;
#109=VERTEX_POINT('',#108) ;
#133=VERTEX_POINT('',#132) ;
#140=VERTEX_POINT('',#139) ;
#41=(LENGTH_UNIT()NAMED_UNIT(*)SI_UNIT(.MILLI.,.METRE.)) ;
#42=(NAMED_UNIT(*)PLANE_ANGLE_UNIT()SI_UNIT($,.RADIAN.)) ;
#44=(NAMED_UNIT(*)SI_UNIT($,.STERADIAN.)SOLID_ANGLE_UNIT()) ;
#46=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#45))GLOBAL_UNIT_ASSIGNED_CONTEXT((#41,#42,#44))REPRESENTATION_CONTEXT(' ',' ')) ;
ENDSEC;
END-ISO-10303-21;
作者:
juanr
时间:
2005-3-17 11:24
这是一个STEP格式的文件,关于该文件的阅读可以网上查找ISO10303-21的资料。
作者:
juanr
时间:
2005-3-17 11:36
资料是全英文的,并且只是介绍该文件怎么形成,有哪些元素组成,如果需要我可以提供。QQ:153850995
作者:
juanr
时间:
2005-3-17 11:38
这种格式的文件是由基本字符串组成的连续字符流,由具有一定语义的Token组成不同的数据类型和格式,例如分隔符、保留字、关键字和简单数据类型等。文件以ISO-10303-21开始,END-ISO-10303-21结束。按数据功能分为两部分(Section),即头部段和数据段,分别以HEADER和DATA开始,都以ENDSEC结束。
头段包含了与整个交换文件相关的信息,其中一些实体的语法与数据段中交换数据的实体相同。只是头部段中的实体不必有实体实例名。这是因为这些实体不会被别的实体所引用。每个文件中的头部段必须出现一次,且出现在文件开头。
头部段中有三个标准实体必须出现,并且必须按下列次序出现:文件名(FILE-NAME),文件描述(FILE-DESCRIPTION)和文件模式(FILE-SCHEMA),它们是数据交换模型的一部分。除标准定义的实体外,用户可在头部段增设自己定义的实体,用于给出与用户或实现有关的特定信息,这些实体有标准处理器是可以被忽略,不影响中性文件结构的通用性。用户自定义的实体在实体类型关键字前要加一个“!”
数据段包含了一系列要交换的产品数据,是由EXPRESS语言定义的概念模式中实体实例组(ENTITY-INSTANCE)成。实体实例由对应实体属性的参数构成,构成方式有两种:
a 直接构成方式。如同给函数传递参数一样。如,#10=POINT(0.00,1.00,2.00);
b 使用数据域(SCOPE)结构提供的在某一范围内定义和引用实体的机制。受以下约束:数据域结构可以嵌套;在数据域SCOPE内定义的实体有效范围仅在SCOPE内部;数据域结构提供实体间的存在依赖关系,在数据域内定义的实体实例存在以来于被定义的实体实例。使用哪种方式根据具体情况而定。
作者:
wsk_wsk
时间:
2005-3-17 14:27
产品模型数据交换标准STEP是国际标准化组织(ISO)所属技术委员会TC184(工业自动化系统技术委员会)下的“产品模型数据外部表示”(External Representation of Product Model Data)分委员会SC4所制订的国际统一CAD数据交换标准。所谓产品模型数据是指为在覆盖产品整个生命周期中的应用而全面定义的产品所有数据元素,它包括为进行设计、分析、制造、测试、检验和产品支持而全面定义的零部件或构件所需的几何、拓扑、公差、关系、属性和性能等数据,另外,还可能包含一些和处理有关的数据。产品模型对于下达生产任务、直接质量控制、测试和进行产品支持功能可以提供全面的信息。
STEP为产品在它的生命周期内规定了惟一的描述和计算机可处理的信息表达形式。这种形式独立于任何特定的计算机系统,并能保证在多种应用和不同系统中的一致性。这一标准还允许采用不同的实现技术,便于产品数据的存取、传输和归档。STEP标准是为CAD/CAM系统提供中性产品数据而开发的公共资源和应用模型,它涉及到了建筑、工程、结构、机械、电气、电子工程及船体结构等无所不包的所有产品领域。在产品数据共享方面,STEP标准提供四个层次的实现方法:ASCII码中性文件;访问内存结构数据的应用程序界面;共享数据库以及共享知识库。无疑,这将会给商业和制造业带来一场大变革,而且STEP标准在下述几个方面有着明显的优越性:一是经济效益显著;二是数据范围广、精度高,通过应用协议消除了产品数据的二义性;三是易于集成,便于扩充;四是技术先进、层次清楚,分为通用资源(子标准40系列)、应用资源(子标准100系列)和应用协议(子标准200系列)三部分。如今,STEP标准已经成为国际公认的CAD数据文件交换全球统一标准,许多国家都依据STEP标准制订了相应的国家标准。我国STEP标准的制订工作由CSBTSTC159/SC4完成,STEP标准在我国的对应标准号为GB16656。STEP标准存在的问题是整个体系极其庞大,标准的制订过程进展缓慢,数据文件比IGES更大。目前商用CAD系统提供的STEP应用协议还只有AP203“配置控制设计”,内容包括产品的配置管理、曲面和线框模型、实体模型的小平面边界表示和曲面边界表示等以及AP214“汽车机械设计过程的核心数据”两种。
作者:
tony_cim
时间:
2005-3-19 17:38
通过C++编程实现对STP文件中DATA段的所有几何和拓扑信息的提取,建立其对应的内存数据模型,然后根据个人具体情况实现与CATIA或UG等的API的应用,完成所需要的功能。
作者:
xacf
时间:
2005-4-1 09:39
我不知道你要具体做什么?可能不需要转STEP。STEP的描述与CATIA不一字。
可能的话最好用C++。因为VB/JAVA缺乏几何接口
另 有专门的网站介绍STEP开发。工具也有。GOOLE 一下。
作者:
Yeren2005
时间:
2005-4-3 12:34
读取文件之前你要先建立起一套几何模型,如拔高体、旋转体等(按STEP格式做),之后将相应的数据读入相应的结构中即可,在VB中用类的方式建立一个个模型。可以参照附件中STEP格式中三维实体的几何模型关系图来做
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3