step文件解析 ISO-10303-21
- CARTESIAN_POINT
- 基本点
- 由一个三位坐标构成
#1 = CARTESIAN_POINT('', (0.0, 0.0, 0.0));
- VERTEX_POINT
- 向量点
- 由一个基本点构成
#10 = VERTEX_POINT('', #1);
- DIRECTION
- 方向
- 有一个三位坐标构成
#32 = DIRECTION('', (0.0, 0.0, 1.0));
- VECTOR
- 向量
- 由方向和长度构成
- 长度在本项目中貌似并不起到作用
#38=VECTOR('',#32,1.);
- LINE
- 直线
- 由基本点和一个向量组成,前一个是基本点,后一个是向量
- 向量的方向与直线的方向无关,也就是说直线是超向量两端无限延伸的
#44 = LINE('', #1, #38);/*z*/
- AXIS2_PLACEMENT_3D
- 3D坐标系
- 由一个基本点和两个方向构成
- 点代表原点,前一个向量代表Z轴方向,后一个向量代表X轴方向
#110 = AXIS2_PLACEMENT_3D('', #1, #32, #36);
- CIRCLE
- 圆
- 由一个三维坐标系和半径组成
- 其中三维坐标系的Z轴向量就是圆所在平面的法向量,也就是说三维坐标系的第二个向量貌似不起作用
#45 = CIRCLE('', #116, 50.0);
- EDGE_CURVE
- 边
- 包括线段、圆和圆弧
- 由起始向量点,结束向量点、所在的曲线和方向表示
- 起始点和结束点要在所截取的曲线上面。圆弧的截取是逆时针连接起始点到结束点。
- 方向有T/F之别,在圆弧的截取中T代表逆时针截取,F代表顺时针截取。但是在线段的截取中,貌似TF没有作用。
- 要是两个点相同,那就是截取了一个圆。如下面第二个边
#20 = EDGE_CURVE('', #10, #11, #46, .T.);
#129 = EDGE_CURVE('', #135, #135, #128, .T.);
- ORIENTED_EDGE
- 有向边
- 由一个边和方向组成
- T代表和边同向的有向边,F则相反
#56 = ORIENTED_EDGE('', *, *, #20, .T.);
- EDGE_LOOP
- 圈
- 有多条有向边组成
- 需要首尾相连,即上一条向边边的结束点是下一条有向边的起始点
#70 = EDGE_LOOP('', (#56, #57, #58, #59));
-
FACE_BOUND
- 面包围
- 由圈和方向组成
- 方向代表面的方向,在挖洞的时候有用,洞需要和轮廓面的方向相反
-
PLANE
- 平面
- 由一个三维坐标组成
- 三维坐标的原点就是平面经过的点,三维坐标的z分量就是平面的法向量
- 貌似第二个坐标对平面不起作用
#120 = PLANE('', #110);
- CYLINDRICAL_SURFACE
- 柱面
- 由三维坐标和半径组成
- 三维坐标的原点就是柱面的圆心,半径就是柱面的半径
- 三维坐标的Z分量就是柱面延伸的方向,还是一样貌似三维坐标的第二个向量不起作用
#127 = CYLINDRICAL_SURFACE('',#19,50.0);
- ADVANCED_FACE
- 面
- 由多个圈、所在的面和方向组成
- 第一个圈是轮廓线,后面的是洞
- 一定要在面上能够按照给定的圈截取出来,不然就会遇到报错,显示错误等一系列的问题
#140 = ADVANCED_FACE('', (#80,#138), #120, .T.);
- CLOSED_SHELL
- 由一组面组成
#185=CLOSED_SHELL('',(#140,#141,#142,#143,#144,#145,#146));
带洞胶囊
- 细节处有些粗糙,但是比CAD软件生成的stp文件结构更清晰
ISO-10303-21;
HEADER;
/* Generated by software containing ST-Developer
* from STEP Tools, Inc. (www.steptools.com)
*/
/* OPTION: strings as raw bytes, not using required /X/ escapes */
FILE_DESCRIPTION(
/* description */ ('Unknown'),
/* implementation_level */ '2;1');
FILE_NAME(
/* name */ '正方体',
/* time_stamp */ '2024-05-30T16:16:21+08:00',
/* author */ ('Unknown'),
/* organization */ ('Unknown'),
/* preprocessor_version */ 'ST-DEVELOPER v18.102',
/* originating_system */ 'Solid Edge',
/* authorisation */ 'Unknown');
FILE_SCHEMA (('AUTOMOTIVE_DESIGN {1 0 10303 214 3 1 1}'));
ENDSEC;
DATA;
#1 = CARTESIAN_POINT('', (0.0, 0.0, 0.0));
#2 = CARTESIAN_POINT('', (100.0, 0.0, 0.0));
#3 = CARTESIAN_POINT('', (100.0, 100.0, 0.0));
#4 = CARTESIAN_POINT('', (0.0, 100.0, 0.0));
#5 = CARTESIAN_POINT('', (0.0, 0.0, 100.0));
#6 = CARTESIAN_POINT('', (100.0, 0.0, 100.0));
#7 = CARTESIAN_POINT('', (100.0, 100.0, 100.0));
#8 = CARTESIAN_POINT('', (0.0, 100.0, 100.0));
#10 = VERTEX_POINT('', #1);
#11 = VERTEX_POINT('', #2);
#12 = VERTEX_POINT('', #3);
#13 = VERTEX_POINT('', #4);
#14 = VERTEX_POINT('', #5);
#15 = VERTEX_POINT('', #6);
#16 = VERTEX_POINT('', #7);
#17 = VERTEX_POINT('', #8);
#32 = DIRECTION('', (0.0, 0.0, 1.0));
#33 = DIRECTION('', (0.0, 0.0, -1.0));
#34 = DIRECTION('', (0.0, 1.0, 0.0));
#35 = DIRECTION('', (0.0, -1.0, 0.0));
#36 = DIRECTION('', (1.0, 0.0, 0.0));
#37 = DIRECTION('', (-1.0, 0.0, 0.0));
#38=VECTOR('',#32,1.);
#39=VECTOR('',#33,1.);
#40=VECTOR('',#34,1.);
#41=VECTOR('',#35,1.);
#42=VECTOR('',#36,1.);
#43=VECTOR('',#37,1.);
#100 = CARTESIAN_POINT('', (0.0, 50.0, 0.0));
#101 = CARTESIAN_POINT('', (0.0, 50.0, 100.0));
#102 = CARTESIAN_POINT('', (100.0, 50.0, 0.0));
#103 = CARTESIAN_POINT('', (100.0, 50.0, 100.0));
#19 = AXIS2_PLACEMENT_3D('', #102, #32, #34);
#116 = AXIS2_PLACEMENT_3D('', #100, #32, #34);
#117 = AXIS2_PLACEMENT_3D('', #101, #32, #36);
#118 = AXIS2_PLACEMENT_3D('', #102, #32, #34);
#119 = AXIS2_PLACEMENT_3D('', #103, #32, #34);
#126 = CYLINDRICAL_SURFACE('',#116,50.0);
#127 = CYLINDRICAL_SURFACE('',#19,50.0);
/*这个是洞*/
#128 = CIRCLE('', #116, 20.0);
#129 = EDGE_CURVE('', #135, #135, #128, .T.);
#131 = ORIENTED_EDGE('', *, *, #129, .T.);
#133 = CARTESIAN_POINT('', (0.0, 30.0, 0.0));
#135 = VERTEX_POINT('', #133);
#137 = EDGE_LOOP('', (#131));
#138=FACE_BOUND('',#137,.F.);
#1128 = CIRCLE('', #117, 20.0);
#1129 = EDGE_CURVE('', #1135, #1135, #1128, .T.);
#1131 = ORIENTED_EDGE('', *, *, #1129, .T.);
#1133 = CARTESIAN_POINT('', (0.0, 30.0, 100.0));
#1135 = VERTEX_POINT('', #1133);
#1137 = EDGE_LOOP('', (#1131));
#1138=FACE_BOUND('',#1137,.F.);
#139 = CYLINDRICAL_SURFACE('',#116,20.0);
#146 = ADVANCED_FACE('', (#138,#1138), #139, .T.);
/*洞到这结束*/
#44 = LINE('', #1, #38);/*z*/
#45 = CIRCLE('', #116, 50.0);/*y*/
#46 = LINE('', #1, #42);/*x*/
#47 = LINE('', #3, #38);/*z*/
#48 = CIRCLE('', #118, 50.0);
#49 = LINE('', #3, #42);/*x*/
#50 = LINE('', #6, #38);/*z*/
#51 = CIRCLE('', #119, 50.0);
#52 = LINE('', #6, #42);/*x*/
#53 = LINE('', #8, #38);/*z*/
#54 = CIRCLE('', #117, 50.0);
#55 = LINE('', #8, #42);/*x*/
#20 = EDGE_CURVE('', #10, #11, #46, .T.);
#21 = EDGE_CURVE('', #11, #12, #48, .T.);
#22 = EDGE_CURVE('', #12, #13, #49, .T.);
#23 = EDGE_CURVE('', #13, #10, #45, .T.);
#24 = EDGE_CURVE('', #14, #15, #52, .T.);
#25 = EDGE_CURVE('', #15, #16, #51, .T.);
#26 = EDGE_CURVE('', #16, #17, #55, .T.);
#27 = EDGE_CURVE('', #17, #14, #54, .T.);
#28 = EDGE_CURVE('', #10, #14, #44, .T.);
#29 = EDGE_CURVE('', #11, #15, #50, .T.);
#30 = EDGE_CURVE('', #12, #16, #47, .T.);
#31 = EDGE_CURVE('', #13, #17, #53, .T.);
#56 = ORIENTED_EDGE('', *, *, #20, .T.);
#57 = ORIENTED_EDGE('', *, *, #21, .T.);
#58 = ORIENTED_EDGE('', *, *, #22, .T.);
#59 = ORIENTED_EDGE('', *, *, #23, .T.);
#60 = ORIENTED_EDGE('', *, *, #24, .T.);
#61 = ORIENTED_EDGE('', *, *, #25, .T.);
#62 = ORIENTED_EDGE('', *, *, #26, .T.);
#63 = ORIENTED_EDGE('', *, *, #27, .T.);
#64 = ORIENTED_EDGE('', *, *, #28, .T.);
#65 = ORIENTED_EDGE('', *, *, #29, .T.);
#66 = ORIENTED_EDGE('', *, *, #30, .T.);
#67 = ORIENTED_EDGE('', *, *, #31, .T.);
#86 = ORIENTED_EDGE('', *, *, #20, .F.);
#87 = ORIENTED_EDGE('', *, *, #21, .F.);
#88 = ORIENTED_EDGE('', *, *, #22, .F.);
#89 = ORIENTED_EDGE('', *, *, #23, .F.);
#90 = ORIENTED_EDGE('', *, *, #24, .F.);
#91 = ORIENTED_EDGE('', *, *, #25, .F.);
#92 = ORIENTED_EDGE('', *, *, #26, .F.);
#93 = ORIENTED_EDGE('', *, *, #27, .F.);
#94 = ORIENTED_EDGE('', *, *, #28, .F.);
#95 = ORIENTED_EDGE('', *, *, #29, .F.);
#96 = ORIENTED_EDGE('', *, *, #30, .F.);
#97 = ORIENTED_EDGE('', *, *, #31, .F.);
#70 = EDGE_LOOP('', (#56, #57, #58, #59));
#71 = EDGE_LOOP('', (#60, #61, #62, #63));
#72 = EDGE_LOOP('', (#56, #65, #90, #94));
#73 = EDGE_LOOP('', (#57, #66, #91, #95));
#74 = EDGE_LOOP('', (#58, #67, #92, #96));
#75 = EDGE_LOOP('', (#59, #64, #93, #97));
#80 = FACE_BOUND('', #70, .T.);
#81 = FACE_BOUND('', #71, .T.);
#82 = FACE_BOUND('', #72, .T.);
#83 = FACE_BOUND('', #73, .T.);
#84 = FACE_BOUND('', #74, .T.);
#85 = FACE_BOUND('', #75, .T.);
#110 = AXIS2_PLACEMENT_3D('', #1, #32, #36);/*xy平面*/
#111 = AXIS2_PLACEMENT_3D('', #1, #34, #36);/*xz平面*/
#112 = AXIS2_PLACEMENT_3D('', #1, #36, #34);/*yz平面*/
#113 = AXIS2_PLACEMENT_3D('', #7, #32, #36);/*xy平面*/
#114 = AXIS2_PLACEMENT_3D('', #7, #34, #36);/*xz平面*/
#115 = AXIS2_PLACEMENT_3D('', #7, #36, #34);/*yz平面*/
#120 = PLANE('', #110);/*xy平面*/
#121 = PLANE('', #111);/*xz平面*/
#122 = PLANE('', #112);/*yz平面*/
#123 = PLANE('', #113);/*xy平面*/
#124 = PLANE('', #114);/*xz平面*/
#125 = PLANE('', #115);/*yz平面*/
#140 = ADVANCED_FACE('', (#80,#138), #120, .T.);
#141 = ADVANCED_FACE('', (#81,#1138), #123, .T.);
#142 = ADVANCED_FACE('', (#82), #121, .T.);
#143 = ADVANCED_FACE('', (#83), #127, .T.);
#144 = ADVANCED_FACE('', (#84), #124, .T.);
#145 = ADVANCED_FACE('', (#85), #126, .T.);
#185=CLOSED_SHELL('',(#140,#141,#142,#143,#144,#145,#146));
#186=MANIFOLD_SOLID_BREP('',#185);
#187=SHAPE_DEFINITION_REPRESENTATION(#190,#188);
#188=SHAPE_REPRESENTATION('正方体',*,*);
#190=PRODUCT_DEFINITION_SHAPE('','',#191);
#191=PRODUCT_DEFINITION('','',*,*);
#192=SHAPE_REPRESENTATION_RELATIONSHIP('','',#188,#193);
#193=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#194,#186),*);
#194 = AXIS2_PLACEMENT_3D('',#195,#196,#197);
#195 = CARTESIAN_POINT('',(0.,0.,0.));
#196 = DIRECTION('',(0.,0.,1.));
#197 = DIRECTION('',(1.,0.,-0.));
ENDSEC;
END-ISO-10303-21;