summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2023-02-08 10:46:37 +0100
committerBastien Nocera <hadess@hadess.net>2024-04-06 10:35:37 +0200
commitc30701fc155fd67517adbf4d79a73a30971ff3c5 (patch)
treef3353a7367180f5ad8d41e131f6c27973eb7be38
parent091b9b604fd29b622067afb6a69fb63109c978e5 (diff)
Add STEP 3D model mime-type
Add mime-type for STEP 3D models as per Wikipedia page: https://en.wikipedia.org/wiki/ISO_10303-21 Note that this doesn't include support for STEP-XML files (https://en.wikipedia.org/wiki/ISO_10303-28) as it's a separate filetype. STEP+ZIP was ommitted because of the lack of information and examples about the format.
-rw-r--r--data/freedesktop.org.xml.in10
-rw-r--r--tests/mime-detection/list2
-rw-r--r--tests/mime-detection/nist_ftc_11_asme1_rb.stp173
3 files changed, 185 insertions, 0 deletions
diff --git a/data/freedesktop.org.xml.in b/data/freedesktop.org.xml.in
index c24b80e..560675d 100644
--- a/data/freedesktop.org.xml.in
+++ b/data/freedesktop.org.xml.in
@@ -8316,6 +8316,16 @@ command to generate the output files.
<alias type="model/x.stl-binary"/>
</mime-type>
+ <mime-type type="model/step">
+ <comment>STEP 3D model</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.step"/>
+ <glob pattern="*.stp"/>
+ <magic>
+ <match type="string" value="ISO-10303-21;" offset="0"/>
+ </magic>
+ </mime-type>
+
<mime-type type="text/x.gcode">
<comment>G-code file</comment>
<sub-class-of type="text/plain"/>
diff --git a/tests/mime-detection/list b/tests/mime-detection/list
index 4bd203c..2794f78 100644
--- a/tests/mime-detection/list
+++ b/tests/mime-detection/list
@@ -957,6 +957,8 @@ dbus-comment.service text/x-dbus-service
cube.3mf model/3mf ox
binary.stl model/stl oxo
ascii.stl model/stl
+# from https://www.nist.gov/document/nist-ftc-test-case-definitions
+nist_ftc_11_asme1_rb.stp model/step
test.gcode text/x.gcode ox
20mm_Box.gx text/x-gcode-gx
# Converted from binary.stl with Blender
diff --git a/tests/mime-detection/nist_ftc_11_asme1_rb.stp b/tests/mime-detection/nist_ftc_11_asme1_rb.stp
new file mode 100644
index 0000000..7bc60d3
--- /dev/null
+++ b/tests/mime-detection/nist_ftc_11_asme1_rb.stp
@@ -0,0 +1,173 @@
+ISO-10303-21;
+HEADER;
+FILE_DESCRIPTION(('FTC-11 geometry only from the NIST MBE PMI Validation and Conformance Testing Project - go.usa.gov/mGVm'),'2;1');
+FILE_NAME('nist_ftc_11_asme1.stp','2015-05-27T17:43:57',(''),(''),'','','');
+FILE_SCHEMA(('CONFIG_CONTROL_DESIGN'));
+ENDSEC;
+DATA;
+#5=APPLICATION_CONTEXT('configuration controlled 3D designs of mechanical parts and assemblies');
+#6=APPLICATION_PROTOCOL_DEFINITION('International Standard','ap203_configuration_controlled_3d_design_of_mechanical_parts_and_assemblies_mim_lf',2004,#5);
+#7=PRODUCT_CONTEXT('',#5,'mechanical');
+#8=PRODUCT('nist_ftc_11_asme1','nist_ftc_11_asme1',$,(#7));
+#9=PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#8));
+#10=PRODUCT_DEFINITION_FORMATION('',$,#8);
+#11=PRODUCT_DEFINITION_CONTEXT('part definition',#5,'design');
+#12=PRODUCT_DEFINITION('',$,#10,#11);
+#18=(NAMED_UNIT(*)PLANE_ANGLE_UNIT()SI_UNIT($,.RADIAN.));
+#19=DIMENSIONAL_EXPONENTS(0.0,0.0,0.0,0.0,0.0,0.0,0.0);
+#20=PLANE_ANGLE_MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(0.0174532925),#18);
+#24=(CONVERSION_BASED_UNIT('DEGREE',#20)NAMED_UNIT(#19)PLANE_ANGLE_UNIT());
+#28=(NAMED_UNIT(*)SI_UNIT($,.STERADIAN.)SOLID_ANGLE_UNIT());
+#32=(LENGTH_UNIT()NAMED_UNIT(*)SI_UNIT(.MILLI.,.METRE.));
+#34=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#32,'DISTANCE_ACCURACY_VALUE','');
+#36=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#34))GLOBAL_UNIT_ASSIGNED_CONTEXT((#24,#28,#32))REPRESENTATION_CONTEXT('None','None'));
+#37=AXIS2_PLACEMENT_3D('',#38,#39,#40);
+#38=CARTESIAN_POINT('',(0.0,0.0,0.0));
+#39=DIRECTION('',(0.0,0.0,1.0));
+#40=DIRECTION('',(1.0,0.0,0.0));
+#41=SHAPE_REPRESENTATION('',(#37),#36);
+#42=PRODUCT_DEFINITION_SHAPE('','',#12);
+#43=SHAPE_DEFINITION_REPRESENTATION(#42,#41);
+#49=(NAMED_UNIT(*)PLANE_ANGLE_UNIT()SI_UNIT($,.RADIAN.));
+#50=DIMENSIONAL_EXPONENTS(0.0,0.0,0.0,0.0,0.0,0.0,0.0);
+#51=PLANE_ANGLE_MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(0.0174532925),#49);
+#55=(CONVERSION_BASED_UNIT('DEGREE',#51)NAMED_UNIT(#50)PLANE_ANGLE_UNIT());
+#59=(NAMED_UNIT(*)SI_UNIT($,.STERADIAN.)SOLID_ANGLE_UNIT());
+#63=(LENGTH_UNIT()NAMED_UNIT(*)SI_UNIT(.MILLI.,.METRE.));
+#65=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.000001),#63,'DISTANCE_ACCURACY_VALUE','');
+#67=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#65))GLOBAL_UNIT_ASSIGNED_CONTEXT((#55,#59,#63))REPRESENTATION_CONTEXT('','3D'));
+#68=CARTESIAN_POINT('',(0.0,0.0,-0.75));
+#69=DIRECTION('',(0.0,0.0,1.0));
+#70=DIRECTION('',(0.0,-1.0,0.0));
+#71=AXIS2_PLACEMENT_3D('',#68,#69,#70);
+#72=CYLINDRICAL_SURFACE('',#71,16.0);
+#73=CARTESIAN_POINT('',(0.0,-16.0,-1.499999999999999));
+#74=VERTEX_POINT('',#73);
+#75=CARTESIAN_POINT('',(0.0,0.0,-1.499999999999999));
+#76=DIRECTION('',(0.0,0.0,1.0));
+#77=DIRECTION('',(0.0,-1.0,0.0));
+#78=AXIS2_PLACEMENT_3D('',#75,#76,#77);
+#79=CIRCLE('',#78,16.0);
+#80=EDGE_CURVE('',#74,#74,#79,.T.);
+#81=ORIENTED_EDGE('',*,*,#80,.F.);
+#82=EDGE_LOOP('',(#81));
+#83=FACE_OUTER_BOUND('',#82,.T.);
+#84=CARTESIAN_POINT('',(0.0,-16.0,0.0));
+#85=VERTEX_POINT('',#84);
+#86=CARTESIAN_POINT('',(0.0,0.0,0.0));
+#87=DIRECTION('',(0.0,0.0,1.0));
+#88=DIRECTION('',(0.0,-1.0,0.0));
+#89=AXIS2_PLACEMENT_3D('',#86,#87,#88);
+#90=CIRCLE('',#89,16.0);
+#91=EDGE_CURVE('',#85,#85,#90,.T.);
+#92=ORIENTED_EDGE('',*,*,#91,.T.);
+#93=EDGE_LOOP('',(#92));
+#94=FACE_BOUND('',#93,.T.);
+#95=ADVANCED_FACE('',(#83,#94),#72,.F.);
+#96=CARTESIAN_POINT('',(0.0,-23.75,-1.5));
+#97=DIRECTION('',(0.0,0.0,-1.0));
+#98=DIRECTION('',(-1.0,0.0,0.0));
+#99=AXIS2_PLACEMENT_3D('',#96,#97,#98);
+#100=PLANE('',#99);
+#101=CARTESIAN_POINT('',(0.0,-31.5,-1.500000000000001));
+#102=VERTEX_POINT('',#101);
+#103=CARTESIAN_POINT('',(0.0,0.0,-1.500000000000001));
+#104=DIRECTION('',(0.0,0.0,1.0));
+#105=DIRECTION('',(0.0,-1.0,0.0));
+#106=AXIS2_PLACEMENT_3D('',#103,#104,#105);
+#107=CIRCLE('',#106,31.5);
+#108=EDGE_CURVE('',#102,#102,#107,.T.);
+#109=ORIENTED_EDGE('',*,*,#108,.F.);
+#110=EDGE_LOOP('',(#109));
+#111=FACE_OUTER_BOUND('',#110,.T.);
+#112=ORIENTED_EDGE('',*,*,#80,.T.);
+#113=EDGE_LOOP('',(#112));
+#114=FACE_BOUND('',#113,.T.);
+#115=ADVANCED_FACE('',(#111,#114),#100,.T.);
+#116=CARTESIAN_POINT('',(0.0,0.0,-0.75));
+#117=DIRECTION('',(0.0,0.0,1.0));
+#118=DIRECTION('',(0.0,-1.0,0.0));
+#119=AXIS2_PLACEMENT_3D('',#116,#117,#118);
+#120=CYLINDRICAL_SURFACE('',#119,31.5);
+#121=CARTESIAN_POINT('',(0.0,-31.5,0.0));
+#122=VERTEX_POINT('',#121);
+#123=CARTESIAN_POINT('',(0.0,0.0,0.0));
+#124=DIRECTION('',(0.0,0.0,1.0));
+#125=DIRECTION('',(0.0,-1.0,0.0));
+#126=AXIS2_PLACEMENT_3D('',#123,#124,#125);
+#127=CIRCLE('',#126,31.5);
+#128=EDGE_CURVE('',#122,#122,#127,.T.);
+#129=ORIENTED_EDGE('',*,*,#128,.F.);
+#130=EDGE_LOOP('',(#129));
+#131=FACE_OUTER_BOUND('',#130,.T.);
+#132=ORIENTED_EDGE('',*,*,#108,.T.);
+#133=EDGE_LOOP('',(#132));
+#134=FACE_BOUND('',#133,.T.);
+#135=ADVANCED_FACE('',(#131,#134),#120,.T.);
+#136=CARTESIAN_POINT('',(-1.293027E-015,4.934325E-016,0.425));
+#137=DIRECTION('',(0.0,0.0,1.0));
+#138=DIRECTION('',(1.0,0.0,0.0));
+#139=AXIS2_PLACEMENT_3D('',#136,#137,#138);
+#140=PLANE('',#139);
+#141=CARTESIAN_POINT('',(-28.561467761918419,3.497771E-015,0.425));
+#142=VERTEX_POINT('',#141);
+#143=CARTESIAN_POINT('',(0.0,0.0,0.425));
+#144=DIRECTION('',(0.0,0.0,-1.0));
+#145=DIRECTION('',(1.0,0.0,0.0));
+#146=AXIS2_PLACEMENT_3D('',#143,#144,#145);
+#147=CIRCLE('',#146,28.561467761918419);
+#148=EDGE_CURVE('',#142,#142,#147,.T.);
+#149=ORIENTED_EDGE('',*,*,#148,.F.);
+#150=EDGE_LOOP('',(#149));
+#151=FACE_OUTER_BOUND('',#150,.T.);
+#152=CARTESIAN_POINT('',(-18.938532238081581,-2.319301E-015,0.425));
+#153=VERTEX_POINT('',#152);
+#154=CARTESIAN_POINT('',(0.0,0.0,0.425));
+#155=DIRECTION('',(0.0,0.0,1.0));
+#156=DIRECTION('',(1.0,0.0,0.0));
+#157=AXIS2_PLACEMENT_3D('',#154,#155,#156);
+#158=CIRCLE('',#157,18.938532238081581);
+#159=EDGE_CURVE('',#153,#153,#158,.T.);
+#160=ORIENTED_EDGE('',*,*,#159,.F.);
+#161=EDGE_LOOP('',(#160));
+#162=FACE_BOUND('',#161,.T.);
+#163=ADVANCED_FACE('',(#151,#162),#140,.T.);
+#164=CARTESIAN_POINT('',(0.0,0.0,0.0));
+#165=DIRECTION('',(0.0,0.0,1.0));
+#166=DIRECTION('',(1.0,0.0,0.0));
+#167=AXIS2_PLACEMENT_3D('',#164,#165,#166);
+#168=TOROIDAL_SURFACE('',#167,30.0,1.5);
+#169=ORIENTED_EDGE('',*,*,#128,.T.);
+#170=EDGE_LOOP('',(#169));
+#171=FACE_OUTER_BOUND('',#170,.T.);
+#172=ORIENTED_EDGE('',*,*,#148,.T.);
+#173=EDGE_LOOP('',(#172));
+#174=FACE_BOUND('',#173,.T.);
+#175=ADVANCED_FACE('',(#171,#174),#168,.T.);
+#176=CARTESIAN_POINT('',(0.0,0.0,0.0));
+#177=DIRECTION('',(0.0,0.0,1.0));
+#178=DIRECTION('',(1.0,0.0,0.0));
+#179=AXIS2_PLACEMENT_3D('',#176,#177,#178);
+#180=TOROIDAL_SURFACE('',#179,17.5,1.5);
+#181=ORIENTED_EDGE('',*,*,#159,.T.);
+#182=EDGE_LOOP('',(#181));
+#183=FACE_OUTER_BOUND('',#182,.T.);
+#184=ORIENTED_EDGE('',*,*,#91,.F.);
+#185=EDGE_LOOP('',(#184));
+#186=FACE_BOUND('',#185,.T.);
+#187=ADVANCED_FACE('',(#183,#186),#180,.T.);
+#188=CLOSED_SHELL('',(#95,#115,#135,#163,#175,#187));
+#189=MANIFOLD_SOLID_BREP('Solid1',#188);
+#190=COLOUR_RGB('Default(1)',0.749019622802734,0.749019622802734,0.584313750267029);
+#191=FILL_AREA_STYLE_COLOUR('Default(1)',#190);
+#192=FILL_AREA_STYLE('Default(1)',(#191));
+#193=SURFACE_STYLE_FILL_AREA(#192);
+#194=SURFACE_SIDE_STYLE('Default(1)',(#193));
+#195=SURFACE_STYLE_USAGE(.BOTH.,#194);
+#196=PRESENTATION_STYLE_ASSIGNMENT((#195));
+#197=STYLED_ITEM('',(#196),#189);
+#198=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#197),#36);
+#199=ADVANCED_BREP_SHAPE_REPRESENTATION('ABSR',(#189),#36);
+#200=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#199,#41);
+ENDSEC;
+END-ISO-10303-21;