kernel-cases: import from #1721-#4006 (19 cases, 59 skipped)

STEP: 3730 void shell flag, 3098 tiny-knot B-spline edges, 2043 opposing
surface sense, 3208 extruded ellipse over its seam, 3352 vertex off its
curve, 3963 closed spline edge, 4005/4006 near-degenerate cones, 3871
cone point, 3880 seam cylinder and dome, 1721 closed B-spline tube.
IGES: 3806 revolved arc cap, 3845 trim gaps, 3359/3913 reversed trim
pieces, 3886 tiny knot span, 3912 reversed hole trim, 3972 two boxes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
bherbruck
2026-10-21 05:43:31 -04:00
committed by jyviko
parent 771a48e4ff
commit 0eae22a5e6
61 changed files with 3282 additions and 0 deletions
@@ -0,0 +1,25 @@
{
"sources": [
"tangency-labs/solidcraft#1721",
"tangency-labs/solidcraft#3880"
],
"what": "a cylinder r=10 h=30 whose side is a closed (rational B-spline) tube face wrapping all the way round a closed non-periodic surface: it must mesh and measure as the full tube",
"source": "analytic",
"method": "V = 3000 pi = 9424.7780; A = 2 pi r h + 2 pi r^2 = 2513.2741; 3 faces",
"body_count": 1,
"volume_mm3": 9424.778,
"area_mm2": 2513.2741,
"faces": 3,
"bbox": {
"min": [
-10,
-10,
0
],
"max": [
10,
10,
30
]
}
}
@@ -0,0 +1,100 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('step-conformance generated part'),'2;1');
FILE_NAME('cylinder_nurbs.step','2026-10-12T00:00:00',(''),(''),'step-conformance generate','step-conformance generate','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-7),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('cylinder_nurbs','cylinder_nurbs','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=DIRECTION('',(0.0,0.0,1.0));
#16=DIRECTION('',(1.0,0.0,0.0));
#17=AXIS2_PLACEMENT_3D('',#14,#15,#16);
#18=CARTESIAN_POINT('',(10.0,0.0,0.0));
#19=CARTESIAN_POINT('',(10.000000000000002,10.0,0.0));
#20=CARTESIAN_POINT('',(6.123233995736766E-16,10.0,0.0));
#21=CARTESIAN_POINT('',(-10.0,10.000000000000002,0.0));
#22=CARTESIAN_POINT('',(-10.0,1.2246467991473533E-15,0.0));
#23=CARTESIAN_POINT('',(-10.000000000000002,-10.0,0.0));
#24=CARTESIAN_POINT('',(-1.8369701987210296E-15,-10.0,0.0));
#25=CARTESIAN_POINT('',(9.999999999999998,-10.000000000000002,0.0));
#26=CARTESIAN_POINT('',(10.0,-2.4492935982947065E-15,0.0));
#27=( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#18,#19,#20,#21,#22,#23,#24,#25,#26),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((3,2,2,2,3),(0.0,0.25,0.5,0.75,1.0),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() RATIONAL_B_SPLINE_CURVE((1.0,0.7071067811865476,1.0,0.7071067811865476,1.0,0.7071067811865476,1.0,0.7071067811865476,1.0)) REPRESENTATION_ITEM('') );
#28=CARTESIAN_POINT('',(10.0,0.0,0.0));
#29=VERTEX_POINT('',#28);
#30=EDGE_CURVE('',#29,#29,#27,.T.);
#31=CARTESIAN_POINT('',(10.0,0.0,30.0));
#32=CARTESIAN_POINT('',(10.000000000000002,10.0,30.0));
#33=CARTESIAN_POINT('',(6.123233995736766E-16,10.0,30.0));
#34=CARTESIAN_POINT('',(-10.0,10.000000000000002,30.0));
#35=CARTESIAN_POINT('',(-10.0,1.2246467991473533E-15,30.0));
#36=CARTESIAN_POINT('',(-10.000000000000002,-10.0,30.0));
#37=CARTESIAN_POINT('',(-1.8369701987210296E-15,-10.0,30.0));
#38=CARTESIAN_POINT('',(9.999999999999998,-10.000000000000002,30.0));
#39=CARTESIAN_POINT('',(10.0,-2.4492935982947065E-15,30.0));
#40=( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#31,#32,#33,#34,#35,#36,#37,#38,#39),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((3,2,2,2,3),(0.0,0.25,0.5,0.75,1.0),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() RATIONAL_B_SPLINE_CURVE((1.0,0.7071067811865476,1.0,0.7071067811865476,1.0,0.7071067811865476,1.0,0.7071067811865476,1.0)) REPRESENTATION_ITEM('') );
#41=CARTESIAN_POINT('',(10.0,0.0,30.0));
#42=VERTEX_POINT('',#41);
#43=EDGE_CURVE('',#42,#42,#40,.T.);
#44=CARTESIAN_POINT('',(0.0,0.0,0.0));
#45=DIRECTION('',(0.0,0.0,1.0));
#46=DIRECTION('',(1.0,0.0,0.0));
#47=AXIS2_PLACEMENT_3D('',#44,#45,#46);
#48=PLANE('',#47);
#49=ORIENTED_EDGE('',*,*,#30,.F.);
#50=EDGE_LOOP('',(#49));
#51=FACE_OUTER_BOUND('',#50,.T.);
#52=ADVANCED_FACE('',(#51),#48,.F.);
#53=CARTESIAN_POINT('',(10.0,0.0,0.0));
#54=CARTESIAN_POINT('',(10.0,0.0,30.0));
#55=CARTESIAN_POINT('',(10.000000000000002,10.0,0.0));
#56=CARTESIAN_POINT('',(10.000000000000002,10.0,30.0));
#57=CARTESIAN_POINT('',(6.123233995736766E-16,10.0,0.0));
#58=CARTESIAN_POINT('',(6.123233995736766E-16,10.0,30.0));
#59=CARTESIAN_POINT('',(-10.0,10.000000000000002,0.0));
#60=CARTESIAN_POINT('',(-10.0,10.000000000000002,30.0));
#61=CARTESIAN_POINT('',(-10.0,1.2246467991473533E-15,0.0));
#62=CARTESIAN_POINT('',(-10.0,1.2246467991473533E-15,30.0));
#63=CARTESIAN_POINT('',(-10.000000000000002,-10.0,0.0));
#64=CARTESIAN_POINT('',(-10.000000000000002,-10.0,30.0));
#65=CARTESIAN_POINT('',(-1.8369701987210296E-15,-10.0,0.0));
#66=CARTESIAN_POINT('',(-1.8369701987210296E-15,-10.0,30.0));
#67=CARTESIAN_POINT('',(9.999999999999998,-10.000000000000002,0.0));
#68=CARTESIAN_POINT('',(9.999999999999998,-10.000000000000002,30.0));
#69=CARTESIAN_POINT('',(10.0,-2.4492935982947065E-15,0.0));
#70=CARTESIAN_POINT('',(10.0,-2.4492935982947065E-15,30.0));
#71=( BOUNDED_SURFACE() B_SPLINE_SURFACE(2,1,((#53,#54),(#55,#56),(#57,#58),(#59,#60),(#61,#62),(#63,#64),(#65,#66),(#67,#68),(#69,#70)),.UNSPECIFIED.,.T.,.F.,.F.) B_SPLINE_SURFACE_WITH_KNOTS((3,2,2,2,3),(2,2),(0.0,0.25,0.5,0.75,1.0),(0.0,1.0),.UNSPECIFIED.) GEOMETRIC_REPRESENTATION_ITEM() RATIONAL_B_SPLINE_SURFACE(((1.0,1.0),(0.7071067811865476,0.7071067811865476),(1.0,1.0),(0.7071067811865476,0.7071067811865476),(1.0,1.0),(0.7071067811865476,0.7071067811865476),(1.0,1.0),(0.7071067811865476,0.7071067811865476),(1.0,1.0))) REPRESENTATION_ITEM('') SURFACE() );
#72=ORIENTED_EDGE('',*,*,#30,.T.);
#73=EDGE_LOOP('',(#72));
#74=ORIENTED_EDGE('',*,*,#43,.F.);
#75=EDGE_LOOP('',(#74));
#76=FACE_OUTER_BOUND('',#73,.T.);
#77=FACE_BOUND('',#75,.T.);
#78=ADVANCED_FACE('',(#76,#77),#71,.T.);
#79=CARTESIAN_POINT('',(0.0,0.0,30.0));
#80=DIRECTION('',(0.0,0.0,1.0));
#81=DIRECTION('',(1.0,0.0,0.0));
#82=AXIS2_PLACEMENT_3D('',#79,#80,#81);
#83=PLANE('',#82);
#84=ORIENTED_EDGE('',*,*,#43,.T.);
#85=EDGE_LOOP('',(#84));
#86=FACE_OUTER_BOUND('',#85,.T.);
#87=ADVANCED_FACE('',(#86),#83,.T.);
#88=CLOSED_SHELL('',(#52,#78,#87));
#89=MANIFOLD_SOLID_BREP('',#88);
#90=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#17,#89),#5);
#91=SHAPE_DEFINITION_REPRESENTATION(#13,#90);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,15 @@
{
"sources": [
"tangency-labs/solidcraft#1974",
"tangency-labs/solidcraft#2043"
],
"what": "a block whose every plane's axis points into the part and whose faces say same_sense .F. while their FACE_OUTER_BOUND loops run counter-clockwise about the outward normal: the loops are outer bounds, not holes",
"source": "analytic",
"method": "box 30x20x10: V = 6000; A = 2200; 6 faces, 12 edges, 8 vertices",
"body_count": 1,
"volume_mm3": 6000.0,
"area_mm2": 2200.0,
"faces": 6,
"edges": 12,
"vertices": 8
}
@@ -0,0 +1,178 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('hand-written test part'),'2;1');
FILE_NAME('input.step','2026-10-21T00:00:00',(''),(''),'kernel-cases','kernel-cases','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1E-06),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('flipped','flipped','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=DIRECTION('',(0.0,1.0,0.0));
#16=VECTOR('',#15,20.0);
#17=LINE('',#14,#16);
#18=CARTESIAN_POINT('',(0.0,0.0,0.0));
#19=VERTEX_POINT('',#18);
#20=CARTESIAN_POINT('',(0.0,20.0,0.0));
#21=VERTEX_POINT('',#20);
#22=EDGE_CURVE('',#19,#21,#17,.T.);
#23=ORIENTED_EDGE('',*,*,#22,.T.);
#24=CARTESIAN_POINT('',(0.0,20.0,0.0));
#25=DIRECTION('',(1.0,0.0,0.0));
#26=VECTOR('',#25,30.0);
#27=LINE('',#24,#26);
#28=CARTESIAN_POINT('',(30.0,20.0,0.0));
#29=VERTEX_POINT('',#28);
#30=EDGE_CURVE('',#21,#29,#27,.T.);
#31=ORIENTED_EDGE('',*,*,#30,.T.);
#32=CARTESIAN_POINT('',(30.0,0.0,0.0));
#33=DIRECTION('',(0.0,1.0,0.0));
#34=VECTOR('',#33,20.0);
#35=LINE('',#32,#34);
#36=CARTESIAN_POINT('',(30.0,0.0,0.0));
#37=VERTEX_POINT('',#36);
#38=EDGE_CURVE('',#37,#29,#35,.T.);
#39=ORIENTED_EDGE('',*,*,#38,.F.);
#40=CARTESIAN_POINT('',(0.0,0.0,0.0));
#41=DIRECTION('',(1.0,0.0,0.0));
#42=VECTOR('',#41,30.0);
#43=LINE('',#40,#42);
#44=EDGE_CURVE('',#19,#37,#43,.T.);
#45=ORIENTED_EDGE('',*,*,#44,.F.);
#46=EDGE_LOOP('',(#23,#31,#39,#45));
#47=FACE_OUTER_BOUND('',#46,.T.);
#48=CARTESIAN_POINT('',(0.0,0.0,0.0));
#49=DIRECTION('',(0.0,0.0,1.0));
#50=DIRECTION('',(1.0,0.0,0.0));
#51=AXIS2_PLACEMENT_3D('',#48,#49,#50);
#52=PLANE('',#51);
#53=ADVANCED_FACE('',(#47),#52,.F.);
#54=CARTESIAN_POINT('',(0.0,0.0,10.0));
#55=DIRECTION('',(1.0,0.0,0.0));
#56=VECTOR('',#55,30.0);
#57=LINE('',#54,#56);
#58=CARTESIAN_POINT('',(0.0,0.0,10.0));
#59=VERTEX_POINT('',#58);
#60=CARTESIAN_POINT('',(30.0,0.0,10.0));
#61=VERTEX_POINT('',#60);
#62=EDGE_CURVE('',#59,#61,#57,.T.);
#63=ORIENTED_EDGE('',*,*,#62,.T.);
#64=CARTESIAN_POINT('',(30.0,0.0,10.0));
#65=DIRECTION('',(0.0,1.0,0.0));
#66=VECTOR('',#65,20.0);
#67=LINE('',#64,#66);
#68=CARTESIAN_POINT('',(30.0,20.0,10.0));
#69=VERTEX_POINT('',#68);
#70=EDGE_CURVE('',#61,#69,#67,.T.);
#71=ORIENTED_EDGE('',*,*,#70,.T.);
#72=CARTESIAN_POINT('',(0.0,20.0,10.0));
#73=DIRECTION('',(1.0,0.0,0.0));
#74=VECTOR('',#73,30.0);
#75=LINE('',#72,#74);
#76=CARTESIAN_POINT('',(0.0,20.0,10.0));
#77=VERTEX_POINT('',#76);
#78=EDGE_CURVE('',#77,#69,#75,.T.);
#79=ORIENTED_EDGE('',*,*,#78,.F.);
#80=CARTESIAN_POINT('',(0.0,0.0,10.0));
#81=DIRECTION('',(0.0,1.0,0.0));
#82=VECTOR('',#81,20.0);
#83=LINE('',#80,#82);
#84=EDGE_CURVE('',#59,#77,#83,.T.);
#85=ORIENTED_EDGE('',*,*,#84,.F.);
#86=EDGE_LOOP('',(#63,#71,#79,#85));
#87=FACE_OUTER_BOUND('',#86,.T.);
#88=CARTESIAN_POINT('',(0.0,0.0,10.0));
#89=DIRECTION('',(0.0,0.0,-1.0));
#90=DIRECTION('',(1.0,0.0,0.0));
#91=AXIS2_PLACEMENT_3D('',#88,#89,#90);
#92=PLANE('',#91);
#93=ADVANCED_FACE('',(#87),#92,.F.);
#94=ORIENTED_EDGE('',*,*,#44,.T.);
#95=CARTESIAN_POINT('',(30.0,0.0,0.0));
#96=DIRECTION('',(0.0,0.0,1.0));
#97=VECTOR('',#96,10.0);
#98=LINE('',#95,#97);
#99=EDGE_CURVE('',#37,#61,#98,.T.);
#100=ORIENTED_EDGE('',*,*,#99,.T.);
#101=ORIENTED_EDGE('',*,*,#62,.F.);
#102=CARTESIAN_POINT('',(0.0,0.0,0.0));
#103=DIRECTION('',(0.0,0.0,1.0));
#104=VECTOR('',#103,10.0);
#105=LINE('',#102,#104);
#106=EDGE_CURVE('',#19,#59,#105,.T.);
#107=ORIENTED_EDGE('',*,*,#106,.F.);
#108=EDGE_LOOP('',(#94,#100,#101,#107));
#109=FACE_OUTER_BOUND('',#108,.T.);
#110=CARTESIAN_POINT('',(0.0,0.0,0.0));
#111=DIRECTION('',(0.0,1.0,0.0));
#112=DIRECTION('',(1.0,0.0,0.0));
#113=AXIS2_PLACEMENT_3D('',#110,#111,#112);
#114=PLANE('',#113);
#115=ADVANCED_FACE('',(#109),#114,.F.);
#116=CARTESIAN_POINT('',(0.0,20.0,0.0));
#117=DIRECTION('',(0.0,0.0,1.0));
#118=VECTOR('',#117,10.0);
#119=LINE('',#116,#118);
#120=EDGE_CURVE('',#21,#77,#119,.T.);
#121=ORIENTED_EDGE('',*,*,#120,.T.);
#122=ORIENTED_EDGE('',*,*,#78,.T.);
#123=CARTESIAN_POINT('',(30.0,20.0,0.0));
#124=DIRECTION('',(0.0,0.0,1.0));
#125=VECTOR('',#124,10.0);
#126=LINE('',#123,#125);
#127=EDGE_CURVE('',#29,#69,#126,.T.);
#128=ORIENTED_EDGE('',*,*,#127,.F.);
#129=ORIENTED_EDGE('',*,*,#30,.F.);
#130=EDGE_LOOP('',(#121,#122,#128,#129));
#131=FACE_OUTER_BOUND('',#130,.T.);
#132=CARTESIAN_POINT('',(0.0,20.0,0.0));
#133=DIRECTION('',(0.0,-1.0,0.0));
#134=DIRECTION('',(1.0,0.0,0.0));
#135=AXIS2_PLACEMENT_3D('',#132,#133,#134);
#136=PLANE('',#135);
#137=ADVANCED_FACE('',(#131),#136,.F.);
#138=ORIENTED_EDGE('',*,*,#106,.T.);
#139=ORIENTED_EDGE('',*,*,#84,.T.);
#140=ORIENTED_EDGE('',*,*,#120,.F.);
#141=ORIENTED_EDGE('',*,*,#22,.F.);
#142=EDGE_LOOP('',(#138,#139,#140,#141));
#143=FACE_OUTER_BOUND('',#142,.T.);
#144=CARTESIAN_POINT('',(0.0,0.0,0.0));
#145=DIRECTION('',(1.0,0.0,0.0));
#146=DIRECTION('',(0.0,1.0,0.0));
#147=AXIS2_PLACEMENT_3D('',#144,#145,#146);
#148=PLANE('',#147);
#149=ADVANCED_FACE('',(#143),#148,.F.);
#150=ORIENTED_EDGE('',*,*,#38,.T.);
#151=ORIENTED_EDGE('',*,*,#127,.T.);
#152=ORIENTED_EDGE('',*,*,#70,.F.);
#153=ORIENTED_EDGE('',*,*,#99,.F.);
#154=EDGE_LOOP('',(#150,#151,#152,#153));
#155=FACE_OUTER_BOUND('',#154,.T.);
#156=CARTESIAN_POINT('',(30.0,0.0,0.0));
#157=DIRECTION('',(-1.0,0.0,0.0));
#158=DIRECTION('',(0.0,1.0,0.0));
#159=AXIS2_PLACEMENT_3D('',#156,#157,#158);
#160=PLANE('',#159);
#161=ADVANCED_FACE('',(#155),#160,.F.);
#162=CLOSED_SHELL('',(#53,#93,#115,#137,#149,#161));
#163=MANIFOLD_SOLID_BREP('block',#162);
#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=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#167,#163),#5);
#169=SHAPE_DEFINITION_REPRESENTATION(#13,#168);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,14 @@
{
"sources": [
"tangency-labs/solidcraft#3098"
],
"what": "a block whose 12 straight edges are degree-1 B-spline curves over a knot span of 1e-7 (as NX writes short edges); the faces must be kept",
"source": "analytic",
"method": "box 30x20x10: V = 6000; A = 2(600+300+200) = 2200; 6 faces, 12 edges, 8 vertices",
"body_count": 1,
"volume_mm3": 6000.0,
"area_mm2": 2200.0,
"faces": 6,
"edges": 12,
"vertices": 8
}
@@ -0,0 +1,166 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('hand-written test part'),'2;1');
FILE_NAME('input.step','2026-10-21T00:00:00',(''),(''),'kernel-cases','kernel-cases','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1E-06),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('nxblock','nxblock','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=CARTESIAN_POINT('',(0.0,20.0,0.0));
#16=B_SPLINE_CURVE_WITH_KNOTS('',1,(#14,#15),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#17=CARTESIAN_POINT('',(0.0,0.0,0.0));
#18=VERTEX_POINT('',#17);
#19=CARTESIAN_POINT('',(0.0,20.0,0.0));
#20=VERTEX_POINT('',#19);
#21=EDGE_CURVE('',#18,#20,#16,.T.);
#22=ORIENTED_EDGE('',*,*,#21,.T.);
#23=CARTESIAN_POINT('',(0.0,20.0,0.0));
#24=CARTESIAN_POINT('',(30.0,20.0,0.0));
#25=B_SPLINE_CURVE_WITH_KNOTS('',1,(#23,#24),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#26=CARTESIAN_POINT('',(30.0,20.0,0.0));
#27=VERTEX_POINT('',#26);
#28=EDGE_CURVE('',#20,#27,#25,.T.);
#29=ORIENTED_EDGE('',*,*,#28,.T.);
#30=CARTESIAN_POINT('',(30.0,0.0,0.0));
#31=CARTESIAN_POINT('',(30.0,20.0,0.0));
#32=B_SPLINE_CURVE_WITH_KNOTS('',1,(#30,#31),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#33=CARTESIAN_POINT('',(30.0,0.0,0.0));
#34=VERTEX_POINT('',#33);
#35=EDGE_CURVE('',#34,#27,#32,.T.);
#36=ORIENTED_EDGE('',*,*,#35,.F.);
#37=CARTESIAN_POINT('',(0.0,0.0,0.0));
#38=CARTESIAN_POINT('',(30.0,0.0,0.0));
#39=B_SPLINE_CURVE_WITH_KNOTS('',1,(#37,#38),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#40=EDGE_CURVE('',#18,#34,#39,.T.);
#41=ORIENTED_EDGE('',*,*,#40,.F.);
#42=EDGE_LOOP('',(#22,#29,#36,#41));
#43=FACE_OUTER_BOUND('',#42,.T.);
#44=CARTESIAN_POINT('',(0.0,0.0,0.0));
#45=DIRECTION('',(0.0,0.0,-1.0));
#46=DIRECTION('',(1.0,0.0,0.0));
#47=AXIS2_PLACEMENT_3D('',#44,#45,#46);
#48=PLANE('',#47);
#49=ADVANCED_FACE('',(#43),#48,.T.);
#50=CARTESIAN_POINT('',(0.0,0.0,10.0));
#51=CARTESIAN_POINT('',(30.0,0.0,10.0));
#52=B_SPLINE_CURVE_WITH_KNOTS('',1,(#50,#51),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#53=CARTESIAN_POINT('',(0.0,0.0,10.0));
#54=VERTEX_POINT('',#53);
#55=CARTESIAN_POINT('',(30.0,0.0,10.0));
#56=VERTEX_POINT('',#55);
#57=EDGE_CURVE('',#54,#56,#52,.T.);
#58=ORIENTED_EDGE('',*,*,#57,.T.);
#59=CARTESIAN_POINT('',(30.0,0.0,10.0));
#60=CARTESIAN_POINT('',(30.0,20.0,10.0));
#61=B_SPLINE_CURVE_WITH_KNOTS('',1,(#59,#60),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#62=CARTESIAN_POINT('',(30.0,20.0,10.0));
#63=VERTEX_POINT('',#62);
#64=EDGE_CURVE('',#56,#63,#61,.T.);
#65=ORIENTED_EDGE('',*,*,#64,.T.);
#66=CARTESIAN_POINT('',(0.0,20.0,10.0));
#67=CARTESIAN_POINT('',(30.0,20.0,10.0));
#68=B_SPLINE_CURVE_WITH_KNOTS('',1,(#66,#67),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#69=CARTESIAN_POINT('',(0.0,20.0,10.0));
#70=VERTEX_POINT('',#69);
#71=EDGE_CURVE('',#70,#63,#68,.T.);
#72=ORIENTED_EDGE('',*,*,#71,.F.);
#73=CARTESIAN_POINT('',(0.0,0.0,10.0));
#74=CARTESIAN_POINT('',(0.0,20.0,10.0));
#75=B_SPLINE_CURVE_WITH_KNOTS('',1,(#73,#74),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#76=EDGE_CURVE('',#54,#70,#75,.T.);
#77=ORIENTED_EDGE('',*,*,#76,.F.);
#78=EDGE_LOOP('',(#58,#65,#72,#77));
#79=FACE_OUTER_BOUND('',#78,.T.);
#80=CARTESIAN_POINT('',(0.0,0.0,10.0));
#81=DIRECTION('',(0.0,0.0,1.0));
#82=DIRECTION('',(1.0,0.0,0.0));
#83=AXIS2_PLACEMENT_3D('',#80,#81,#82);
#84=PLANE('',#83);
#85=ADVANCED_FACE('',(#79),#84,.T.);
#86=ORIENTED_EDGE('',*,*,#40,.T.);
#87=CARTESIAN_POINT('',(30.0,0.0,0.0));
#88=CARTESIAN_POINT('',(30.0,0.0,10.0));
#89=B_SPLINE_CURVE_WITH_KNOTS('',1,(#87,#88),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#90=EDGE_CURVE('',#34,#56,#89,.T.);
#91=ORIENTED_EDGE('',*,*,#90,.T.);
#92=ORIENTED_EDGE('',*,*,#57,.F.);
#93=CARTESIAN_POINT('',(0.0,0.0,0.0));
#94=CARTESIAN_POINT('',(0.0,0.0,10.0));
#95=B_SPLINE_CURVE_WITH_KNOTS('',1,(#93,#94),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#96=EDGE_CURVE('',#18,#54,#95,.T.);
#97=ORIENTED_EDGE('',*,*,#96,.F.);
#98=EDGE_LOOP('',(#86,#91,#92,#97));
#99=FACE_OUTER_BOUND('',#98,.T.);
#100=CARTESIAN_POINT('',(0.0,0.0,0.0));
#101=DIRECTION('',(0.0,-1.0,0.0));
#102=DIRECTION('',(1.0,0.0,0.0));
#103=AXIS2_PLACEMENT_3D('',#100,#101,#102);
#104=PLANE('',#103);
#105=ADVANCED_FACE('',(#99),#104,.T.);
#106=CARTESIAN_POINT('',(0.0,20.0,0.0));
#107=CARTESIAN_POINT('',(0.0,20.0,10.0));
#108=B_SPLINE_CURVE_WITH_KNOTS('',1,(#106,#107),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#109=EDGE_CURVE('',#20,#70,#108,.T.);
#110=ORIENTED_EDGE('',*,*,#109,.T.);
#111=ORIENTED_EDGE('',*,*,#71,.T.);
#112=CARTESIAN_POINT('',(30.0,20.0,0.0));
#113=CARTESIAN_POINT('',(30.0,20.0,10.0));
#114=B_SPLINE_CURVE_WITH_KNOTS('',1,(#112,#113),.UNSPECIFIED.,.F.,.F.,(2,2),(0.,1.E-7),.UNSPECIFIED.);
#115=EDGE_CURVE('',#27,#63,#114,.T.);
#116=ORIENTED_EDGE('',*,*,#115,.F.);
#117=ORIENTED_EDGE('',*,*,#28,.F.);
#118=EDGE_LOOP('',(#110,#111,#116,#117));
#119=FACE_OUTER_BOUND('',#118,.T.);
#120=CARTESIAN_POINT('',(0.0,20.0,0.0));
#121=DIRECTION('',(0.0,1.0,0.0));
#122=DIRECTION('',(1.0,0.0,0.0));
#123=AXIS2_PLACEMENT_3D('',#120,#121,#122);
#124=PLANE('',#123);
#125=ADVANCED_FACE('',(#119),#124,.T.);
#126=ORIENTED_EDGE('',*,*,#96,.T.);
#127=ORIENTED_EDGE('',*,*,#76,.T.);
#128=ORIENTED_EDGE('',*,*,#109,.F.);
#129=ORIENTED_EDGE('',*,*,#21,.F.);
#130=EDGE_LOOP('',(#126,#127,#128,#129));
#131=FACE_OUTER_BOUND('',#130,.T.);
#132=CARTESIAN_POINT('',(0.0,0.0,0.0));
#133=DIRECTION('',(-1.0,0.0,0.0));
#134=DIRECTION('',(0.0,1.0,0.0));
#135=AXIS2_PLACEMENT_3D('',#132,#133,#134);
#136=PLANE('',#135);
#137=ADVANCED_FACE('',(#131),#136,.T.);
#138=ORIENTED_EDGE('',*,*,#35,.T.);
#139=ORIENTED_EDGE('',*,*,#115,.T.);
#140=ORIENTED_EDGE('',*,*,#64,.F.);
#141=ORIENTED_EDGE('',*,*,#90,.F.);
#142=EDGE_LOOP('',(#138,#139,#140,#141));
#143=FACE_OUTER_BOUND('',#142,.T.);
#144=CARTESIAN_POINT('',(30.0,0.0,0.0));
#145=DIRECTION('',(1.0,0.0,0.0));
#146=DIRECTION('',(0.0,1.0,0.0));
#147=AXIS2_PLACEMENT_3D('',#144,#145,#146);
#148=PLANE('',#147);
#149=ADVANCED_FACE('',(#143),#148,.T.);
#150=CLOSED_SHELL('',(#49,#85,#105,#125,#137,#149));
#151=MANIFOLD_SOLID_BREP('block',#150);
#152=CARTESIAN_POINT('',(0.0,0.0,0.0));
#153=DIRECTION('',(0.0,0.0,1.0));
#154=DIRECTION('',(1.0,0.0,0.0));
#155=AXIS2_PLACEMENT_3D('',#152,#153,#154);
#156=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#155,#151),#5);
#157=SHAPE_DEFINITION_REPRESENTATION(#13,#156);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,15 @@
{
"sources": [
"tangency-labs/solidcraft#3120",
"tangency-labs/solidcraft#3208"
],
"what": "a prism over a circular segment whose curved side lies on a SURFACE_OF_LINEAR_EXTRUSION of an ELLIPSE (a = b = 10) and spans the ellipse's parameter origin (-60 to +60 degrees): the face must cover only the narrow segment side, not wrap the ellipse",
"source": "analytic",
"method": "segment of a circle r=10 over theta=2pi/3: A_seg = r^2/2 (theta - sin theta) = 61.418485; height 5; V = A_seg*h = 307.0924; A = 2*A_seg + chord 2 r sin(theta/2)*h + arc r*theta*h = 314.1593; 4 faces, 6 edges, 4 vertices",
"body_count": 1,
"volume_mm3": 307.0924,
"area_mm2": 314.1593,
"faces": 4,
"edges": 6,
"vertices": 4
}
@@ -0,0 +1,117 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('hand-written test part'),'2;1');
FILE_NAME('input.step','2026-10-21T00:00:00',(''),(''),'kernel-cases','kernel-cases','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1E-06),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('segment','segment','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(5.000000000000001,-8.660254037844386,0.0));
#15=VERTEX_POINT('',#14);
#16=CARTESIAN_POINT('',(5.000000000000001,8.660254037844386,0.0));
#17=VERTEX_POINT('',#16);
#18=CARTESIAN_POINT('',(5.000000000000001,8.660254037844386,5.0));
#19=VERTEX_POINT('',#18);
#20=CARTESIAN_POINT('',(5.000000000000001,-8.660254037844386,5.0));
#21=VERTEX_POINT('',#20);
#22=CARTESIAN_POINT('',(0.0,0.0,0.0));
#23=DIRECTION('',(0.0,0.0,1.0));
#24=DIRECTION('',(1.0,0.0,0.0));
#25=AXIS2_PLACEMENT_3D('',#22,#23,#24);
#26=ELLIPSE('',#25,10.0,10.0);
#27=EDGE_CURVE('',#15,#17,#26,.T.);
#28=CARTESIAN_POINT('',(0.0,0.0,5.0));
#29=DIRECTION('',(0.0,0.0,1.0));
#30=DIRECTION('',(1.0,0.0,0.0));
#31=AXIS2_PLACEMENT_3D('',#28,#29,#30);
#32=ELLIPSE('',#31,10.0,10.0);
#33=EDGE_CURVE('',#21,#19,#32,.T.);
#34=CARTESIAN_POINT('',(5.000000000000001,8.660254037844386,0.0));
#35=DIRECTION('',(0.0,-1.0,0.0));
#36=VECTOR('',#35,17.32050807568877);
#37=LINE('',#34,#36);
#38=EDGE_CURVE('',#17,#15,#37,.T.);
#39=CARTESIAN_POINT('',(5.000000000000001,8.660254037844386,5.0));
#40=DIRECTION('',(0.0,-1.0,0.0));
#41=VECTOR('',#40,17.32050807568877);
#42=LINE('',#39,#41);
#43=EDGE_CURVE('',#19,#21,#42,.T.);
#44=CARTESIAN_POINT('',(5.000000000000001,8.660254037844386,0.0));
#45=DIRECTION('',(0.0,0.0,1.0));
#46=VECTOR('',#45,5.0);
#47=LINE('',#44,#46);
#48=EDGE_CURVE('',#17,#19,#47,.T.);
#49=CARTESIAN_POINT('',(5.000000000000001,-8.660254037844386,0.0));
#50=DIRECTION('',(0.0,0.0,1.0));
#51=VECTOR('',#50,5.0);
#52=LINE('',#49,#51);
#53=EDGE_CURVE('',#15,#21,#52,.T.);
#54=CARTESIAN_POINT('',(0.0,0.0,0.0));
#55=DIRECTION('',(0.0,0.0,-1.0));
#56=DIRECTION('',(1.0,0.0,0.0));
#57=AXIS2_PLACEMENT_3D('',#54,#55,#56);
#58=PLANE('',#57);
#59=ORIENTED_EDGE('',*,*,#38,.F.);
#60=ORIENTED_EDGE('',*,*,#27,.F.);
#61=EDGE_LOOP('',(#59,#60));
#62=FACE_OUTER_BOUND('',#61,.T.);
#63=ADVANCED_FACE('',(#62),#58,.T.);
#64=CARTESIAN_POINT('',(0.0,0.0,5.0));
#65=DIRECTION('',(0.0,0.0,1.0));
#66=DIRECTION('',(1.0,0.0,0.0));
#67=AXIS2_PLACEMENT_3D('',#64,#65,#66);
#68=PLANE('',#67);
#69=ORIENTED_EDGE('',*,*,#33,.T.);
#70=ORIENTED_EDGE('',*,*,#43,.T.);
#71=EDGE_LOOP('',(#69,#70));
#72=FACE_OUTER_BOUND('',#71,.T.);
#73=ADVANCED_FACE('',(#72),#68,.T.);
#74=CARTESIAN_POINT('',(5.000000000000001,0.0,0.0));
#75=DIRECTION('',(-1.0,0.0,0.0));
#76=DIRECTION('',(0.0,1.0,0.0));
#77=AXIS2_PLACEMENT_3D('',#74,#75,#76);
#78=PLANE('',#77);
#79=ORIENTED_EDGE('',*,*,#53,.T.);
#80=ORIENTED_EDGE('',*,*,#43,.F.);
#81=ORIENTED_EDGE('',*,*,#48,.F.);
#82=ORIENTED_EDGE('',*,*,#38,.T.);
#83=EDGE_LOOP('',(#79,#80,#81,#82));
#84=FACE_OUTER_BOUND('',#83,.T.);
#85=ADVANCED_FACE('',(#84),#78,.T.);
#86=CARTESIAN_POINT('',(0.0,0.0,0.0));
#87=DIRECTION('',(0.0,0.0,1.0));
#88=DIRECTION('',(1.0,0.0,0.0));
#89=AXIS2_PLACEMENT_3D('',#86,#87,#88);
#90=ELLIPSE('',#89,10.0,10.0);
#91=DIRECTION('',(0.0,0.0,1.0));
#92=VECTOR('',#91,1.);
#93=SURFACE_OF_LINEAR_EXTRUSION('',#90,#92);
#94=ORIENTED_EDGE('',*,*,#27,.T.);
#95=ORIENTED_EDGE('',*,*,#48,.T.);
#96=ORIENTED_EDGE('',*,*,#33,.F.);
#97=ORIENTED_EDGE('',*,*,#53,.F.);
#98=EDGE_LOOP('',(#94,#95,#96,#97));
#99=FACE_OUTER_BOUND('',#98,.T.);
#100=ADVANCED_FACE('',(#99),#93,.T.);
#101=CLOSED_SHELL('',(#63,#73,#85,#100));
#102=MANIFOLD_SOLID_BREP('segment',#101);
#103=CARTESIAN_POINT('',(0.0,0.0,0.0));
#104=DIRECTION('',(0.0,0.0,1.0));
#105=DIRECTION('',(1.0,0.0,0.0));
#106=AXIS2_PLACEMENT_3D('',#103,#104,#105);
#107=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#106,#102),#5);
#108=SHAPE_DEFINITION_REPRESENTATION(#13,#107);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,13 @@
{
"sources": [
"tangency-labs/solidcraft#3351",
"tangency-labs/solidcraft#3352"
],
"what": "a 300 mm square surface whose corner vertex sits 0.19 mm off the end of its edge's curve (the file declares 0.01 mm accuracy): the face must be kept, the vertex snapped onto the curve",
"source": "analytic",
"method": "one planar face 300 x 300: A = 90000 (the 0.19 mm slip changes it by 0.03%, inside the 1e-3 tolerance); a sheet, not a closed solid, so valid is false; 1 face",
"valid": false,
"body_count": 1,
"area_mm2": 90000.0,
"faces": 1
}
@@ -0,0 +1,70 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('hand-written test part'),'2;1');
FILE_NAME('input.step','2026-10-21T00:00:00',(''),(''),'kernel-cases','kernel-cases','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('panel','panel','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=VERTEX_POINT('',#14);
#16=CARTESIAN_POINT('',(300.0,0.19,0.0));
#17=VERTEX_POINT('',#16);
#18=CARTESIAN_POINT('',(300.0,300.0,0.0));
#19=VERTEX_POINT('',#18);
#20=CARTESIAN_POINT('',(0.0,300.0,0.0));
#21=VERTEX_POINT('',#20);
#22=CARTESIAN_POINT('',(0.0,0.0,0.0));
#23=DIRECTION('',(1.0,0.0,0.0));
#24=VECTOR('',#23,300.0);
#25=LINE('',#22,#24);
#26=EDGE_CURVE('',#15,#17,#25,.T.);
#27=CARTESIAN_POINT('',(300.0,0.0,0.0));
#28=DIRECTION('',(0.0,1.0,0.0));
#29=VECTOR('',#28,300.0);
#30=LINE('',#27,#29);
#31=EDGE_CURVE('',#17,#19,#30,.T.);
#32=CARTESIAN_POINT('',(300.0,300.0,0.0));
#33=DIRECTION('',(-1.0,0.0,0.0));
#34=VECTOR('',#33,300.0);
#35=LINE('',#32,#34);
#36=EDGE_CURVE('',#19,#21,#35,.T.);
#37=CARTESIAN_POINT('',(0.0,300.0,0.0));
#38=DIRECTION('',(0.0,-1.0,0.0));
#39=VECTOR('',#38,300.0);
#40=LINE('',#37,#39);
#41=EDGE_CURVE('',#21,#15,#40,.T.);
#42=ORIENTED_EDGE('',*,*,#26,.T.);
#43=ORIENTED_EDGE('',*,*,#31,.T.);
#44=ORIENTED_EDGE('',*,*,#36,.T.);
#45=ORIENTED_EDGE('',*,*,#41,.T.);
#46=EDGE_LOOP('',(#42,#43,#44,#45));
#47=FACE_OUTER_BOUND('',#46,.T.);
#48=CARTESIAN_POINT('',(0.0,0.0,0.0));
#49=DIRECTION('',(0.0,0.0,1.0));
#50=DIRECTION('',(1.0,0.0,0.0));
#51=AXIS2_PLACEMENT_3D('',#48,#49,#50);
#52=PLANE('',#51);
#53=ADVANCED_FACE('',(#47),#52,.T.);
#54=OPEN_SHELL('',(#53));
#55=SHELL_BASED_SURFACE_MODEL('panel',(#54));
#56=CARTESIAN_POINT('',(0.0,0.0,0.0));
#57=DIRECTION('',(0.0,0.0,1.0));
#58=DIRECTION('',(1.0,0.0,0.0));
#59=AXIS2_PLACEMENT_3D('',#56,#57,#58);
#60=MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#59,#55),#5);
#61=SHAPE_DEFINITION_REPRESENTATION(#13,#60);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,13 @@
{
"sources": [
"tangency-labs/solidcraft#3358",
"tangency-labs/solidcraft#3359"
],
"what": "a box of six trimmed planes whose composite trim curves have their 2nd and 4th pieces written end to start: every loop must still close",
"method": "box 10 x 20 x 30 of six trimmed bilinear patches: V = 6000; A = 2(200+300+600) = 2200; 6 faces",
"source": "analytic",
"body_count": 1,
"volume_mm3": 6000.0,
"area_mm2": 2200.0,
"faces": 6
}
@@ -0,0 +1,153 @@
test S 1
1H,,1H;,,,,,,,,,,,1.,2,2HMM,,,,1.E-6; G 1
128 1 0 0 0 0 0 000000000D 1
128 0 0 2 0 0 0 0D 2
110 3 0 0 0 0 0 000000000D 3
110 0 0 1 0 0 0 0D 4
110 4 0 0 0 0 0 000000000D 5
110 0 0 1 0 0 0 0D 6
110 5 0 0 0 0 0 000000000D 7
110 0 0 1 0 0 0 0D 8
110 6 0 0 0 0 0 000000000D 9
110 0 0 1 0 0 0 0D 10
102 7 0 0 0 0 0 000000000D 11
102 0 0 1 0 0 0 0D 12
142 8 0 0 0 0 0 000000000D 13
142 0 0 1 0 0 0 0D 14
144 9 0 0 0 0 0 000000000D 15
144 0 0 1 0 0 0 0D 16
128 10 0 0 0 0 0 000000000D 17
128 0 0 2 0 0 0 0D 18
110 12 0 0 0 0 0 000000000D 19
110 0 0 1 0 0 0 0D 20
110 13 0 0 0 0 0 000000000D 21
110 0 0 1 0 0 0 0D 22
110 14 0 0 0 0 0 000000000D 23
110 0 0 1 0 0 0 0D 24
110 15 0 0 0 0 0 000000000D 25
110 0 0 1 0 0 0 0D 26
102 16 0 0 0 0 0 000000000D 27
102 0 0 1 0 0 0 0D 28
142 17 0 0 0 0 0 000000000D 29
142 0 0 1 0 0 0 0D 30
144 18 0 0 0 0 0 000000000D 31
144 0 0 1 0 0 0 0D 32
128 19 0 0 0 0 0 000000000D 33
128 0 0 2 0 0 0 0D 34
110 21 0 0 0 0 0 000000000D 35
110 0 0 1 0 0 0 0D 36
110 22 0 0 0 0 0 000000000D 37
110 0 0 1 0 0 0 0D 38
110 23 0 0 0 0 0 000000000D 39
110 0 0 1 0 0 0 0D 40
110 24 0 0 0 0 0 000000000D 41
110 0 0 1 0 0 0 0D 42
102 25 0 0 0 0 0 000000000D 43
102 0 0 1 0 0 0 0D 44
142 26 0 0 0 0 0 000000000D 45
142 0 0 1 0 0 0 0D 46
144 27 0 0 0 0 0 000000000D 47
144 0 0 1 0 0 0 0D 48
128 28 0 0 0 0 0 000000000D 49
128 0 0 2 0 0 0 0D 50
110 30 0 0 0 0 0 000000000D 51
110 0 0 1 0 0 0 0D 52
110 31 0 0 0 0 0 000000000D 53
110 0 0 1 0 0 0 0D 54
110 32 0 0 0 0 0 000000000D 55
110 0 0 1 0 0 0 0D 56
110 33 0 0 0 0 0 000000000D 57
110 0 0 1 0 0 0 0D 58
102 34 0 0 0 0 0 000000000D 59
102 0 0 1 0 0 0 0D 60
142 35 0 0 0 0 0 000000000D 61
142 0 0 1 0 0 0 0D 62
144 36 0 0 0 0 0 000000000D 63
144 0 0 1 0 0 0 0D 64
128 37 0 0 0 0 0 000000000D 65
128 0 0 2 0 0 0 0D 66
110 39 0 0 0 0 0 000000000D 67
110 0 0 1 0 0 0 0D 68
110 40 0 0 0 0 0 000000000D 69
110 0 0 1 0 0 0 0D 70
110 41 0 0 0 0 0 000000000D 71
110 0 0 1 0 0 0 0D 72
110 42 0 0 0 0 0 000000000D 73
110 0 0 1 0 0 0 0D 74
102 43 0 0 0 0 0 000000000D 75
102 0 0 1 0 0 0 0D 76
142 44 0 0 0 0 0 000000000D 77
142 0 0 1 0 0 0 0D 78
144 45 0 0 0 0 0 000000000D 79
144 0 0 1 0 0 0 0D 80
128 46 0 0 0 0 0 000000000D 81
128 0 0 2 0 0 0 0D 82
110 48 0 0 0 0 0 000000000D 83
110 0 0 1 0 0 0 0D 84
110 49 0 0 0 0 0 000000000D 85
110 0 0 1 0 0 0 0D 86
110 50 0 0 0 0 0 000000000D 87
110 0 0 1 0 0 0 0D 88
110 51 0 0 0 0 0 000000000D 89
110 0 0 1 0 0 0 0D 90
102 52 0 0 0 0 0 000000000D 91
102 0 0 1 0 0 0 0D 92
142 53 0 0 0 0 0 000000000D 93
142 0 0 1 0 0 0 0D 94
144 54 0 0 0 0 0 000000000D 95
144 0 0 1 0 0 0 0D 96
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 1P 1
0,0.0,0.0,20.0,0.0,10.0,0.0,0.0,10.0,20.0,0.0,0.,1.,0.,1.; 1P 2
110,0.0,0.0,0.0,0.0,20.0,0.0; 3P 3
110,10.0,20.0,0.0,0.0,20.0,0.0; 5P 4
110,10.0,20.0,0.0,10.0,0.0,0.0; 7P 5
110,0.0,0.0,0.0,10.0,0.0,0.0; 9P 6
102,4,3,5,7,9; 11P 7
142,0,1,0,11,2; 13P 8
144,1,1,0,13; 15P 9
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 17P 10
0,30.0,10.0,0.0,30.0,0.0,20.0,30.0,10.0,20.0,30.0,0.,1.,0.,1.; 17P 11
110,0.0,0.0,30.0,10.0,0.0,30.0; 19P 12
110,10.0,20.0,30.0,10.0,0.0,30.0; 21P 13
110,10.0,20.0,30.0,0.0,20.0,30.0; 23P 14
110,0.0,0.0,30.0,0.0,20.0,30.0; 25P 15
102,4,19,21,23,25; 27P 16
142,0,17,0,27,2; 29P 17
144,17,1,0,29; 31P 18
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 33P 19
0,0.0,10.0,0.0,0.0,0.0,0.0,30.0,10.0,0.0,30.0,0.,1.,0.,1.; 33P 20
110,0.0,0.0,0.0,10.0,0.0,0.0; 35P 21
110,10.0,0.0,30.0,10.0,0.0,0.0; 37P 22
110,10.0,0.0,30.0,0.0,0.0,30.0; 39P 23
110,0.0,0.0,0.0,0.0,0.0,30.0; 41P 24
102,4,35,37,39,41; 43P 25
142,0,33,0,43,2; 45P 26
144,33,1,0,45; 47P 27
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,20 49P 28
.0,0.0,0.0,20.0,30.0,10.0,20.0,0.0,10.0,20.0,30.0,0.,1.,0.,1.; 49P 29
110,0.0,20.0,0.0,0.0,20.0,30.0; 51P 30
110,10.0,20.0,30.0,0.0,20.0,30.0; 53P 31
110,10.0,20.0,30.0,10.0,20.0,0.0; 55P 32
110,0.0,20.0,0.0,10.0,20.0,0.0; 57P 33
102,4,51,53,55,57; 59P 34
142,0,49,0,59,2; 61P 35
144,49,1,0,61; 63P 36
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 65P 37
0,0.0,0.0,0.0,30.0,0.0,20.0,0.0,0.0,20.0,30.0,0.,1.,0.,1.; 65P 38
110,0.0,0.0,0.0,0.0,0.0,30.0; 67P 39
110,0.0,20.0,30.0,0.0,0.0,30.0; 69P 40
110,0.0,20.0,30.0,0.0,20.0,0.0; 71P 41
110,0.0,0.0,0.0,0.0,20.0,0.0; 73P 42
102,4,67,69,71,73; 75P 43
142,0,65,0,75,2; 77P 44
144,65,1,0,77; 79P 45
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,10.0,0 81P 46
.0,0.0,10.0,20.0,0.0,10.0,0.0,30.0,10.0,20.0,30.0,0.,1.,0.,1.; 81P 47
110,10.0,0.0,0.0,10.0,20.0,0.0; 83P 48
110,10.0,20.0,30.0,10.0,20.0,0.0; 85P 49
110,10.0,20.0,30.0,10.0,0.0,30.0; 87P 50
110,10.0,0.0,0.0,10.0,0.0,30.0; 89P 51
102,4,83,85,87,89; 91P 52
142,0,81,0,91,2; 93P 53
144,81,1,0,93; 95P 54
T 1
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.igs"
}
}
]
}
@@ -0,0 +1,16 @@
{
"sources": [
"tangency-labs/solidcraft#3730",
"tangency-labs/solidcraft#3872"
],
"what": "a block with a closed cavity written as BREP_WITH_VOIDS whose void shell (outward-facing faces) is turned by ORIENTED_CLOSED_SHELL .F.; the cavity must be taken out, not added",
"source": "analytic",
"method": "V = 40*30*12.5 - 20*6*5 = 15000 - 600; A = 2(40*30+40*12.5+30*12.5) + 2(20*6+20*5+6*5) = 4150 + 500; faces 6+6, edges 12+12, vertices 8+8; valid is false only because a body with a void holds two shells (outer and cavity), which the one-shell validity check does not allow",
"valid": false,
"body_count": 1,
"volume_mm3": 14400.0,
"area_mm2": 4650.0,
"faces": 12,
"edges": 24,
"vertices": 16
}
@@ -0,0 +1,328 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('hand-written test part'),'2;1');
FILE_NAME('input.step','2026-10-21T00:00:00',(''),(''),'kernel-cases','kernel-cases','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1E-06),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('hollow','hollow','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=DIRECTION('',(0.0,1.0,0.0));
#16=VECTOR('',#15,30.0);
#17=LINE('',#14,#16);
#18=CARTESIAN_POINT('',(0.0,0.0,0.0));
#19=VERTEX_POINT('',#18);
#20=CARTESIAN_POINT('',(0.0,30.0,0.0));
#21=VERTEX_POINT('',#20);
#22=EDGE_CURVE('',#19,#21,#17,.T.);
#23=ORIENTED_EDGE('',*,*,#22,.T.);
#24=CARTESIAN_POINT('',(0.0,30.0,0.0));
#25=DIRECTION('',(1.0,0.0,0.0));
#26=VECTOR('',#25,40.0);
#27=LINE('',#24,#26);
#28=CARTESIAN_POINT('',(40.0,30.0,0.0));
#29=VERTEX_POINT('',#28);
#30=EDGE_CURVE('',#21,#29,#27,.T.);
#31=ORIENTED_EDGE('',*,*,#30,.T.);
#32=CARTESIAN_POINT('',(40.0,0.0,0.0));
#33=DIRECTION('',(0.0,1.0,0.0));
#34=VECTOR('',#33,30.0);
#35=LINE('',#32,#34);
#36=CARTESIAN_POINT('',(40.0,0.0,0.0));
#37=VERTEX_POINT('',#36);
#38=EDGE_CURVE('',#37,#29,#35,.T.);
#39=ORIENTED_EDGE('',*,*,#38,.F.);
#40=CARTESIAN_POINT('',(0.0,0.0,0.0));
#41=DIRECTION('',(1.0,0.0,0.0));
#42=VECTOR('',#41,40.0);
#43=LINE('',#40,#42);
#44=EDGE_CURVE('',#19,#37,#43,.T.);
#45=ORIENTED_EDGE('',*,*,#44,.F.);
#46=EDGE_LOOP('',(#23,#31,#39,#45));
#47=FACE_OUTER_BOUND('',#46,.T.);
#48=CARTESIAN_POINT('',(0.0,0.0,0.0));
#49=DIRECTION('',(0.0,0.0,-1.0));
#50=DIRECTION('',(1.0,0.0,0.0));
#51=AXIS2_PLACEMENT_3D('',#48,#49,#50);
#52=PLANE('',#51);
#53=ADVANCED_FACE('',(#47),#52,.T.);
#54=CARTESIAN_POINT('',(0.0,0.0,12.5));
#55=DIRECTION('',(1.0,0.0,0.0));
#56=VECTOR('',#55,40.0);
#57=LINE('',#54,#56);
#58=CARTESIAN_POINT('',(0.0,0.0,12.5));
#59=VERTEX_POINT('',#58);
#60=CARTESIAN_POINT('',(40.0,0.0,12.5));
#61=VERTEX_POINT('',#60);
#62=EDGE_CURVE('',#59,#61,#57,.T.);
#63=ORIENTED_EDGE('',*,*,#62,.T.);
#64=CARTESIAN_POINT('',(40.0,0.0,12.5));
#65=DIRECTION('',(0.0,1.0,0.0));
#66=VECTOR('',#65,30.0);
#67=LINE('',#64,#66);
#68=CARTESIAN_POINT('',(40.0,30.0,12.5));
#69=VERTEX_POINT('',#68);
#70=EDGE_CURVE('',#61,#69,#67,.T.);
#71=ORIENTED_EDGE('',*,*,#70,.T.);
#72=CARTESIAN_POINT('',(0.0,30.0,12.5));
#73=DIRECTION('',(1.0,0.0,0.0));
#74=VECTOR('',#73,40.0);
#75=LINE('',#72,#74);
#76=CARTESIAN_POINT('',(0.0,30.0,12.5));
#77=VERTEX_POINT('',#76);
#78=EDGE_CURVE('',#77,#69,#75,.T.);
#79=ORIENTED_EDGE('',*,*,#78,.F.);
#80=CARTESIAN_POINT('',(0.0,0.0,12.5));
#81=DIRECTION('',(0.0,1.0,0.0));
#82=VECTOR('',#81,30.0);
#83=LINE('',#80,#82);
#84=EDGE_CURVE('',#59,#77,#83,.T.);
#85=ORIENTED_EDGE('',*,*,#84,.F.);
#86=EDGE_LOOP('',(#63,#71,#79,#85));
#87=FACE_OUTER_BOUND('',#86,.T.);
#88=CARTESIAN_POINT('',(0.0,0.0,12.5));
#89=DIRECTION('',(0.0,0.0,1.0));
#90=DIRECTION('',(1.0,0.0,0.0));
#91=AXIS2_PLACEMENT_3D('',#88,#89,#90);
#92=PLANE('',#91);
#93=ADVANCED_FACE('',(#87),#92,.T.);
#94=ORIENTED_EDGE('',*,*,#44,.T.);
#95=CARTESIAN_POINT('',(40.0,0.0,0.0));
#96=DIRECTION('',(0.0,0.0,1.0));
#97=VECTOR('',#96,12.5);
#98=LINE('',#95,#97);
#99=EDGE_CURVE('',#37,#61,#98,.T.);
#100=ORIENTED_EDGE('',*,*,#99,.T.);
#101=ORIENTED_EDGE('',*,*,#62,.F.);
#102=CARTESIAN_POINT('',(0.0,0.0,0.0));
#103=DIRECTION('',(0.0,0.0,1.0));
#104=VECTOR('',#103,12.5);
#105=LINE('',#102,#104);
#106=EDGE_CURVE('',#19,#59,#105,.T.);
#107=ORIENTED_EDGE('',*,*,#106,.F.);
#108=EDGE_LOOP('',(#94,#100,#101,#107));
#109=FACE_OUTER_BOUND('',#108,.T.);
#110=CARTESIAN_POINT('',(0.0,0.0,0.0));
#111=DIRECTION('',(0.0,-1.0,0.0));
#112=DIRECTION('',(1.0,0.0,0.0));
#113=AXIS2_PLACEMENT_3D('',#110,#111,#112);
#114=PLANE('',#113);
#115=ADVANCED_FACE('',(#109),#114,.T.);
#116=CARTESIAN_POINT('',(0.0,30.0,0.0));
#117=DIRECTION('',(0.0,0.0,1.0));
#118=VECTOR('',#117,12.5);
#119=LINE('',#116,#118);
#120=EDGE_CURVE('',#21,#77,#119,.T.);
#121=ORIENTED_EDGE('',*,*,#120,.T.);
#122=ORIENTED_EDGE('',*,*,#78,.T.);
#123=CARTESIAN_POINT('',(40.0,30.0,0.0));
#124=DIRECTION('',(0.0,0.0,1.0));
#125=VECTOR('',#124,12.5);
#126=LINE('',#123,#125);
#127=EDGE_CURVE('',#29,#69,#126,.T.);
#128=ORIENTED_EDGE('',*,*,#127,.F.);
#129=ORIENTED_EDGE('',*,*,#30,.F.);
#130=EDGE_LOOP('',(#121,#122,#128,#129));
#131=FACE_OUTER_BOUND('',#130,.T.);
#132=CARTESIAN_POINT('',(0.0,30.0,0.0));
#133=DIRECTION('',(0.0,1.0,0.0));
#134=DIRECTION('',(1.0,0.0,0.0));
#135=AXIS2_PLACEMENT_3D('',#132,#133,#134);
#136=PLANE('',#135);
#137=ADVANCED_FACE('',(#131),#136,.T.);
#138=ORIENTED_EDGE('',*,*,#106,.T.);
#139=ORIENTED_EDGE('',*,*,#84,.T.);
#140=ORIENTED_EDGE('',*,*,#120,.F.);
#141=ORIENTED_EDGE('',*,*,#22,.F.);
#142=EDGE_LOOP('',(#138,#139,#140,#141));
#143=FACE_OUTER_BOUND('',#142,.T.);
#144=CARTESIAN_POINT('',(0.0,0.0,0.0));
#145=DIRECTION('',(-1.0,0.0,0.0));
#146=DIRECTION('',(0.0,1.0,0.0));
#147=AXIS2_PLACEMENT_3D('',#144,#145,#146);
#148=PLANE('',#147);
#149=ADVANCED_FACE('',(#143),#148,.T.);
#150=ORIENTED_EDGE('',*,*,#38,.T.);
#151=ORIENTED_EDGE('',*,*,#127,.T.);
#152=ORIENTED_EDGE('',*,*,#70,.F.);
#153=ORIENTED_EDGE('',*,*,#99,.F.);
#154=EDGE_LOOP('',(#150,#151,#152,#153));
#155=FACE_OUTER_BOUND('',#154,.T.);
#156=CARTESIAN_POINT('',(40.0,0.0,0.0));
#157=DIRECTION('',(1.0,0.0,0.0));
#158=DIRECTION('',(0.0,1.0,0.0));
#159=AXIS2_PLACEMENT_3D('',#156,#157,#158);
#160=PLANE('',#159);
#161=ADVANCED_FACE('',(#155),#160,.T.);
#162=CLOSED_SHELL('',(#53,#93,#115,#137,#149,#161));
#163=CARTESIAN_POINT('',(10.0,12.0,4.0));
#164=DIRECTION('',(0.0,1.0,0.0));
#165=VECTOR('',#164,6.0);
#166=LINE('',#163,#165);
#167=CARTESIAN_POINT('',(10.0,12.0,4.0));
#168=VERTEX_POINT('',#167);
#169=CARTESIAN_POINT('',(10.0,18.0,4.0));
#170=VERTEX_POINT('',#169);
#171=EDGE_CURVE('',#168,#170,#166,.T.);
#172=ORIENTED_EDGE('',*,*,#171,.T.);
#173=CARTESIAN_POINT('',(10.0,18.0,4.0));
#174=DIRECTION('',(1.0,0.0,0.0));
#175=VECTOR('',#174,20.0);
#176=LINE('',#173,#175);
#177=CARTESIAN_POINT('',(30.0,18.0,4.0));
#178=VERTEX_POINT('',#177);
#179=EDGE_CURVE('',#170,#178,#176,.T.);
#180=ORIENTED_EDGE('',*,*,#179,.T.);
#181=CARTESIAN_POINT('',(30.0,12.0,4.0));
#182=DIRECTION('',(0.0,1.0,0.0));
#183=VECTOR('',#182,6.0);
#184=LINE('',#181,#183);
#185=CARTESIAN_POINT('',(30.0,12.0,4.0));
#186=VERTEX_POINT('',#185);
#187=EDGE_CURVE('',#186,#178,#184,.T.);
#188=ORIENTED_EDGE('',*,*,#187,.F.);
#189=CARTESIAN_POINT('',(10.0,12.0,4.0));
#190=DIRECTION('',(1.0,0.0,0.0));
#191=VECTOR('',#190,20.0);
#192=LINE('',#189,#191);
#193=EDGE_CURVE('',#168,#186,#192,.T.);
#194=ORIENTED_EDGE('',*,*,#193,.F.);
#195=EDGE_LOOP('',(#172,#180,#188,#194));
#196=FACE_OUTER_BOUND('',#195,.T.);
#197=CARTESIAN_POINT('',(10.0,12.0,4.0));
#198=DIRECTION('',(0.0,0.0,-1.0));
#199=DIRECTION('',(1.0,0.0,0.0));
#200=AXIS2_PLACEMENT_3D('',#197,#198,#199);
#201=PLANE('',#200);
#202=ADVANCED_FACE('',(#196),#201,.T.);
#203=CARTESIAN_POINT('',(10.0,12.0,9.0));
#204=DIRECTION('',(1.0,0.0,0.0));
#205=VECTOR('',#204,20.0);
#206=LINE('',#203,#205);
#207=CARTESIAN_POINT('',(10.0,12.0,9.0));
#208=VERTEX_POINT('',#207);
#209=CARTESIAN_POINT('',(30.0,12.0,9.0));
#210=VERTEX_POINT('',#209);
#211=EDGE_CURVE('',#208,#210,#206,.T.);
#212=ORIENTED_EDGE('',*,*,#211,.T.);
#213=CARTESIAN_POINT('',(30.0,12.0,9.0));
#214=DIRECTION('',(0.0,1.0,0.0));
#215=VECTOR('',#214,6.0);
#216=LINE('',#213,#215);
#217=CARTESIAN_POINT('',(30.0,18.0,9.0));
#218=VERTEX_POINT('',#217);
#219=EDGE_CURVE('',#210,#218,#216,.T.);
#220=ORIENTED_EDGE('',*,*,#219,.T.);
#221=CARTESIAN_POINT('',(10.0,18.0,9.0));
#222=DIRECTION('',(1.0,0.0,0.0));
#223=VECTOR('',#222,20.0);
#224=LINE('',#221,#223);
#225=CARTESIAN_POINT('',(10.0,18.0,9.0));
#226=VERTEX_POINT('',#225);
#227=EDGE_CURVE('',#226,#218,#224,.T.);
#228=ORIENTED_EDGE('',*,*,#227,.F.);
#229=CARTESIAN_POINT('',(10.0,12.0,9.0));
#230=DIRECTION('',(0.0,1.0,0.0));
#231=VECTOR('',#230,6.0);
#232=LINE('',#229,#231);
#233=EDGE_CURVE('',#208,#226,#232,.T.);
#234=ORIENTED_EDGE('',*,*,#233,.F.);
#235=EDGE_LOOP('',(#212,#220,#228,#234));
#236=FACE_OUTER_BOUND('',#235,.T.);
#237=CARTESIAN_POINT('',(10.0,12.0,9.0));
#238=DIRECTION('',(0.0,0.0,1.0));
#239=DIRECTION('',(1.0,0.0,0.0));
#240=AXIS2_PLACEMENT_3D('',#237,#238,#239);
#241=PLANE('',#240);
#242=ADVANCED_FACE('',(#236),#241,.T.);
#243=ORIENTED_EDGE('',*,*,#193,.T.);
#244=CARTESIAN_POINT('',(30.0,12.0,4.0));
#245=DIRECTION('',(0.0,0.0,1.0));
#246=VECTOR('',#245,5.0);
#247=LINE('',#244,#246);
#248=EDGE_CURVE('',#186,#210,#247,.T.);
#249=ORIENTED_EDGE('',*,*,#248,.T.);
#250=ORIENTED_EDGE('',*,*,#211,.F.);
#251=CARTESIAN_POINT('',(10.0,12.0,4.0));
#252=DIRECTION('',(0.0,0.0,1.0));
#253=VECTOR('',#252,5.0);
#254=LINE('',#251,#253);
#255=EDGE_CURVE('',#168,#208,#254,.T.);
#256=ORIENTED_EDGE('',*,*,#255,.F.);
#257=EDGE_LOOP('',(#243,#249,#250,#256));
#258=FACE_OUTER_BOUND('',#257,.T.);
#259=CARTESIAN_POINT('',(10.0,12.0,4.0));
#260=DIRECTION('',(0.0,-1.0,0.0));
#261=DIRECTION('',(1.0,0.0,0.0));
#262=AXIS2_PLACEMENT_3D('',#259,#260,#261);
#263=PLANE('',#262);
#264=ADVANCED_FACE('',(#258),#263,.T.);
#265=CARTESIAN_POINT('',(10.0,18.0,4.0));
#266=DIRECTION('',(0.0,0.0,1.0));
#267=VECTOR('',#266,5.0);
#268=LINE('',#265,#267);
#269=EDGE_CURVE('',#170,#226,#268,.T.);
#270=ORIENTED_EDGE('',*,*,#269,.T.);
#271=ORIENTED_EDGE('',*,*,#227,.T.);
#272=CARTESIAN_POINT('',(30.0,18.0,4.0));
#273=DIRECTION('',(0.0,0.0,1.0));
#274=VECTOR('',#273,5.0);
#275=LINE('',#272,#274);
#276=EDGE_CURVE('',#178,#218,#275,.T.);
#277=ORIENTED_EDGE('',*,*,#276,.F.);
#278=ORIENTED_EDGE('',*,*,#179,.F.);
#279=EDGE_LOOP('',(#270,#271,#277,#278));
#280=FACE_OUTER_BOUND('',#279,.T.);
#281=CARTESIAN_POINT('',(10.0,18.0,4.0));
#282=DIRECTION('',(0.0,1.0,0.0));
#283=DIRECTION('',(1.0,0.0,0.0));
#284=AXIS2_PLACEMENT_3D('',#281,#282,#283);
#285=PLANE('',#284);
#286=ADVANCED_FACE('',(#280),#285,.T.);
#287=ORIENTED_EDGE('',*,*,#255,.T.);
#288=ORIENTED_EDGE('',*,*,#233,.T.);
#289=ORIENTED_EDGE('',*,*,#269,.F.);
#290=ORIENTED_EDGE('',*,*,#171,.F.);
#291=EDGE_LOOP('',(#287,#288,#289,#290));
#292=FACE_OUTER_BOUND('',#291,.T.);
#293=CARTESIAN_POINT('',(10.0,12.0,4.0));
#294=DIRECTION('',(-1.0,0.0,0.0));
#295=DIRECTION('',(0.0,1.0,0.0));
#296=AXIS2_PLACEMENT_3D('',#293,#294,#295);
#297=PLANE('',#296);
#298=ADVANCED_FACE('',(#292),#297,.T.);
#299=ORIENTED_EDGE('',*,*,#187,.T.);
#300=ORIENTED_EDGE('',*,*,#276,.T.);
#301=ORIENTED_EDGE('',*,*,#219,.F.);
#302=ORIENTED_EDGE('',*,*,#248,.F.);
#303=EDGE_LOOP('',(#299,#300,#301,#302));
#304=FACE_OUTER_BOUND('',#303,.T.);
#305=CARTESIAN_POINT('',(30.0,12.0,4.0));
#306=DIRECTION('',(1.0,0.0,0.0));
#307=DIRECTION('',(0.0,1.0,0.0));
#308=AXIS2_PLACEMENT_3D('',#305,#306,#307);
#309=PLANE('',#308);
#310=ADVANCED_FACE('',(#304),#309,.T.);
#311=CLOSED_SHELL('',(#202,#242,#264,#286,#298,#310));
#312=ORIENTED_CLOSED_SHELL('',*,#311,.F.);
#313=BREP_WITH_VOIDS('Hollow',#162,(#312));
#314=CARTESIAN_POINT('',(0.0,0.0,0.0));
#315=DIRECTION('',(0.0,0.0,1.0));
#316=DIRECTION('',(1.0,0.0,0.0));
#317=AXIS2_PLACEMENT_3D('',#314,#315,#316);
#318=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#317,#313),#5);
#319=SHAPE_DEFINITION_REPRESENTATION(#13,#318);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,25 @@
{
"sources": [
"tangency-labs/solidcraft#3806",
"tangency-labs/solidcraft#3813"
],
"what": "a dome: an IGES surface of revolution (120) of a 60-to-90 degree circular arc (100) of radius 50 centred on the axis, trimmed by a circle at the rim, over a flat base disc; the cap must be 50 mm across and 6.7 mm tall, not a whole sphere",
"source": "analytic",
"method": "spherical cap R=50 from polar angle 30 deg: rim radius 25, h = R - R cos30 = 6.69873; V = pi h^2 (3R - h)/3 = 6733.8522; A = 2 pi R h + pi 25^2 = 4067.9634; 2 faces; bbox z from 43.3013 to 50",
"body_count": 1,
"volume_mm3": 6733.8522,
"area_mm2": 4067.9634,
"faces": 2,
"bbox": {
"min": [
-24.999999999999996,
-24.999999999999996,
43.3013
],
"max": [
24.999999999999996,
24.999999999999996,
50.0
]
}
}
@@ -0,0 +1,40 @@
test S 1
1H,,1H;,,,,,,,,,,,1.,2,2HMM,,,,1.E-6; G 1
124 1 0 0 0 0 0 000000000D 1
124 0 0 1 0 0 0 0D 2
110 2 0 0 0 0 0 000000000D 3
110 0 0 1 0 0 0 0D 4
100 3 0 0 0 0 1 000000000D 5
100 0 0 1 0 0 0 0D 6
120 4 0 0 0 0 0 000000000D 7
120 0 0 1 0 0 0 0D 8
100 5 0 0 0 0 0 000000000D 9
100 0 0 2 0 0 0 0D 10
142 7 0 0 0 0 0 000000000D 11
142 0 0 1 0 0 0 0D 12
144 8 0 0 0 0 0 000000000D 13
144 0 0 1 0 0 0 0D 14
128 9 0 0 0 0 0 000000000D 15
128 0 0 3 0 0 0 0D 16
100 12 0 0 0 0 0 000000000D 17
100 0 0 2 0 0 0 0D 18
142 14 0 0 0 0 0 000000000D 19
142 0 0 1 0 0 0 0D 20
144 15 0 0 0 0 0 000000000D 21
144 0 0 1 0 0 0 0D 22
124,1.,0.,0.,0.,0.,0.,-1.,0.,0.,1.,0.,0.; 1P 1
110,0.,0.,0.,0.,0.,1.; 3P 2
100,0.,0.,0.,24.999999999999996,43.30127018922194,0.,50.0; 5P 3
120,3,5,0.,6.283185307179586; 7P 4
100,43.30127018922194,0.,0.,24.999999999999996,0.,24.99999999999 9P 5
9996,0.; 9P 6
142,0,7,0,9,2; 11P 7
144,7,1,0,11; 13P 8
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,-30.0, 15P 9
-30.0,43.30127018922194,-30.0,30.0,43.30127018922194,30.0,-30.0, 15P 10
43.30127018922194,30.0,30.0,43.30127018922194,0.,1.,0.,1.; 15P 11
100,43.30127018922194,0.,0.,24.999999999999996,0.,24.99999999999 17P 12
9996,0.; 17P 13
142,0,15,0,17,2; 19P 14
144,15,1,0,19; 21P 15
T 1
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.igs"
}
}
]
}
@@ -0,0 +1,13 @@
{
"sources": [
"tangency-labs/solidcraft#3845",
"tangency-labs/solidcraft#3846"
],
"what": "a box of six trimmed planes where the edge (0,0,0)-(0,20,0) stops 0.01 mm short of its end corner in both faces that use it: the small gap must be closed, giving a closed box instead of two dropped faces",
"method": "box 10 x 20 x 30 of six trimmed bilinear patches: V = 6000; A = 2(200+300+600) = 2200; 6 faces (the 0.01 mm gap changes nothing within tolerance)",
"source": "analytic",
"body_count": 1,
"volume_mm3": 6000.0,
"area_mm2": 2200.0,
"faces": 6
}
@@ -0,0 +1,153 @@
test S 1
1H,,1H;,,,,,,,,,,,1.,2,2HMM,,,,1.E-6; G 1
128 1 0 0 0 0 0 000000000D 1
128 0 0 2 0 0 0 0D 2
110 3 0 0 0 0 0 000000000D 3
110 0 0 1 0 0 0 0D 4
110 4 0 0 0 0 0 000000000D 5
110 0 0 1 0 0 0 0D 6
110 5 0 0 0 0 0 000000000D 7
110 0 0 1 0 0 0 0D 8
110 6 0 0 0 0 0 000000000D 9
110 0 0 1 0 0 0 0D 10
102 7 0 0 0 0 0 000000000D 11
102 0 0 1 0 0 0 0D 12
142 8 0 0 0 0 0 000000000D 13
142 0 0 1 0 0 0 0D 14
144 9 0 0 0 0 0 000000000D 15
144 0 0 1 0 0 0 0D 16
128 10 0 0 0 0 0 000000000D 17
128 0 0 2 0 0 0 0D 18
110 12 0 0 0 0 0 000000000D 19
110 0 0 1 0 0 0 0D 20
110 13 0 0 0 0 0 000000000D 21
110 0 0 1 0 0 0 0D 22
110 14 0 0 0 0 0 000000000D 23
110 0 0 1 0 0 0 0D 24
110 15 0 0 0 0 0 000000000D 25
110 0 0 1 0 0 0 0D 26
102 16 0 0 0 0 0 000000000D 27
102 0 0 1 0 0 0 0D 28
142 17 0 0 0 0 0 000000000D 29
142 0 0 1 0 0 0 0D 30
144 18 0 0 0 0 0 000000000D 31
144 0 0 1 0 0 0 0D 32
128 19 0 0 0 0 0 000000000D 33
128 0 0 2 0 0 0 0D 34
110 21 0 0 0 0 0 000000000D 35
110 0 0 1 0 0 0 0D 36
110 22 0 0 0 0 0 000000000D 37
110 0 0 1 0 0 0 0D 38
110 23 0 0 0 0 0 000000000D 39
110 0 0 1 0 0 0 0D 40
110 24 0 0 0 0 0 000000000D 41
110 0 0 1 0 0 0 0D 42
102 25 0 0 0 0 0 000000000D 43
102 0 0 1 0 0 0 0D 44
142 26 0 0 0 0 0 000000000D 45
142 0 0 1 0 0 0 0D 46
144 27 0 0 0 0 0 000000000D 47
144 0 0 1 0 0 0 0D 48
128 28 0 0 0 0 0 000000000D 49
128 0 0 2 0 0 0 0D 50
110 30 0 0 0 0 0 000000000D 51
110 0 0 1 0 0 0 0D 52
110 31 0 0 0 0 0 000000000D 53
110 0 0 1 0 0 0 0D 54
110 32 0 0 0 0 0 000000000D 55
110 0 0 1 0 0 0 0D 56
110 33 0 0 0 0 0 000000000D 57
110 0 0 1 0 0 0 0D 58
102 34 0 0 0 0 0 000000000D 59
102 0 0 1 0 0 0 0D 60
142 35 0 0 0 0 0 000000000D 61
142 0 0 1 0 0 0 0D 62
144 36 0 0 0 0 0 000000000D 63
144 0 0 1 0 0 0 0D 64
128 37 0 0 0 0 0 000000000D 65
128 0 0 2 0 0 0 0D 66
110 39 0 0 0 0 0 000000000D 67
110 0 0 1 0 0 0 0D 68
110 40 0 0 0 0 0 000000000D 69
110 0 0 1 0 0 0 0D 70
110 41 0 0 0 0 0 000000000D 71
110 0 0 1 0 0 0 0D 72
110 42 0 0 0 0 0 000000000D 73
110 0 0 1 0 0 0 0D 74
102 43 0 0 0 0 0 000000000D 75
102 0 0 1 0 0 0 0D 76
142 44 0 0 0 0 0 000000000D 77
142 0 0 1 0 0 0 0D 78
144 45 0 0 0 0 0 000000000D 79
144 0 0 1 0 0 0 0D 80
128 46 0 0 0 0 0 000000000D 81
128 0 0 2 0 0 0 0D 82
110 48 0 0 0 0 0 000000000D 83
110 0 0 1 0 0 0 0D 84
110 49 0 0 0 0 0 000000000D 85
110 0 0 1 0 0 0 0D 86
110 50 0 0 0 0 0 000000000D 87
110 0 0 1 0 0 0 0D 88
110 51 0 0 0 0 0 000000000D 89
110 0 0 1 0 0 0 0D 90
102 52 0 0 0 0 0 000000000D 91
102 0 0 1 0 0 0 0D 92
142 53 0 0 0 0 0 000000000D 93
142 0 0 1 0 0 0 0D 94
144 54 0 0 0 0 0 000000000D 95
144 0 0 1 0 0 0 0D 96
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 1P 1
0,0.0,0.0,20.0,0.0,10.0,0.0,0.0,10.0,20.0,0.0,0.,1.,0.,1.; 1P 2
110,0.0,0.0,0.0,0.0,19.99,0.0; 3P 3
110,0.0,20.0,0.0,10.0,20.0,0.0; 5P 4
110,10.0,20.0,0.0,10.0,0.0,0.0; 7P 5
110,10.0,0.0,0.0,0.0,0.0,0.0; 9P 6
102,4,3,5,7,9; 11P 7
142,0,1,0,11,2; 13P 8
144,1,1,0,13; 15P 9
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 17P 10
0,30.0,10.0,0.0,30.0,0.0,20.0,30.0,10.0,20.0,30.0,0.,1.,0.,1.; 17P 11
110,0.0,0.0,30.0,10.0,0.0,30.0; 19P 12
110,10.0,0.0,30.0,10.0,20.0,30.0; 21P 13
110,10.0,20.0,30.0,0.0,20.0,30.0; 23P 14
110,0.0,20.0,30.0,0.0,0.0,30.0; 25P 15
102,4,19,21,23,25; 27P 16
142,0,17,0,27,2; 29P 17
144,17,1,0,29; 31P 18
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 33P 19
0,0.0,10.0,0.0,0.0,0.0,0.0,30.0,10.0,0.0,30.0,0.,1.,0.,1.; 33P 20
110,0.0,0.0,0.0,10.0,0.0,0.0; 35P 21
110,10.0,0.0,0.0,10.0,0.0,30.0; 37P 22
110,10.0,0.0,30.0,0.0,0.0,30.0; 39P 23
110,0.0,0.0,30.0,0.0,0.0,0.0; 41P 24
102,4,35,37,39,41; 43P 25
142,0,33,0,43,2; 45P 26
144,33,1,0,45; 47P 27
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,20 49P 28
.0,0.0,0.0,20.0,30.0,10.0,20.0,0.0,10.0,20.0,30.0,0.,1.,0.,1.; 49P 29
110,0.0,20.0,0.0,0.0,20.0,30.0; 51P 30
110,0.0,20.0,30.0,10.0,20.0,30.0; 53P 31
110,10.0,20.0,30.0,10.0,20.0,0.0; 55P 32
110,10.0,20.0,0.0,0.0,20.0,0.0; 57P 33
102,4,51,53,55,57; 59P 34
142,0,49,0,59,2; 61P 35
144,49,1,0,61; 63P 36
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 65P 37
0,0.0,0.0,0.0,30.0,0.0,20.0,0.0,0.0,20.0,30.0,0.,1.,0.,1.; 65P 38
110,0.0,0.0,0.0,0.0,0.0,30.0; 67P 39
110,0.0,0.0,30.0,0.0,20.0,30.0; 69P 40
110,0.0,20.0,30.0,0.0,20.0,0.0; 71P 41
110,0.0,19.99,0.0,0.0,0.0,0.0; 73P 42
102,4,67,69,71,73; 75P 43
142,0,65,0,75,2; 77P 44
144,65,1,0,77; 79P 45
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,10.0,0 81P 46
.0,0.0,10.0,20.0,0.0,10.0,0.0,30.0,10.0,20.0,30.0,0.,1.,0.,1.; 81P 47
110,10.0,0.0,0.0,10.0,20.0,0.0; 83P 48
110,10.0,20.0,0.0,10.0,20.0,30.0; 85P 49
110,10.0,20.0,30.0,10.0,0.0,30.0; 87P 50
110,10.0,0.0,30.0,10.0,0.0,0.0; 89P 51
102,4,83,85,87,89; 91P 52
142,0,81,0,91,2; 93P 53
144,81,1,0,93; 95P 54
T 1
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.igs"
}
}
]
}
@@ -0,0 +1,25 @@
{
"sources": [
"tangency-labs/solidcraft#3871",
"tangency-labs/solidcraft#3901"
],
"what": "the same cone with a VERTEX_LOOP at its point on the cone face: the point must still be reached, not read as a flat disc",
"source": "analytic",
"method": "cone r=10 h=30: V = 1000 pi = 3141.5927; A = pi r^2 + pi r s = 1307.6181; 2 faces",
"body_count": 1,
"volume_mm3": 3141.5927,
"area_mm2": 1307.6181,
"faces": 2,
"bbox": {
"min": [
-10,
-10,
0
],
"max": [
10,
10,
30
]
}
}
@@ -0,0 +1,60 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('step-conformance generated part'),'2;1');
FILE_NAME('cone_point_vertex.step','2026-10-12T00:00:00',(''),(''),'step-conformance generate','step-conformance generate','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-7),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('cone_point_vertex','cone_point_vertex','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=DIRECTION('',(0.0,0.0,1.0));
#16=DIRECTION('',(1.0,0.0,0.0));
#17=AXIS2_PLACEMENT_3D('',#14,#15,#16);
#18=CARTESIAN_POINT('',(0.0,0.0,0.0));
#19=DIRECTION('',(0.0,0.0,1.0));
#20=DIRECTION('',(1.0,0.0,0.0));
#21=AXIS2_PLACEMENT_3D('',#18,#19,#20);
#22=CIRCLE('',#21,10.0);
#23=CARTESIAN_POINT('',(10.0,0.0,0.0));
#24=VERTEX_POINT('',#23);
#25=EDGE_CURVE('',#24,#24,#22,.T.);
#26=CARTESIAN_POINT('',(0.0,0.0,0.0));
#27=DIRECTION('',(0.0,0.0,1.0));
#28=DIRECTION('',(1.0,0.0,0.0));
#29=AXIS2_PLACEMENT_3D('',#26,#27,#28);
#30=PLANE('',#29);
#31=ORIENTED_EDGE('',*,*,#25,.F.);
#32=EDGE_LOOP('',(#31));
#33=FACE_OUTER_BOUND('',#32,.T.);
#34=ADVANCED_FACE('',(#33),#30,.F.);
#35=CARTESIAN_POINT('',(0.0,0.0,0.0));
#36=DIRECTION('',(0.0,0.0,-1.0));
#37=DIRECTION('',(1.0,0.0,0.0));
#38=AXIS2_PLACEMENT_3D('',#35,#36,#37);
#39=CONICAL_SURFACE('',#38,10.0,0.3217505543966422);
#40=ORIENTED_EDGE('',*,*,#25,.T.);
#41=EDGE_LOOP('',(#40));
#42=CARTESIAN_POINT('',(0.0,0.0,30.0));
#43=VERTEX_POINT('',#42);
#44=VERTEX_LOOP('',#43);
#45=FACE_OUTER_BOUND('',#41,.T.);
#46=FACE_BOUND('',#44,.T.);
#47=ADVANCED_FACE('',(#45,#46),#39,.T.);
#48=CLOSED_SHELL('',(#34,#47));
#49=MANIFOLD_SOLID_BREP('',#48);
#50=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#17,#49),#5);
#51=SHAPE_DEFINITION_REPRESENTATION(#13,#50);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,26 @@
{
"sources": [
"tangency-labs/solidcraft#3871",
"tangency-labs/solidcraft#3901",
"tangency-labs/solidcraft#3880"
],
"what": "a cone whose face is bounded only by its base circle (no vertex at the point) must reach its point, not come in as a flat disc",
"source": "analytic",
"method": "cone r=10 h=30: V = pi r^2 h / 3 = 1000 pi = 3141.5927; A = pi r^2 + pi r s with s = sqrt(100+900) = 1307.6181; 2 faces",
"body_count": 1,
"volume_mm3": 3141.5927,
"area_mm2": 1307.6181,
"faces": 2,
"bbox": {
"min": [
-10,
-10,
0
],
"max": [
10,
10,
30
]
}
}
@@ -0,0 +1,56 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('step-conformance generated part'),'2;1');
FILE_NAME('cone_point.step','2026-10-12T00:00:00',(''),(''),'step-conformance generate','step-conformance generate','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-7),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('cone_point','cone_point','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=DIRECTION('',(0.0,0.0,1.0));
#16=DIRECTION('',(1.0,0.0,0.0));
#17=AXIS2_PLACEMENT_3D('',#14,#15,#16);
#18=CARTESIAN_POINT('',(0.0,0.0,0.0));
#19=DIRECTION('',(0.0,0.0,1.0));
#20=DIRECTION('',(1.0,0.0,0.0));
#21=AXIS2_PLACEMENT_3D('',#18,#19,#20);
#22=CIRCLE('',#21,10.0);
#23=CARTESIAN_POINT('',(10.0,0.0,0.0));
#24=VERTEX_POINT('',#23);
#25=EDGE_CURVE('',#24,#24,#22,.T.);
#26=CARTESIAN_POINT('',(0.0,0.0,0.0));
#27=DIRECTION('',(0.0,0.0,1.0));
#28=DIRECTION('',(1.0,0.0,0.0));
#29=AXIS2_PLACEMENT_3D('',#26,#27,#28);
#30=PLANE('',#29);
#31=ORIENTED_EDGE('',*,*,#25,.F.);
#32=EDGE_LOOP('',(#31));
#33=FACE_OUTER_BOUND('',#32,.T.);
#34=ADVANCED_FACE('',(#33),#30,.F.);
#35=CARTESIAN_POINT('',(0.0,0.0,0.0));
#36=DIRECTION('',(0.0,0.0,-1.0));
#37=DIRECTION('',(1.0,0.0,0.0));
#38=AXIS2_PLACEMENT_3D('',#35,#36,#37);
#39=CONICAL_SURFACE('',#38,10.0,0.3217505543966422);
#40=ORIENTED_EDGE('',*,*,#25,.T.);
#41=EDGE_LOOP('',(#40));
#42=FACE_OUTER_BOUND('',#41,.T.);
#43=ADVANCED_FACE('',(#42),#39,.T.);
#44=CLOSED_SHELL('',(#34,#43));
#45=MANIFOLD_SOLID_BREP('',#44);
#46=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#17,#45),#5);
#47=SHAPE_DEFINITION_REPRESENTATION(#13,#46);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,24 @@
{
"sources": [
"tangency-labs/solidcraft#3880"
],
"what": "a cylinder r=10 h=30 whose side face is written with a seam edge: one closed solid with 3 faces",
"source": "analytic",
"method": "V = pi r^2 h = 3000 pi = 9424.7780; A = 2 pi r h + 2 pi r^2 = 2513.2741; 3 faces",
"body_count": 1,
"volume_mm3": 9424.778,
"area_mm2": 2513.2741,
"faces": 3,
"bbox": {
"min": [
-10,
-10,
0
],
"max": [
10,
10,
30
]
}
}
@@ -0,0 +1,81 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('step-conformance generated part'),'2;1');
FILE_NAME('cylinder_seam.step','2026-10-12T00:00:00',(''),(''),'step-conformance generate','step-conformance generate','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-7),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('cylinder_seam','cylinder_seam','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=DIRECTION('',(0.0,0.0,1.0));
#16=DIRECTION('',(1.0,0.0,0.0));
#17=AXIS2_PLACEMENT_3D('',#14,#15,#16);
#18=CARTESIAN_POINT('',(0.0,0.0,0.0));
#19=DIRECTION('',(0.0,0.0,1.0));
#20=DIRECTION('',(1.0,0.0,0.0));
#21=AXIS2_PLACEMENT_3D('',#18,#19,#20);
#22=CIRCLE('',#21,10.0);
#23=CARTESIAN_POINT('',(10.0,0.0,0.0));
#24=VERTEX_POINT('',#23);
#25=EDGE_CURVE('',#24,#24,#22,.T.);
#26=CARTESIAN_POINT('',(0.0,0.0,30.0));
#27=DIRECTION('',(0.0,0.0,1.0));
#28=DIRECTION('',(1.0,0.0,0.0));
#29=AXIS2_PLACEMENT_3D('',#26,#27,#28);
#30=CIRCLE('',#29,10.0);
#31=CARTESIAN_POINT('',(10.0,0.0,30.0));
#32=VERTEX_POINT('',#31);
#33=EDGE_CURVE('',#32,#32,#30,.T.);
#34=CARTESIAN_POINT('',(0.0,0.0,0.0));
#35=DIRECTION('',(0.0,0.0,1.0));
#36=DIRECTION('',(1.0,0.0,0.0));
#37=AXIS2_PLACEMENT_3D('',#34,#35,#36);
#38=PLANE('',#37);
#39=ORIENTED_EDGE('',*,*,#25,.F.);
#40=EDGE_LOOP('',(#39));
#41=FACE_OUTER_BOUND('',#40,.T.);
#42=ADVANCED_FACE('',(#41),#38,.F.);
#43=CARTESIAN_POINT('',(0.0,0.0,0.0));
#44=DIRECTION('',(0.0,0.0,1.0));
#45=DIRECTION('',(1.0,0.0,0.0));
#46=AXIS2_PLACEMENT_3D('',#43,#44,#45);
#47=CYLINDRICAL_SURFACE('',#46,10.0);
#48=CARTESIAN_POINT('',(10.0,0.0,0.0));
#49=DIRECTION('',(0.0,0.0,1.0));
#50=VECTOR('',#49,30.0);
#51=LINE('',#48,#50);
#52=EDGE_CURVE('',#24,#32,#51,.T.);
#53=ORIENTED_EDGE('',*,*,#25,.T.);
#54=ORIENTED_EDGE('',*,*,#52,.T.);
#55=ORIENTED_EDGE('',*,*,#33,.F.);
#56=ORIENTED_EDGE('',*,*,#52,.F.);
#57=EDGE_LOOP('',(#53,#54,#55,#56));
#58=FACE_OUTER_BOUND('',#57,.T.);
#59=ADVANCED_FACE('',(#58),#47,.T.);
#60=CARTESIAN_POINT('',(0.0,0.0,30.0));
#61=DIRECTION('',(0.0,0.0,1.0));
#62=DIRECTION('',(1.0,0.0,0.0));
#63=AXIS2_PLACEMENT_3D('',#60,#61,#62);
#64=PLANE('',#63);
#65=ORIENTED_EDGE('',*,*,#33,.T.);
#66=EDGE_LOOP('',(#65));
#67=FACE_OUTER_BOUND('',#66,.T.);
#68=ADVANCED_FACE('',(#67),#64,.T.);
#69=CLOSED_SHELL('',(#42,#59,#68));
#70=MANIFOLD_SOLID_BREP('',#69);
#71=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#17,#70),#5);
#72=SHAPE_DEFINITION_REPRESENTATION(#13,#71);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,24 @@
{
"sources": [
"tangency-labs/solidcraft#3880"
],
"what": "a hemisphere r=20 whose curved face is a rational B-spline surface, flat disc below",
"source": "analytic",
"method": "V = 2/3 pi r^3 = 16755.1608; A = 2 pi r^2 + pi r^2 = 3 pi r^2 = 3769.9112; 2 faces",
"body_count": 1,
"volume_mm3": 16755.1608,
"area_mm2": 3769.9112,
"faces": 2,
"bbox": {
"min": [
-20,
-20,
0
],
"max": [
20,
20,
20
]
}
}
@@ -0,0 +1,84 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('step-conformance generated part'),'2;1');
FILE_NAME('dome_nurbs.step','2026-10-12T00:00:00',(''),(''),'step-conformance generate','step-conformance generate','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-7),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('dome_nurbs','dome_nurbs','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=DIRECTION('',(0.0,0.0,1.0));
#16=DIRECTION('',(1.0,0.0,0.0));
#17=AXIS2_PLACEMENT_3D('',#14,#15,#16);
#18=CARTESIAN_POINT('',(20.0,0.0,1.2246467991473533E-15));
#19=CARTESIAN_POINT('',(20.000000000000004,20.0,1.2246467991473533E-15));
#20=CARTESIAN_POINT('',(1.2246467991473533E-15,20.0,1.2246467991473533E-15));
#21=CARTESIAN_POINT('',(-20.0,20.000000000000004,1.2246467991473533E-15));
#22=CARTESIAN_POINT('',(-20.0,2.4492935982947065E-15,1.2246467991473533E-15));
#23=CARTESIAN_POINT('',(-20.000000000000004,-20.0,1.2246467991473533E-15));
#24=CARTESIAN_POINT('',(-3.673940397442059E-15,-20.0,1.2246467991473533E-15));
#25=CARTESIAN_POINT('',(19.999999999999996,-20.000000000000004,1.2246467991473533E-15));
#26=CARTESIAN_POINT('',(20.0,-4.898587196589413E-15,1.2246467991473533E-15));
#27=( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#18,#19,#20,#21,#22,#23,#24,#25,#26),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((3,2,2,2,3),(0.0,0.25,0.5,0.75,1.0),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() RATIONAL_B_SPLINE_CURVE((1.0,0.7071067811865476,1.0,0.7071067811865476,1.0,0.7071067811865476,1.0,0.7071067811865476,1.0)) REPRESENTATION_ITEM('') );
#28=CARTESIAN_POINT('',(20.0,0.0,1.2246467991473533E-15));
#29=VERTEX_POINT('',#28);
#30=EDGE_CURVE('',#29,#29,#27,.T.);
#31=CARTESIAN_POINT('',(0.0,0.0,0.0));
#32=DIRECTION('',(0.0,0.0,1.0));
#33=DIRECTION('',(1.0,0.0,0.0));
#34=AXIS2_PLACEMENT_3D('',#31,#32,#33);
#35=PLANE('',#34);
#36=ORIENTED_EDGE('',*,*,#30,.F.);
#37=EDGE_LOOP('',(#36));
#38=FACE_OUTER_BOUND('',#37,.T.);
#39=ADVANCED_FACE('',(#38),#35,.F.);
#40=CARTESIAN_POINT('',(20.0,0.0,1.2246467991473533E-15));
#41=CARTESIAN_POINT('',(19.999999999999996,0.0,20.0));
#42=CARTESIAN_POINT('',(0.0,0.0,20.0));
#43=CARTESIAN_POINT('',(20.000000000000004,20.0,1.2246467991473533E-15));
#44=CARTESIAN_POINT('',(20.0,19.999999999999996,20.0));
#45=CARTESIAN_POINT('',(0.0,0.0,20.0));
#46=CARTESIAN_POINT('',(1.2246467991473533E-15,20.0,1.2246467991473533E-15));
#47=CARTESIAN_POINT('',(1.224646799147353E-15,19.999999999999996,20.0));
#48=CARTESIAN_POINT('',(0.0,0.0,20.0));
#49=CARTESIAN_POINT('',(-20.0,20.000000000000004,1.2246467991473533E-15));
#50=CARTESIAN_POINT('',(-19.999999999999996,20.0,20.0));
#51=CARTESIAN_POINT('',(0.0,0.0,20.0));
#52=CARTESIAN_POINT('',(-20.0,2.4492935982947065E-15,1.2246467991473533E-15));
#53=CARTESIAN_POINT('',(-19.999999999999996,2.449293598294706E-15,20.0));
#54=CARTESIAN_POINT('',(0.0,0.0,20.0));
#55=CARTESIAN_POINT('',(-20.000000000000004,-20.0,1.2246467991473533E-15));
#56=CARTESIAN_POINT('',(-20.0,-19.999999999999996,20.0));
#57=CARTESIAN_POINT('',(0.0,0.0,20.0));
#58=CARTESIAN_POINT('',(-3.673940397442059E-15,-20.0,1.2246467991473533E-15));
#59=CARTESIAN_POINT('',(-3.673940397442058E-15,-19.999999999999996,20.0));
#60=CARTESIAN_POINT('',(0.0,0.0,20.0));
#61=CARTESIAN_POINT('',(19.999999999999996,-20.000000000000004,1.2246467991473533E-15));
#62=CARTESIAN_POINT('',(19.999999999999993,-20.0,20.0));
#63=CARTESIAN_POINT('',(0.0,0.0,20.0));
#64=CARTESIAN_POINT('',(20.0,-4.898587196589413E-15,1.2246467991473533E-15));
#65=CARTESIAN_POINT('',(19.999999999999996,-4.898587196589412E-15,20.0));
#66=CARTESIAN_POINT('',(0.0,0.0,20.0));
#67=( BOUNDED_SURFACE() B_SPLINE_SURFACE(2,2,((#40,#41,#42),(#43,#44,#45),(#46,#47,#48),(#49,#50,#51),(#52,#53,#54),(#55,#56,#57),(#58,#59,#60),(#61,#62,#63),(#64,#65,#66)),.UNSPECIFIED.,.T.,.F.,.F.) B_SPLINE_SURFACE_WITH_KNOTS((3,2,2,2,3),(3,3),(0.0,0.25,0.5,0.75,1.0),(0.0,1.0),.UNSPECIFIED.) GEOMETRIC_REPRESENTATION_ITEM() RATIONAL_B_SPLINE_SURFACE(((1.0,0.7071067811865476,1.0),(0.7071067811865476,0.5000000000000001,0.7071067811865476),(1.0,0.7071067811865476,1.0),(0.7071067811865476,0.5000000000000001,0.7071067811865476),(1.0,0.7071067811865476,1.0),(0.7071067811865476,0.5000000000000001,0.7071067811865476),(1.0,0.7071067811865476,1.0),(0.7071067811865476,0.5000000000000001,0.7071067811865476),(1.0,0.7071067811865476,1.0))) REPRESENTATION_ITEM('') SURFACE() );
#68=ORIENTED_EDGE('',*,*,#30,.T.);
#69=EDGE_LOOP('',(#68));
#70=FACE_OUTER_BOUND('',#69,.T.);
#71=ADVANCED_FACE('',(#70),#67,.T.);
#72=CLOSED_SHELL('',(#39,#71));
#73=MANIFOLD_SOLID_BREP('',#72);
#74=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#17,#73),#5);
#75=SHAPE_DEFINITION_REPRESENTATION(#13,#74);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,13 @@
{
"sources": [
"tangency-labs/solidcraft#3885",
"tangency-labs/solidcraft#3886"
],
"what": "a box of six trimmed planes with one edge written as a B-spline curve (126) over a knot span of 1e-7: both faces it bounds must be kept",
"method": "box 10 x 20 x 30 of six trimmed bilinear patches: V = 6000; A = 2(200+300+600) = 2200; 6 faces",
"source": "analytic",
"body_count": 1,
"volume_mm3": 6000.0,
"area_mm2": 2200.0,
"faces": 6
}
@@ -0,0 +1,154 @@
test S 1
1H,,1H;,,,,,,,,,,,1.,2,2HMM,,,,1.E-6; G 1
128 1 0 0 0 0 0 000000000D 1
128 0 0 2 0 0 0 0D 2
126 3 0 0 0 0 0 000000000D 3
126 0 0 2 0 0 0 0D 4
110 5 0 0 0 0 0 000000000D 5
110 0 0 1 0 0 0 0D 6
110 6 0 0 0 0 0 000000000D 7
110 0 0 1 0 0 0 0D 8
110 7 0 0 0 0 0 000000000D 9
110 0 0 1 0 0 0 0D 10
102 8 0 0 0 0 0 000000000D 11
102 0 0 1 0 0 0 0D 12
142 9 0 0 0 0 0 000000000D 13
142 0 0 1 0 0 0 0D 14
144 10 0 0 0 0 0 000000000D 15
144 0 0 1 0 0 0 0D 16
128 11 0 0 0 0 0 000000000D 17
128 0 0 2 0 0 0 0D 18
110 13 0 0 0 0 0 000000000D 19
110 0 0 1 0 0 0 0D 20
110 14 0 0 0 0 0 000000000D 21
110 0 0 1 0 0 0 0D 22
110 15 0 0 0 0 0 000000000D 23
110 0 0 1 0 0 0 0D 24
110 16 0 0 0 0 0 000000000D 25
110 0 0 1 0 0 0 0D 26
102 17 0 0 0 0 0 000000000D 27
102 0 0 1 0 0 0 0D 28
142 18 0 0 0 0 0 000000000D 29
142 0 0 1 0 0 0 0D 30
144 19 0 0 0 0 0 000000000D 31
144 0 0 1 0 0 0 0D 32
128 20 0 0 0 0 0 000000000D 33
128 0 0 2 0 0 0 0D 34
110 22 0 0 0 0 0 000000000D 35
110 0 0 1 0 0 0 0D 36
110 23 0 0 0 0 0 000000000D 37
110 0 0 1 0 0 0 0D 38
110 24 0 0 0 0 0 000000000D 39
110 0 0 1 0 0 0 0D 40
110 25 0 0 0 0 0 000000000D 41
110 0 0 1 0 0 0 0D 42
102 26 0 0 0 0 0 000000000D 43
102 0 0 1 0 0 0 0D 44
142 27 0 0 0 0 0 000000000D 45
142 0 0 1 0 0 0 0D 46
144 28 0 0 0 0 0 000000000D 47
144 0 0 1 0 0 0 0D 48
128 29 0 0 0 0 0 000000000D 49
128 0 0 2 0 0 0 0D 50
110 31 0 0 0 0 0 000000000D 51
110 0 0 1 0 0 0 0D 52
110 32 0 0 0 0 0 000000000D 53
110 0 0 1 0 0 0 0D 54
110 33 0 0 0 0 0 000000000D 55
110 0 0 1 0 0 0 0D 56
110 34 0 0 0 0 0 000000000D 57
110 0 0 1 0 0 0 0D 58
102 35 0 0 0 0 0 000000000D 59
102 0 0 1 0 0 0 0D 60
142 36 0 0 0 0 0 000000000D 61
142 0 0 1 0 0 0 0D 62
144 37 0 0 0 0 0 000000000D 63
144 0 0 1 0 0 0 0D 64
128 38 0 0 0 0 0 000000000D 65
128 0 0 2 0 0 0 0D 66
110 40 0 0 0 0 0 000000000D 67
110 0 0 1 0 0 0 0D 68
110 41 0 0 0 0 0 000000000D 69
110 0 0 1 0 0 0 0D 70
110 42 0 0 0 0 0 000000000D 71
110 0 0 1 0 0 0 0D 72
110 43 0 0 0 0 0 000000000D 73
110 0 0 1 0 0 0 0D 74
102 44 0 0 0 0 0 000000000D 75
102 0 0 1 0 0 0 0D 76
142 45 0 0 0 0 0 000000000D 77
142 0 0 1 0 0 0 0D 78
144 46 0 0 0 0 0 000000000D 79
144 0 0 1 0 0 0 0D 80
128 47 0 0 0 0 0 000000000D 81
128 0 0 2 0 0 0 0D 82
110 49 0 0 0 0 0 000000000D 83
110 0 0 1 0 0 0 0D 84
110 50 0 0 0 0 0 000000000D 85
110 0 0 1 0 0 0 0D 86
110 51 0 0 0 0 0 000000000D 87
110 0 0 1 0 0 0 0D 88
110 52 0 0 0 0 0 000000000D 89
110 0 0 1 0 0 0 0D 90
102 53 0 0 0 0 0 000000000D 91
102 0 0 1 0 0 0 0D 92
142 54 0 0 0 0 0 000000000D 93
142 0 0 1 0 0 0 0D 94
144 55 0 0 0 0 0 000000000D 95
144 0 0 1 0 0 0 0D 96
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 1P 1
0,0.0,0.0,20.0,0.0,10.0,0.0,0.0,10.0,20.0,0.0,0.,1.,0.,1.; 1P 2
126,1,1,0,0,1,0,0.,0.,1.000000E-07,1.000000E-07,1.,1.,0.0,0.0,0. 3P 3
0,0.0,20.0,0.0,0.,1.000000E-07,0.,0.,1.; 3P 4
110,0.0,20.0,0.0,10.0,20.0,0.0; 5P 5
110,10.0,20.0,0.0,10.0,0.0,0.0; 7P 6
110,10.0,0.0,0.0,0.0,0.0,0.0; 9P 7
102,4,3,5,7,9; 11P 8
142,0,1,0,11,2; 13P 9
144,1,1,0,13; 15P 10
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 17P 11
0,30.0,10.0,0.0,30.0,0.0,20.0,30.0,10.0,20.0,30.0,0.,1.,0.,1.; 17P 12
110,0.0,0.0,30.0,10.0,0.0,30.0; 19P 13
110,10.0,0.0,30.0,10.0,20.0,30.0; 21P 14
110,10.0,20.0,30.0,0.0,20.0,30.0; 23P 15
110,0.0,20.0,30.0,0.0,0.0,30.0; 25P 16
102,4,19,21,23,25; 27P 17
142,0,17,0,27,2; 29P 18
144,17,1,0,29; 31P 19
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 33P 20
0,0.0,10.0,0.0,0.0,0.0,0.0,30.0,10.0,0.0,30.0,0.,1.,0.,1.; 33P 21
110,0.0,0.0,0.0,10.0,0.0,0.0; 35P 22
110,10.0,0.0,0.0,10.0,0.0,30.0; 37P 23
110,10.0,0.0,30.0,0.0,0.0,30.0; 39P 24
110,0.0,0.0,30.0,0.0,0.0,0.0; 41P 25
102,4,35,37,39,41; 43P 26
142,0,33,0,43,2; 45P 27
144,33,1,0,45; 47P 28
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,20 49P 29
.0,0.0,0.0,20.0,30.0,10.0,20.0,0.0,10.0,20.0,30.0,0.,1.,0.,1.; 49P 30
110,0.0,20.0,0.0,0.0,20.0,30.0; 51P 31
110,0.0,20.0,30.0,10.0,20.0,30.0; 53P 32
110,10.0,20.0,30.0,10.0,20.0,0.0; 55P 33
110,10.0,20.0,0.0,0.0,20.0,0.0; 57P 34
102,4,51,53,55,57; 59P 35
142,0,49,0,59,2; 61P 36
144,49,1,0,61; 63P 37
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 65P 38
0,0.0,0.0,0.0,30.0,0.0,20.0,0.0,0.0,20.0,30.0,0.,1.,0.,1.; 65P 39
110,0.0,0.0,0.0,0.0,0.0,30.0; 67P 40
110,0.0,0.0,30.0,0.0,20.0,30.0; 69P 41
110,0.0,20.0,30.0,0.0,20.0,0.0; 71P 42
110,0.0,20.0,0.0,0.0,0.0,0.0; 73P 43
102,4,67,69,71,73; 75P 44
142,0,65,0,75,2; 77P 45
144,65,1,0,77; 79P 46
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,10.0,0 81P 47
.0,0.0,10.0,20.0,0.0,10.0,0.0,30.0,10.0,20.0,30.0,0.,1.,0.,1.; 81P 48
110,10.0,0.0,0.0,10.0,20.0,0.0; 83P 49
110,10.0,20.0,0.0,10.0,20.0,30.0; 85P 50
110,10.0,20.0,30.0,10.0,0.0,30.0; 87P 51
110,10.0,0.0,30.0,10.0,0.0,0.0; 89P 52
102,4,83,85,87,89; 91P 53
142,0,81,0,91,2; 93P 54
144,81,1,0,93; 95P 55
T 1
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.igs"
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#3912"
],
"what": "a 10 x 10 trimmed patch with a 4 x 4 square hole whose composite trim curve starts with a reversed piece: the hole stays a hole",
"source": "analytic",
"method": "one trimmed face: A = 10*10 - 4*4 = 84; a sheet, so valid is false",
"valid": false,
"body_count": 1,
"area_mm2": 84.0,
"faces": 1
}
@@ -0,0 +1,76 @@
test S 1
1H,,1H;,,,,,,,,,,,1.,2,2HMM,,,,1.E-6; G 1
128 1 0 0 0 0 0 000000000D 1
128 0 0 2 0 0 0 0D 2
110 3 0 0 0 0 0 000000000D 3
110 0 0 1 0 0 0 0D 4
110 4 0 0 0 0 0 000000000D 5
110 0 0 1 0 0 0 0D 6
110 5 0 0 0 0 0 000000000D 7
110 0 0 1 0 0 0 0D 8
110 6 0 0 0 0 0 000000000D 9
110 0 0 1 0 0 0 0D 10
110 7 0 0 0 0 0 000000000D 11
110 0 0 1 0 0 0 0D 12
110 8 0 0 0 0 0 000000000D 13
110 0 0 1 0 0 0 0D 14
110 9 0 0 0 0 0 000000000D 15
110 0 0 1 0 0 0 0D 16
110 10 0 0 0 0 0 000000000D 17
110 0 0 1 0 0 0 0D 18
102 11 0 0 0 0 0 000000000D 19
102 0 0 1 0 0 0 0D 20
102 12 0 0 0 0 0 000000000D 21
102 0 0 1 0 0 0 0D 22
142 13 0 0 0 0 0 000000000D 23
142 0 0 1 0 0 0 0D 24
110 14 0 0 0 0 0 000000000D 25
110 0 0 1 0 0 0 0D 26
110 15 0 0 0 0 0 000000000D 27
110 0 0 1 0 0 0 0D 28
110 16 0 0 0 0 0 000000000D 29
110 0 0 1 0 0 0 0D 30
110 17 0 0 0 0 0 000000000D 31
110 0 0 1 0 0 0 0D 32
110 18 0 0 0 0 0 000000000D 33
110 0 0 1 0 0 0 0D 34
110 19 0 0 0 0 0 000000000D 35
110 0 0 1 0 0 0 0D 36
110 20 0 0 0 0 0 000000000D 37
110 0 0 1 0 0 0 0D 38
110 21 0 0 0 0 0 000000000D 39
110 0 0 1 0 0 0 0D 40
102 22 0 0 0 0 0 000000000D 41
102 0 0 1 0 0 0 0D 42
102 23 0 0 0 0 0 000000000D 43
102 0 0 1 0 0 0 0D 44
142 24 0 0 0 0 0 000000000D 45
142 0 0 1 0 0 0 0D 46
144 25 0 0 0 0 0 000000000D 47
144 0 0 1 0 0 0 0D 48
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 1P 1
0,0.0,10.0,0.0,0.0,0.0,10.0,0.0,10.0,10.0,0.0,0.,1.,0.,1.; 1P 2
110,0.0,0.0,0.0,10.0,0.0,0.0; 3P 3
110,0.0,0.0,0.0,1.0,0.0,0.0; 5P 4
110,10.0,0.0,0.0,10.0,10.0,0.0; 7P 5
110,1.0,0.0,0.0,1.0,1.0,0.0; 9P 6
110,10.0,10.0,0.0,0.0,10.0,0.0; 11P 7
110,1.0,1.0,0.0,0.0,1.0,0.0; 13P 8
110,0.0,10.0,0.0,0.0,0.0,0.0; 15P 9
110,0.0,1.0,0.0,0.0,0.0,0.0; 17P 10
102,4,3,7,11,15; 19P 11
102,4,5,9,13,17; 21P 12
142,0,1,21,19,1; 23P 13
110,3.0,7.0,0.0,3.0,3.0,0.0; 25P 14
110,0.3,0.3,0.0,0.3,0.7,0.0; 27P 15
110,3.0,7.0,0.0,7.0,7.0,0.0; 29P 16
110,0.3,0.7,0.0,0.7,0.7,0.0; 31P 17
110,7.0,7.0,0.0,7.0,3.0,0.0; 33P 18
110,0.7,0.7,0.0,0.7,0.3,0.0; 35P 19
110,7.0,3.0,0.0,3.0,3.0,0.0; 37P 20
110,0.7,0.3,0.0,0.3,0.3,0.0; 39P 21
102,4,25,29,33,37; 41P 22
102,4,27,31,35,39; 43P 23
142,0,1,43,41,1; 45P 24
144,1,1,1,23,45; 47P 25
T 1
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.igs"
}
}
]
}
@@ -0,0 +1,13 @@
{
"sources": [
"tangency-labs/solidcraft#3912",
"tangency-labs/solidcraft#3913"
],
"what": "a box of six trimmed planes whose composite trim curves start with a piece written end to start (1st and 3rd pieces reversed): every loop must still close",
"method": "box 10 x 20 x 30 of six trimmed bilinear patches: V = 6000; A = 2(200+300+600) = 2200; 6 faces",
"source": "analytic",
"body_count": 1,
"volume_mm3": 6000.0,
"area_mm2": 2200.0,
"faces": 6
}
@@ -0,0 +1,153 @@
test S 1
1H,,1H;,,,,,,,,,,,1.,2,2HMM,,,,1.E-6; G 1
128 1 0 0 0 0 0 000000000D 1
128 0 0 2 0 0 0 0D 2
110 3 0 0 0 0 0 000000000D 3
110 0 0 1 0 0 0 0D 4
110 4 0 0 0 0 0 000000000D 5
110 0 0 1 0 0 0 0D 6
110 5 0 0 0 0 0 000000000D 7
110 0 0 1 0 0 0 0D 8
110 6 0 0 0 0 0 000000000D 9
110 0 0 1 0 0 0 0D 10
102 7 0 0 0 0 0 000000000D 11
102 0 0 1 0 0 0 0D 12
142 8 0 0 0 0 0 000000000D 13
142 0 0 1 0 0 0 0D 14
144 9 0 0 0 0 0 000000000D 15
144 0 0 1 0 0 0 0D 16
128 10 0 0 0 0 0 000000000D 17
128 0 0 2 0 0 0 0D 18
110 12 0 0 0 0 0 000000000D 19
110 0 0 1 0 0 0 0D 20
110 13 0 0 0 0 0 000000000D 21
110 0 0 1 0 0 0 0D 22
110 14 0 0 0 0 0 000000000D 23
110 0 0 1 0 0 0 0D 24
110 15 0 0 0 0 0 000000000D 25
110 0 0 1 0 0 0 0D 26
102 16 0 0 0 0 0 000000000D 27
102 0 0 1 0 0 0 0D 28
142 17 0 0 0 0 0 000000000D 29
142 0 0 1 0 0 0 0D 30
144 18 0 0 0 0 0 000000000D 31
144 0 0 1 0 0 0 0D 32
128 19 0 0 0 0 0 000000000D 33
128 0 0 2 0 0 0 0D 34
110 21 0 0 0 0 0 000000000D 35
110 0 0 1 0 0 0 0D 36
110 22 0 0 0 0 0 000000000D 37
110 0 0 1 0 0 0 0D 38
110 23 0 0 0 0 0 000000000D 39
110 0 0 1 0 0 0 0D 40
110 24 0 0 0 0 0 000000000D 41
110 0 0 1 0 0 0 0D 42
102 25 0 0 0 0 0 000000000D 43
102 0 0 1 0 0 0 0D 44
142 26 0 0 0 0 0 000000000D 45
142 0 0 1 0 0 0 0D 46
144 27 0 0 0 0 0 000000000D 47
144 0 0 1 0 0 0 0D 48
128 28 0 0 0 0 0 000000000D 49
128 0 0 2 0 0 0 0D 50
110 30 0 0 0 0 0 000000000D 51
110 0 0 1 0 0 0 0D 52
110 31 0 0 0 0 0 000000000D 53
110 0 0 1 0 0 0 0D 54
110 32 0 0 0 0 0 000000000D 55
110 0 0 1 0 0 0 0D 56
110 33 0 0 0 0 0 000000000D 57
110 0 0 1 0 0 0 0D 58
102 34 0 0 0 0 0 000000000D 59
102 0 0 1 0 0 0 0D 60
142 35 0 0 0 0 0 000000000D 61
142 0 0 1 0 0 0 0D 62
144 36 0 0 0 0 0 000000000D 63
144 0 0 1 0 0 0 0D 64
128 37 0 0 0 0 0 000000000D 65
128 0 0 2 0 0 0 0D 66
110 39 0 0 0 0 0 000000000D 67
110 0 0 1 0 0 0 0D 68
110 40 0 0 0 0 0 000000000D 69
110 0 0 1 0 0 0 0D 70
110 41 0 0 0 0 0 000000000D 71
110 0 0 1 0 0 0 0D 72
110 42 0 0 0 0 0 000000000D 73
110 0 0 1 0 0 0 0D 74
102 43 0 0 0 0 0 000000000D 75
102 0 0 1 0 0 0 0D 76
142 44 0 0 0 0 0 000000000D 77
142 0 0 1 0 0 0 0D 78
144 45 0 0 0 0 0 000000000D 79
144 0 0 1 0 0 0 0D 80
128 46 0 0 0 0 0 000000000D 81
128 0 0 2 0 0 0 0D 82
110 48 0 0 0 0 0 000000000D 83
110 0 0 1 0 0 0 0D 84
110 49 0 0 0 0 0 000000000D 85
110 0 0 1 0 0 0 0D 86
110 50 0 0 0 0 0 000000000D 87
110 0 0 1 0 0 0 0D 88
110 51 0 0 0 0 0 000000000D 89
110 0 0 1 0 0 0 0D 90
102 52 0 0 0 0 0 000000000D 91
102 0 0 1 0 0 0 0D 92
142 53 0 0 0 0 0 000000000D 93
142 0 0 1 0 0 0 0D 94
144 54 0 0 0 0 0 000000000D 95
144 0 0 1 0 0 0 0D 96
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 1P 1
0,0.0,0.0,20.0,0.0,10.0,0.0,0.0,10.0,20.0,0.0,0.,1.,0.,1.; 1P 2
110,0.0,20.0,0.0,0.0,0.0,0.0; 3P 3
110,0.0,20.0,0.0,10.0,20.0,0.0; 5P 4
110,10.0,0.0,0.0,10.0,20.0,0.0; 7P 5
110,10.0,0.0,0.0,0.0,0.0,0.0; 9P 6
102,4,3,5,7,9; 11P 7
142,0,1,0,11,2; 13P 8
144,1,1,0,13; 15P 9
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 17P 10
0,30.0,10.0,0.0,30.0,0.0,20.0,30.0,10.0,20.0,30.0,0.,1.,0.,1.; 17P 11
110,10.0,0.0,30.0,0.0,0.0,30.0; 19P 12
110,10.0,0.0,30.0,10.0,20.0,30.0; 21P 13
110,0.0,20.0,30.0,10.0,20.0,30.0; 23P 14
110,0.0,20.0,30.0,0.0,0.0,30.0; 25P 15
102,4,19,21,23,25; 27P 16
142,0,17,0,27,2; 29P 17
144,17,1,0,29; 31P 18
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 33P 19
0,0.0,10.0,0.0,0.0,0.0,0.0,30.0,10.0,0.0,30.0,0.,1.,0.,1.; 33P 20
110,10.0,0.0,0.0,0.0,0.0,0.0; 35P 21
110,10.0,0.0,0.0,10.0,0.0,30.0; 37P 22
110,0.0,0.0,30.0,10.0,0.0,30.0; 39P 23
110,0.0,0.0,30.0,0.0,0.0,0.0; 41P 24
102,4,35,37,39,41; 43P 25
142,0,33,0,43,2; 45P 26
144,33,1,0,45; 47P 27
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,20 49P 28
.0,0.0,0.0,20.0,30.0,10.0,20.0,0.0,10.0,20.0,30.0,0.,1.,0.,1.; 49P 29
110,0.0,20.0,30.0,0.0,20.0,0.0; 51P 30
110,0.0,20.0,30.0,10.0,20.0,30.0; 53P 31
110,10.0,20.0,0.0,10.0,20.0,30.0; 55P 32
110,10.0,20.0,0.0,0.0,20.0,0.0; 57P 33
102,4,51,53,55,57; 59P 34
142,0,49,0,59,2; 61P 35
144,49,1,0,61; 63P 36
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 65P 37
0,0.0,0.0,0.0,30.0,0.0,20.0,0.0,0.0,20.0,30.0,0.,1.,0.,1.; 65P 38
110,0.0,0.0,30.0,0.0,0.0,0.0; 67P 39
110,0.0,0.0,30.0,0.0,20.0,30.0; 69P 40
110,0.0,20.0,0.0,0.0,20.0,30.0; 71P 41
110,0.0,20.0,0.0,0.0,0.0,0.0; 73P 42
102,4,67,69,71,73; 75P 43
142,0,65,0,75,2; 77P 44
144,65,1,0,77; 79P 45
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,10.0,0 81P 46
.0,0.0,10.0,20.0,0.0,10.0,0.0,30.0,10.0,20.0,30.0,0.,1.,0.,1.; 81P 47
110,10.0,20.0,0.0,10.0,0.0,0.0; 83P 48
110,10.0,20.0,0.0,10.0,20.0,30.0; 85P 49
110,10.0,0.0,30.0,10.0,20.0,30.0; 87P 50
110,10.0,0.0,30.0,10.0,0.0,0.0; 89P 51
102,4,83,85,87,89; 91P 52
142,0,81,0,91,2; 93P 53
144,81,1,0,93; 95P 54
T 1
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.igs"
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#3963"
],
"what": "a 20 mm square face bounded by one closed degree-1 B-spline edge whose only vertex sits at parameter 2e-7, just past the curve's start: the face must be kept, not dropped or crashed on",
"source": "analytic",
"method": "one planar face 20 x 20: A = 400; a sheet, so valid is false; 1 face",
"valid": false,
"body_count": 1,
"area_mm2": 400.0,
"faces": 1
}
@@ -0,0 +1,48 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('hand-written test part'),'2;1');
FILE_NAME('input.step','2026-10-21T00:00:00',(''),(''),'kernel-cases','kernel-cases','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1E-06),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('square','square','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=CARTESIAN_POINT('',(20.0,0.0,0.0));
#16=CARTESIAN_POINT('',(20.0,20.0,0.0));
#17=CARTESIAN_POINT('',(0.0,20.0,0.0));
#18=CARTESIAN_POINT('',(0.0,0.0,0.0));
#19=B_SPLINE_CURVE_WITH_KNOTS('',1,(#14,#15,#16,#17,#18),.POLYLINE_FORM.,.T.,.F.,(2,1,1,1,2),(0.,0.25,0.5,0.75,1.),.UNSPECIFIED.);
#20=CARTESIAN_POINT('',(1.6E-05,0.0,0.0));
#21=VERTEX_POINT('',#20);
#22=EDGE_CURVE('',#21,#21,#19,.T.);
#23=ORIENTED_EDGE('',*,*,#22,.T.);
#24=EDGE_LOOP('',(#23));
#25=FACE_OUTER_BOUND('',#24,.T.);
#26=CARTESIAN_POINT('',(0.0,0.0,0.0));
#27=DIRECTION('',(0.0,0.0,1.0));
#28=DIRECTION('',(1.0,0.0,0.0));
#29=AXIS2_PLACEMENT_3D('',#26,#27,#28);
#30=PLANE('',#29);
#31=ADVANCED_FACE('',(#25),#30,.T.);
#32=OPEN_SHELL('',(#31));
#33=SHELL_BASED_SURFACE_MODEL('square',(#32));
#34=CARTESIAN_POINT('',(0.0,0.0,0.0));
#35=DIRECTION('',(0.0,0.0,1.0));
#36=DIRECTION('',(1.0,0.0,0.0));
#37=AXIS2_PLACEMENT_3D('',#34,#35,#36);
#38=MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#37,#33),#5);
#39=SHAPE_DEFINITION_REPRESENTATION(#13,#38);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,13 @@
{
"sources": [
"tangency-labs/solidcraft#3928",
"tangency-labs/solidcraft#3972"
],
"what": "an IGES file of twelve trimmed planes forming two separate closed boxes (10x20x30, one 100 mm along x): they must come in as two solids, not one open body",
"source": "analytic",
"method": "two boxes 10 x 20 x 30: V = 2*6000; A = 2*2200; 12 faces",
"body_count": 2,
"volume_mm3": 12000.0,
"area_mm2": 4400.0,
"faces": 12
}
@@ -0,0 +1,307 @@
test S 1
1H,,1H;,,,,,,,,,,,1.,2,2HMM,,,,1.E-6; G 1
128 1 0 0 0 0 0 000000000D 1
128 0 0 2 0 0 0 0D 2
110 3 0 0 0 0 0 000000000D 3
110 0 0 1 0 0 0 0D 4
110 4 0 0 0 0 0 000000000D 5
110 0 0 1 0 0 0 0D 6
110 5 0 0 0 0 0 000000000D 7
110 0 0 1 0 0 0 0D 8
110 6 0 0 0 0 0 000000000D 9
110 0 0 1 0 0 0 0D 10
102 7 0 0 0 0 0 000000000D 11
102 0 0 1 0 0 0 0D 12
142 8 0 0 0 0 0 000000000D 13
142 0 0 1 0 0 0 0D 14
144 9 0 0 0 0 0 000000000D 15
144 0 0 1 0 0 0 0D 16
128 10 0 0 0 0 0 000000000D 17
128 0 0 2 0 0 0 0D 18
110 12 0 0 0 0 0 000000000D 19
110 0 0 1 0 0 0 0D 20
110 13 0 0 0 0 0 000000000D 21
110 0 0 1 0 0 0 0D 22
110 14 0 0 0 0 0 000000000D 23
110 0 0 1 0 0 0 0D 24
110 15 0 0 0 0 0 000000000D 25
110 0 0 1 0 0 0 0D 26
102 16 0 0 0 0 0 000000000D 27
102 0 0 1 0 0 0 0D 28
142 17 0 0 0 0 0 000000000D 29
142 0 0 1 0 0 0 0D 30
144 18 0 0 0 0 0 000000000D 31
144 0 0 1 0 0 0 0D 32
128 19 0 0 0 0 0 000000000D 33
128 0 0 2 0 0 0 0D 34
110 21 0 0 0 0 0 000000000D 35
110 0 0 1 0 0 0 0D 36
110 22 0 0 0 0 0 000000000D 37
110 0 0 1 0 0 0 0D 38
110 23 0 0 0 0 0 000000000D 39
110 0 0 1 0 0 0 0D 40
110 24 0 0 0 0 0 000000000D 41
110 0 0 1 0 0 0 0D 42
102 25 0 0 0 0 0 000000000D 43
102 0 0 1 0 0 0 0D 44
142 26 0 0 0 0 0 000000000D 45
142 0 0 1 0 0 0 0D 46
144 27 0 0 0 0 0 000000000D 47
144 0 0 1 0 0 0 0D 48
128 28 0 0 0 0 0 000000000D 49
128 0 0 2 0 0 0 0D 50
110 30 0 0 0 0 0 000000000D 51
110 0 0 1 0 0 0 0D 52
110 31 0 0 0 0 0 000000000D 53
110 0 0 1 0 0 0 0D 54
110 32 0 0 0 0 0 000000000D 55
110 0 0 1 0 0 0 0D 56
110 33 0 0 0 0 0 000000000D 57
110 0 0 1 0 0 0 0D 58
102 34 0 0 0 0 0 000000000D 59
102 0 0 1 0 0 0 0D 60
142 35 0 0 0 0 0 000000000D 61
142 0 0 1 0 0 0 0D 62
144 36 0 0 0 0 0 000000000D 63
144 0 0 1 0 0 0 0D 64
128 37 0 0 0 0 0 000000000D 65
128 0 0 2 0 0 0 0D 66
110 39 0 0 0 0 0 000000000D 67
110 0 0 1 0 0 0 0D 68
110 40 0 0 0 0 0 000000000D 69
110 0 0 1 0 0 0 0D 70
110 41 0 0 0 0 0 000000000D 71
110 0 0 1 0 0 0 0D 72
110 42 0 0 0 0 0 000000000D 73
110 0 0 1 0 0 0 0D 74
102 43 0 0 0 0 0 000000000D 75
102 0 0 1 0 0 0 0D 76
142 44 0 0 0 0 0 000000000D 77
142 0 0 1 0 0 0 0D 78
144 45 0 0 0 0 0 000000000D 79
144 0 0 1 0 0 0 0D 80
128 46 0 0 0 0 0 000000000D 81
128 0 0 2 0 0 0 0D 82
110 48 0 0 0 0 0 000000000D 83
110 0 0 1 0 0 0 0D 84
110 49 0 0 0 0 0 000000000D 85
110 0 0 1 0 0 0 0D 86
110 50 0 0 0 0 0 000000000D 87
110 0 0 1 0 0 0 0D 88
110 51 0 0 0 0 0 000000000D 89
110 0 0 1 0 0 0 0D 90
102 52 0 0 0 0 0 000000000D 91
102 0 0 1 0 0 0 0D 92
142 53 0 0 0 0 0 000000000D 93
142 0 0 1 0 0 0 0D 94
144 54 0 0 0 0 0 000000000D 95
144 0 0 1 0 0 0 0D 96
128 55 0 0 0 0 0 000000000D 97
128 0 0 2 0 0 0 0D 98
110 57 0 0 0 0 0 000000000D 99
110 0 0 1 0 0 0 0D 100
110 58 0 0 0 0 0 000000000D 101
110 0 0 1 0 0 0 0D 102
110 59 0 0 0 0 0 000000000D 103
110 0 0 1 0 0 0 0D 104
110 60 0 0 0 0 0 000000000D 105
110 0 0 1 0 0 0 0D 106
102 61 0 0 0 0 0 000000000D 107
102 0 0 1 0 0 0 0D 108
142 62 0 0 0 0 0 000000000D 109
142 0 0 1 0 0 0 0D 110
144 63 0 0 0 0 0 000000000D 111
144 0 0 1 0 0 0 0D 112
128 64 0 0 0 0 0 000000000D 113
128 0 0 3 0 0 0 0D 114
110 67 0 0 0 0 0 000000000D 115
110 0 0 1 0 0 0 0D 116
110 68 0 0 0 0 0 000000000D 117
110 0 0 1 0 0 0 0D 118
110 69 0 0 0 0 0 000000000D 119
110 0 0 1 0 0 0 0D 120
110 70 0 0 0 0 0 000000000D 121
110 0 0 1 0 0 0 0D 122
102 71 0 0 0 0 0 000000000D 123
102 0 0 1 0 0 0 0D 124
142 72 0 0 0 0 0 000000000D 125
142 0 0 1 0 0 0 0D 126
144 73 0 0 0 0 0 000000000D 127
144 0 0 1 0 0 0 0D 128
128 74 0 0 0 0 0 000000000D 129
128 0 0 2 0 0 0 0D 130
110 76 0 0 0 0 0 000000000D 131
110 0 0 1 0 0 0 0D 132
110 77 0 0 0 0 0 000000000D 133
110 0 0 1 0 0 0 0D 134
110 78 0 0 0 0 0 000000000D 135
110 0 0 1 0 0 0 0D 136
110 79 0 0 0 0 0 000000000D 137
110 0 0 1 0 0 0 0D 138
102 80 0 0 0 0 0 000000000D 139
102 0 0 1 0 0 0 0D 140
142 81 0 0 0 0 0 000000000D 141
142 0 0 1 0 0 0 0D 142
144 82 0 0 0 0 0 000000000D 143
144 0 0 1 0 0 0 0D 144
128 83 0 0 0 0 0 000000000D 145
128 0 0 3 0 0 0 0D 146
110 86 0 0 0 0 0 000000000D 147
110 0 0 1 0 0 0 0D 148
110 87 0 0 0 0 0 000000000D 149
110 0 0 1 0 0 0 0D 150
110 88 0 0 0 0 0 000000000D 151
110 0 0 1 0 0 0 0D 152
110 89 0 0 0 0 0 000000000D 153
110 0 0 1 0 0 0 0D 154
102 90 0 0 0 0 0 000000000D 155
102 0 0 1 0 0 0 0D 156
142 91 0 0 0 0 0 000000000D 157
142 0 0 1 0 0 0 0D 158
144 92 0 0 0 0 0 000000000D 159
144 0 0 1 0 0 0 0D 160
128 93 0 0 0 0 0 000000000D 161
128 0 0 3 0 0 0 0D 162
110 96 0 0 0 0 0 000000000D 163
110 0 0 1 0 0 0 0D 164
110 97 0 0 0 0 0 000000000D 165
110 0 0 1 0 0 0 0D 166
110 98 0 0 0 0 0 000000000D 167
110 0 0 1 0 0 0 0D 168
110 99 0 0 0 0 0 000000000D 169
110 0 0 1 0 0 0 0D 170
102 100 0 0 0 0 0 000000000D 171
102 0 0 1 0 0 0 0D 172
142 101 0 0 0 0 0 000000000D 173
142 0 0 1 0 0 0 0D 174
144 102 0 0 0 0 0 000000000D 175
144 0 0 1 0 0 0 0D 176
128 103 0 0 0 0 0 000000000D 177
128 0 0 3 0 0 0 0D 178
110 106 0 0 0 0 0 000000000D 179
110 0 0 1 0 0 0 0D 180
110 107 0 0 0 0 0 000000000D 181
110 0 0 1 0 0 0 0D 182
110 108 0 0 0 0 0 000000000D 183
110 0 0 1 0 0 0 0D 184
110 109 0 0 0 0 0 000000000D 185
110 0 0 1 0 0 0 0D 186
102 110 0 0 0 0 0 000000000D 187
102 0 0 1 0 0 0 0D 188
142 111 0 0 0 0 0 000000000D 189
142 0 0 1 0 0 0 0D 190
144 112 0 0 0 0 0 000000000D 191
144 0 0 1 0 0 0 0D 192
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 1P 1
0,0.0,0.0,20.0,0.0,10.0,0.0,0.0,10.0,20.0,0.0,0.,1.,0.,1.; 1P 2
110,0.0,0.0,0.0,0.0,20.0,0.0; 3P 3
110,0.0,20.0,0.0,10.0,20.0,0.0; 5P 4
110,10.0,20.0,0.0,10.0,0.0,0.0; 7P 5
110,10.0,0.0,0.0,0.0,0.0,0.0; 9P 6
102,4,3,5,7,9; 11P 7
142,0,1,0,11,2; 13P 8
144,1,1,0,13; 15P 9
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 17P 10
0,30.0,10.0,0.0,30.0,0.0,20.0,30.0,10.0,20.0,30.0,0.,1.,0.,1.; 17P 11
110,0.0,0.0,30.0,10.0,0.0,30.0; 19P 12
110,10.0,0.0,30.0,10.0,20.0,30.0; 21P 13
110,10.0,20.0,30.0,0.0,20.0,30.0; 23P 14
110,0.0,20.0,30.0,0.0,0.0,30.0; 25P 15
102,4,19,21,23,25; 27P 16
142,0,17,0,27,2; 29P 17
144,17,1,0,29; 31P 18
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 33P 19
0,0.0,10.0,0.0,0.0,0.0,0.0,30.0,10.0,0.0,30.0,0.,1.,0.,1.; 33P 20
110,0.0,0.0,0.0,10.0,0.0,0.0; 35P 21
110,10.0,0.0,0.0,10.0,0.0,30.0; 37P 22
110,10.0,0.0,30.0,0.0,0.0,30.0; 39P 23
110,0.0,0.0,30.0,0.0,0.0,0.0; 41P 24
102,4,35,37,39,41; 43P 25
142,0,33,0,43,2; 45P 26
144,33,1,0,45; 47P 27
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,20 49P 28
.0,0.0,0.0,20.0,30.0,10.0,20.0,0.0,10.0,20.0,30.0,0.,1.,0.,1.; 49P 29
110,0.0,20.0,0.0,0.0,20.0,30.0; 51P 30
110,0.0,20.0,30.0,10.0,20.0,30.0; 53P 31
110,10.0,20.0,30.0,10.0,20.0,0.0; 55P 32
110,10.0,20.0,0.0,0.0,20.0,0.0; 57P 33
102,4,51,53,55,57; 59P 34
142,0,49,0,59,2; 61P 35
144,49,1,0,61; 63P 36
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,0.0,0. 65P 37
0,0.0,0.0,0.0,30.0,0.0,20.0,0.0,0.0,20.0,30.0,0.,1.,0.,1.; 65P 38
110,0.0,0.0,0.0,0.0,0.0,30.0; 67P 39
110,0.0,0.0,30.0,0.0,20.0,30.0; 69P 40
110,0.0,20.0,30.0,0.0,20.0,0.0; 71P 41
110,0.0,20.0,0.0,0.0,0.0,0.0; 73P 42
102,4,67,69,71,73; 75P 43
142,0,65,0,75,2; 77P 44
144,65,1,0,77; 79P 45
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,10.0,0 81P 46
.0,0.0,10.0,20.0,0.0,10.0,0.0,30.0,10.0,20.0,30.0,0.,1.,0.,1.; 81P 47
110,10.0,0.0,0.0,10.0,20.0,0.0; 83P 48
110,10.0,20.0,0.0,10.0,20.0,30.0; 85P 49
110,10.0,20.0,30.0,10.0,0.0,30.0; 87P 50
110,10.0,0.0,30.0,10.0,0.0,0.0; 89P 51
102,4,83,85,87,89; 91P 52
142,0,81,0,91,2; 93P 53
144,81,1,0,93; 95P 54
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,100.0, 97P 55
0.0,0.0,100.0,20.0,0.0,110.0,0.0,0.0,110.0,20.0,0.0,0.,1.,0.,1.; 97P 56
110,100.0,0.0,0.0,100.0,20.0,0.0; 99P 57
110,100.0,20.0,0.0,110.0,20.0,0.0; 101P 58
110,110.0,20.0,0.0,110.0,0.0,0.0; 103P 59
110,110.0,0.0,0.0,100.0,0.0,0.0; 105P 60
102,4,99,101,103,105; 107P 61
142,0,97,0,107,2; 109P 62
144,97,1,0,109; 111P 63
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,100.0, 113P 64
0.0,30.0,110.0,0.0,30.0,100.0,20.0,30.0,110.0,20.0,30.0,0.,1.,0. 113P 65
,1.; 113P 66
110,100.0,0.0,30.0,110.0,0.0,30.0; 115P 67
110,110.0,0.0,30.0,110.0,20.0,30.0; 117P 68
110,110.0,20.0,30.0,100.0,20.0,30.0; 119P 69
110,100.0,20.0,30.0,100.0,0.0,30.0; 121P 70
102,4,115,117,119,121; 123P 71
142,0,113,0,123,2; 125P 72
144,113,1,0,125; 127P 73
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,100.0, 129P 74
0.0,0.0,110.0,0.0,0.0,100.0,0.0,30.0,110.0,0.0,30.0,0.,1.,0.,1.; 129P 75
110,100.0,0.0,0.0,110.0,0.0,0.0; 131P 76
110,110.0,0.0,0.0,110.0,0.0,30.0; 133P 77
110,110.0,0.0,30.0,100.0,0.0,30.0; 135P 78
110,100.0,0.0,30.0,100.0,0.0,0.0; 137P 79
102,4,131,133,135,137; 139P 80
142,0,129,0,139,2; 141P 81
144,129,1,0,141; 143P 82
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,100.0, 145P 83
20.0,0.0,100.0,20.0,30.0,110.0,20.0,0.0,110.0,20.0,30.0,0.,1.,0. 145P 84
,1.; 145P 85
110,100.0,20.0,0.0,100.0,20.0,30.0; 147P 86
110,100.0,20.0,30.0,110.0,20.0,30.0; 149P 87
110,110.0,20.0,30.0,110.0,20.0,0.0; 151P 88
110,110.0,20.0,0.0,100.0,20.0,0.0; 153P 89
102,4,147,149,151,153; 155P 90
142,0,145,0,155,2; 157P 91
144,145,1,0,157; 159P 92
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,100.0, 161P 93
0.0,0.0,100.0,0.0,30.0,100.0,20.0,0.0,100.0,20.0,30.0,0.,1.,0.,1 161P 94
.; 161P 95
110,100.0,0.0,0.0,100.0,0.0,30.0; 163P 96
110,100.0,0.0,30.0,100.0,20.0,30.0; 165P 97
110,100.0,20.0,30.0,100.0,20.0,0.0; 167P 98
110,100.0,20.0,0.0,100.0,0.0,0.0; 169P 99
102,4,163,165,167,169; 171P 100
142,0,161,0,171,2; 173P 101
144,161,1,0,173; 175P 102
128,1,1,1,1,0,0,1,0,0,0.,0.,1.,1.,0.,0.,1.,1.,1.,1.,1.,1.,110.0, 177P 103
0.0,0.0,110.0,20.0,0.0,110.0,0.0,30.0,110.0,20.0,30.0,0.,1.,0.,1 177P 104
.; 177P 105
110,110.0,0.0,0.0,110.0,20.0,0.0; 179P 106
110,110.0,20.0,0.0,110.0,20.0,30.0; 181P 107
110,110.0,20.0,30.0,110.0,0.0,30.0; 183P 108
110,110.0,0.0,30.0,110.0,0.0,0.0; 185P 109
102,4,179,181,183,185; 187P 110
142,0,177,0,187,2; 189P 111
144,177,1,0,189; 191P 112
T 1
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.igs"
}
}
]
}
@@ -0,0 +1,14 @@
{
"sources": [
"tangency-labs/solidcraft#4005"
],
"what": "a cylinder r=5 h=10 whose side is a CONICAL_SURFACE with a semi-angle of 8e-12 rad (a cylinder to within rounding, as the exporter wrote it): the face must be read, not refused as a 'bad cone'",
"source": "analytic",
"method": "V = pi r^2 h = 250 pi = 785.3982; A = 2 pi r h + 2 pi r^2 = 471.2389; 3 faces, 3 edges (two circles, one seam), 2 vertices",
"body_count": 1,
"volume_mm3": 785.3982,
"area_mm2": 471.2389,
"faces": 3,
"edges": 3,
"vertices": 2
}
@@ -0,0 +1,81 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('hand-written test part'),'2;1');
FILE_NAME('input.step','2026-10-21T00:00:00',(''),(''),'kernel-cases','kernel-cases','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1E-06),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('pin','pin','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=DIRECTION('',(0.0,0.0,1.0));
#16=DIRECTION('',(1.0,0.0,0.0));
#17=AXIS2_PLACEMENT_3D('',#14,#15,#16);
#18=CIRCLE('',#17,5.0);
#19=CARTESIAN_POINT('',(5.0,0.0,0.0));
#20=VERTEX_POINT('',#19);
#21=EDGE_CURVE('',#20,#20,#18,.T.);
#22=CARTESIAN_POINT('',(0.0,0.0,10.0));
#23=DIRECTION('',(0.0,0.0,1.0));
#24=DIRECTION('',(1.0,0.0,0.0));
#25=AXIS2_PLACEMENT_3D('',#22,#23,#24);
#26=CIRCLE('',#25,5.0);
#27=CARTESIAN_POINT('',(5.0,0.0,10.0));
#28=VERTEX_POINT('',#27);
#29=EDGE_CURVE('',#28,#28,#26,.T.);
#30=CARTESIAN_POINT('',(5.0,0.0,0.0));
#31=DIRECTION('',(0.0,0.0,1.0));
#32=VECTOR('',#31,10.0);
#33=LINE('',#30,#32);
#34=EDGE_CURVE('',#20,#28,#33,.T.);
#35=CARTESIAN_POINT('',(0.0,0.0,0.0));
#36=DIRECTION('',(0.0,0.0,-1.0));
#37=DIRECTION('',(1.0,0.0,0.0));
#38=AXIS2_PLACEMENT_3D('',#35,#36,#37);
#39=PLANE('',#38);
#40=ORIENTED_EDGE('',*,*,#21,.F.);
#41=EDGE_LOOP('',(#40));
#42=FACE_OUTER_BOUND('',#41,.T.);
#43=ADVANCED_FACE('',(#42),#39,.T.);
#44=CARTESIAN_POINT('',(0.0,0.0,10.0));
#45=DIRECTION('',(0.0,0.0,1.0));
#46=DIRECTION('',(1.0,0.0,0.0));
#47=AXIS2_PLACEMENT_3D('',#44,#45,#46);
#48=PLANE('',#47);
#49=ORIENTED_EDGE('',*,*,#29,.T.);
#50=EDGE_LOOP('',(#49));
#51=FACE_OUTER_BOUND('',#50,.T.);
#52=ADVANCED_FACE('',(#51),#48,.T.);
#53=CARTESIAN_POINT('',(0.0,0.0,0.0));
#54=DIRECTION('',(0.0,0.0,1.0));
#55=DIRECTION('',(1.0,0.0,0.0));
#56=AXIS2_PLACEMENT_3D('',#53,#54,#55);
#57=CONICAL_SURFACE('',#56,5.0,8.E-12);
#58=ORIENTED_EDGE('',*,*,#21,.T.);
#59=ORIENTED_EDGE('',*,*,#34,.T.);
#60=ORIENTED_EDGE('',*,*,#29,.F.);
#61=ORIENTED_EDGE('',*,*,#34,.F.);
#62=EDGE_LOOP('',(#58,#59,#60,#61));
#63=FACE_OUTER_BOUND('',#62,.T.);
#64=ADVANCED_FACE('',(#63),#57,.T.);
#65=CLOSED_SHELL('',(#43,#52,#64));
#66=MANIFOLD_SOLID_BREP('pin',#65);
#67=CARTESIAN_POINT('',(0.0,0.0,0.0));
#68=DIRECTION('',(0.0,0.0,1.0));
#69=DIRECTION('',(1.0,0.0,0.0));
#70=AXIS2_PLACEMENT_3D('',#67,#68,#69);
#71=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#70,#66),#5);
#72=SHAPE_DEFINITION_REPRESENTATION(#13,#71);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
@@ -0,0 +1,14 @@
{
"sources": [
"tangency-labs/solidcraft#4006"
],
"what": "an annular plate r 4..10, 3 thick, whose top face is a CONICAL_SURFACE of semi-angle pi/2 - 7e-12 (a plane to within rounding, as the exporter wrote it): the face must be read, not refused as a 'bad cone', and the body stays closed",
"source": "analytic",
"method": "V = pi (10^2 - 4^2) 3 = 252 pi = 791.6813; A = 2 pi (100 - 16) + 2 pi 10*3 + 2 pi 4*3 = 791.6813; 4 faces, 6 edges, 4 vertices",
"body_count": 1,
"volume_mm3": 791.6813,
"area_mm2": 791.6813,
"faces": 4,
"edges": 6,
"vertices": 4
}
@@ -0,0 +1,120 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('hand-written test part'),'2;1');
FILE_NAME('input.step','2026-10-21T00:00:00',(''),(''),'kernel-cases','kernel-cases','');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1=( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#2=( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#3=( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#4=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1E-06),#1,'distance_accuracy_value','confusion accuracy');
#5=( GEOMETRIC_REPRESENTATION_CONTEXT(3) GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#4)) GLOBAL_UNIT_ASSIGNED_CONTEXT((#1,#2,#3)) REPRESENTATION_CONTEXT('','3D') );
#6=APPLICATION_CONTEXT('automotive design');
#7=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2000,#6);
#8=PRODUCT_CONTEXT('',#6,'mechanical');
#9=PRODUCT_DEFINITION_CONTEXT('part definition',#6,'design');
#10=PRODUCT('plate','plate','',(#8));
#11=PRODUCT_DEFINITION_FORMATION('','',#10);
#12=PRODUCT_DEFINITION('design','',#11,#9);
#13=PRODUCT_DEFINITION_SHAPE('','',#12);
#14=CARTESIAN_POINT('',(0.0,0.0,0.0));
#15=DIRECTION('',(0.0,0.0,1.0));
#16=DIRECTION('',(1.0,0.0,0.0));
#17=AXIS2_PLACEMENT_3D('',#14,#15,#16);
#18=CIRCLE('',#17,10.0);
#19=CARTESIAN_POINT('',(10.0,0.0,0.0));
#20=VERTEX_POINT('',#19);
#21=EDGE_CURVE('',#20,#20,#18,.T.);
#22=CARTESIAN_POINT('',(0.0,0.0,3.0));
#23=DIRECTION('',(0.0,0.0,1.0));
#24=DIRECTION('',(1.0,0.0,0.0));
#25=AXIS2_PLACEMENT_3D('',#22,#23,#24);
#26=CIRCLE('',#25,10.0);
#27=CARTESIAN_POINT('',(10.0,0.0,3.0));
#28=VERTEX_POINT('',#27);
#29=EDGE_CURVE('',#28,#28,#26,.T.);
#30=CARTESIAN_POINT('',(0.0,0.0,0.0));
#31=DIRECTION('',(0.0,0.0,1.0));
#32=DIRECTION('',(1.0,0.0,0.0));
#33=AXIS2_PLACEMENT_3D('',#30,#31,#32);
#34=CIRCLE('',#33,4.0);
#35=CARTESIAN_POINT('',(4.0,0.0,0.0));
#36=VERTEX_POINT('',#35);
#37=EDGE_CURVE('',#36,#36,#34,.T.);
#38=CARTESIAN_POINT('',(0.0,0.0,3.0));
#39=DIRECTION('',(0.0,0.0,1.0));
#40=DIRECTION('',(1.0,0.0,0.0));
#41=AXIS2_PLACEMENT_3D('',#38,#39,#40);
#42=CIRCLE('',#41,4.0);
#43=CARTESIAN_POINT('',(4.0,0.0,3.0));
#44=VERTEX_POINT('',#43);
#45=EDGE_CURVE('',#44,#44,#42,.T.);
#46=CARTESIAN_POINT('',(10.0,0.0,0.0));
#47=DIRECTION('',(0.0,0.0,1.0));
#48=VECTOR('',#47,3.0);
#49=LINE('',#46,#48);
#50=EDGE_CURVE('',#20,#28,#49,.T.);
#51=CARTESIAN_POINT('',(4.0,0.0,0.0));
#52=DIRECTION('',(0.0,0.0,1.0));
#53=VECTOR('',#52,3.0);
#54=LINE('',#51,#53);
#55=EDGE_CURVE('',#36,#44,#54,.T.);
#56=CARTESIAN_POINT('',(0.0,0.0,0.0));
#57=DIRECTION('',(0.0,0.0,-1.0));
#58=DIRECTION('',(1.0,0.0,0.0));
#59=AXIS2_PLACEMENT_3D('',#56,#57,#58);
#60=PLANE('',#59);
#61=ORIENTED_EDGE('',*,*,#21,.F.);
#62=EDGE_LOOP('',(#61));
#63=FACE_OUTER_BOUND('',#62,.T.);
#64=ORIENTED_EDGE('',*,*,#37,.T.);
#65=EDGE_LOOP('',(#64));
#66=FACE_BOUND('',#65,.T.);
#67=ADVANCED_FACE('',(#63,#66),#60,.T.);
#68=CARTESIAN_POINT('',(0.0,0.0,3.0));
#69=DIRECTION('',(0.0,0.0,1.0));
#70=DIRECTION('',(1.0,0.0,0.0));
#71=AXIS2_PLACEMENT_3D('',#68,#69,#70);
#72=CONICAL_SURFACE('',#71,4.0,1.5707963267878966);
#73=ORIENTED_EDGE('',*,*,#29,.T.);
#74=EDGE_LOOP('',(#73));
#75=FACE_OUTER_BOUND('',#74,.T.);
#76=ORIENTED_EDGE('',*,*,#45,.F.);
#77=EDGE_LOOP('',(#76));
#78=FACE_BOUND('',#77,.T.);
#79=ADVANCED_FACE('',(#75,#78),#72,.F.);
#80=CARTESIAN_POINT('',(0.0,0.0,0.0));
#81=DIRECTION('',(0.0,0.0,1.0));
#82=DIRECTION('',(1.0,0.0,0.0));
#83=AXIS2_PLACEMENT_3D('',#80,#81,#82);
#84=CYLINDRICAL_SURFACE('',#83,10.0);
#85=ORIENTED_EDGE('',*,*,#21,.T.);
#86=ORIENTED_EDGE('',*,*,#50,.T.);
#87=ORIENTED_EDGE('',*,*,#29,.F.);
#88=ORIENTED_EDGE('',*,*,#50,.F.);
#89=EDGE_LOOP('',(#85,#86,#87,#88));
#90=FACE_OUTER_BOUND('',#89,.T.);
#91=ADVANCED_FACE('',(#90),#84,.T.);
#92=CARTESIAN_POINT('',(0.0,0.0,0.0));
#93=DIRECTION('',(0.0,0.0,1.0));
#94=DIRECTION('',(1.0,0.0,0.0));
#95=AXIS2_PLACEMENT_3D('',#92,#93,#94);
#96=CYLINDRICAL_SURFACE('',#95,4.0);
#97=ORIENTED_EDGE('',*,*,#55,.T.);
#98=ORIENTED_EDGE('',*,*,#45,.T.);
#99=ORIENTED_EDGE('',*,*,#55,.F.);
#100=ORIENTED_EDGE('',*,*,#37,.F.);
#101=EDGE_LOOP('',(#97,#98,#99,#100));
#102=FACE_OUTER_BOUND('',#101,.T.);
#103=ADVANCED_FACE('',(#102),#96,.F.);
#104=CLOSED_SHELL('',(#67,#79,#91,#103));
#105=MANIFOLD_SOLID_BREP('plate',#104);
#106=CARTESIAN_POINT('',(0.0,0.0,0.0));
#107=DIRECTION('',(0.0,0.0,1.0));
#108=DIRECTION('',(1.0,0.0,0.0));
#109=AXIS2_PLACEMENT_3D('',#106,#107,#108);
#110=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#109,#105),#5);
#111=SHAPE_DEFINITION_REPRESENTATION(#13,#110);
ENDSEC;
END-ISO-10303-21;
@@ -0,0 +1,10 @@
{
"commands": [
{
"command": "file.insert_step",
"params": {
"path": "$CASE/input.step"
}
}
]
}
+218
View File
@@ -0,0 +1,218 @@
[
{
"source": "tangency-labs/solidcraft#11",
"why": "export-only: STEP export merging user-split faces; no import geometry"
},
{
"source": "tangency-labs/solidcraft#14",
"why": "needs Fusion-written IGES files (commercial CAD output) that can't be rebuilt; the IGES reader's synthetic cases are 3359, 3806, 3845, 3886, 3912, 3913, 3972"
},
{
"source": "tangency-labs/solidcraft#200",
"why": "feature request (.f3z history import), no geometry"
},
{
"source": "tangency-labs/solidcraft#688",
"why": "feature request (FreeCAD .FCStd import), no geometry"
},
{
"source": "tangency-labs/solidcraft#1033",
"why": "performance only (large PCB STEP loads slowly), no wrong result"
},
{
"source": "tangency-labs/solidcraft#1161",
"why": "feature request (external I/O library), no geometry"
},
{
"source": "tangency-labs/solidcraft#1397",
"why": "CI corpus of real-world files, tolerance-based; not a hand-writable geometry case"
},
{
"source": "tangency-labs/solidcraft#1468",
"why": "needs the reporter's STEP file (seam artefact in display); looks like tessellation, other area: tessellation"
},
{
"source": "tangency-labs/solidcraft#1609",
"why": "metadata/assembly naming of IGES parts, no geometry consequence"
},
{
"source": "tangency-labs/solidcraft#1706",
"why": "needs the Fusion-written threaded part (wrong coordinates and negative volume); cause unknown, cannot be rebuilt synthetically"
},
{
"source": "tangency-labs/solidcraft#1708",
"why": "F3D import (editable history), not STEP/IGES geometry"
},
{
"source": "tangency-labs/solidcraft#1709",
"why": "F3D import (editable history), not STEP/IGES geometry"
},
{
"source": "tangency-labs/solidcraft#1784",
"why": "memory use of a 38 MB STEP import; crash/performance, no hand-writable geometry; other area: crashes"
},
{
"source": "tangency-labs/solidcraft#1928",
"why": "export-only: revolved faces scaled across their axis written as NURBS"
},
{
"source": "tangency-labs/solidcraft#1934",
"why": "hang on a user's STEP file (gehaeuse82.stp), performance; no synthetic repro"
},
{
"source": "tangency-labs/solidcraft#1984",
"why": "other area: booleans (interference of near-coaxial pins after a round trip)"
},
{
"source": "tangency-labs/solidcraft#2052",
"why": "DXF import, not STEP/IGES"
},
{
"source": "tangency-labs/solidcraft#2127",
"why": "3MF import, not STEP/IGES"
},
{
"source": "tangency-labs/solidcraft#2579",
"why": "other area: booleans (divide_face loses a small hole in a large tilted plate)"
},
{
"source": "tangency-labs/solidcraft#2605",
"why": "SVG import UI, no geometry"
},
{
"source": "tangency-labs/solidcraft#2748",
"why": "parameter import, no geometry"
},
{
"source": "tangency-labs/solidcraft#2776",
"why": "parameter import performance, no geometry"
},
{
"source": "tangency-labs/solidcraft#2809",
"why": "performance only (orientation meshing of periodic faces, minutes per part), no wrong result"
},
{
"source": "tangency-labs/solidcraft#2814",
"why": "performance only (opening a large assembly takes an hour), no wrong result"
},
{
"source": "tangency-labs/solidcraft#2872",
"why": "placement after 'stand it up' makes a sketch/extrude land elsewhere: UI/placement, not import geometry; no file to rebuild"
},
{
"source": "tangency-labs/solidcraft#2875",
"why": "performance only (orient each instanced part once)"
},
{
"source": "tangency-labs/solidcraft#2918",
"why": "performance/contract tests for repeated instances, no wrong geometry"
},
{
"source": "tangency-labs/solidcraft#3046",
"why": "performance only (parallel read of distinct parts)"
},
{
"source": "tangency-labs/solidcraft#3047",
"why": "performance only (mesh an instanced part once)"
},
{
"source": "tangency-labs/solidcraft#3108",
"why": "performance only (STEP load time), no wrong result"
},
{
"source": "tangency-labs/solidcraft#3209",
"why": "FreeCAD/Rhino import decode caps, not STEP/IGES"
},
{
"source": "tangency-labs/solidcraft#3216",
"why": "CSV parameter import, no geometry"
},
{
"source": "tangency-labs/solidcraft#3221",
"why": "design file size limit when saving a large STEP import, not geometry"
},
{
"source": "tangency-labs/solidcraft#3223",
"why": "UI/placement after 'stand it up' (extrude lands at 90 degrees); no file to rebuild; same class as #2872"
},
{
"source": "tangency-labs/solidcraft#3237",
"why": "MCP feature request (reverse engineering STEP files), no geometry"
},
{
"source": "tangency-labs/solidcraft#3289",
"why": "assembly cap/refusal policy for huge assemblies (50,000 instances), needs a huge synthetic assembly and is not a geometry answer"
},
{
"source": "tangency-labs/solidcraft#3394",
"why": "export-only: STEP export drops cone faces for other readers (fixed by #3557)"
},
{
"source": "tangency-labs/solidcraft#3537",
"why": "tolerance persistence across saving a design, not import geometry"
},
{
"source": "tangency-labs/solidcraft#3557",
"why": "export-only: loop order of merged cone and cylinder faces on STEP export"
},
{
"source": "tangency-labs/solidcraft#3573",
"why": "other area: shell (tapered filleted box shell, fillet edges 0.02 mm off the surface)"
},
{
"source": "tangency-labs/solidcraft#3595",
"why": "performance only (orbit stutter with ~100 bodies)"
},
{
"source": "tangency-labs/solidcraft#3720",
"why": "performance only (viewport lag with a 1,163-body assembly)"
},
{
"source": "tangency-labs/solidcraft#3784",
"why": "CI goldens differing on Windows, not an import geometry case"
},
{
"source": "tangency-labs/solidcraft#3847",
"why": "other area: tessellation (display plans for threads and pointed ends of STEP parts)"
},
{
"source": "tangency-labs/solidcraft#3849",
"why": "other area: tessellation (display plans for STEP threads and pointed ends)"
},
{
"source": "tangency-labs/solidcraft#3858",
"why": "3MF import naming, not STEP/IGES geometry"
},
{
"source": "tangency-labs/solidcraft#3859",
"why": "3MF import naming, not STEP/IGES geometry"
},
{
"source": "tangency-labs/solidcraft#3924",
"why": "AP242 tessellated parts as mesh bodies: a feature with no graded geometry, and the TRIANGULATED_SURFACE_SET entity layout could not be written reliably from the specification here; needs the tangency-labs/models file"
},
{
"source": "tangency-labs/solidcraft#3925",
"why": "AP242 tessellated parts as mesh bodies: same as #3924"
},
{
"source": "tangency-labs/solidcraft#3974",
"why": "refactor PR (STEP geometry as plain data), no behaviour change to grade"
},
{
"source": "tangency-labs/solidcraft#4007",
"why": "export-only: writer nondeterminism for a revolved horn torus; the reading side would need the collapsed-pole spline of the written file"
},
{
"source": "tangency-labs/solidcraft#4021",
"why": "performance only (display plans and model cache for large assemblies)"
},
{
"source": "tangency-labs/solidcraft#4086",
"why": "STEP-import file too large: size limit, no geometry"
},
{
"source": "tangency-labs/solidcraft#4100",
"why": "component/joint bookkeeping after deleting an inserted STEP, not geometry"
}
]