step文件源代码解析

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;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值