diff --git a/Generic objects/key-ring-18_9-mm.fcstd b/Generic objects/key-ring-18_9-mm.fcstd
new file mode 100644
index 00000000..9edd5071
Binary files /dev/null and b/Generic objects/key-ring-18_9-mm.fcstd differ
diff --git a/Generic objects/key-ring-18_9mm.step b/Generic objects/key-ring-18_9mm.step
new file mode 100644
index 00000000..536451c9
--- /dev/null
+++ b/Generic objects/key-ring-18_9mm.step	
@@ -0,0 +1,835 @@
+ISO-10303-21;
+HEADER;
+FILE_DESCRIPTION(('FreeCAD Model'),'2;1');
+FILE_NAME(
+'/home/obijuan/development/FreeCAD-library/Generic 
+objects/key-ring-18_9mm.step','2015-02-15T09:43:22',('Author'),(''),
+  'Open CASCADE STEP processor 6.7','FreeCAD','Unknown');
+FILE_SCHEMA(('AUTOMOTIVE_DESIGN_CC2 { 1 2 10303 214 -1 1 5 4 }'));
+ENDSEC;
+DATA;
+#1 = APPLICATION_PROTOCOL_DEFINITION('committee draft',
+  'automotive_design',1997,#2);
+#2 = APPLICATION_CONTEXT(
+  'core data for automotive mechanical design processes');
+#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);
+#4 = PRODUCT_DEFINITION_SHAPE('','',#5);
+#5 = PRODUCT_DEFINITION('design','',#6,#9);
+#6 = PRODUCT_DEFINITION_FORMATION('','',#7);
+#7 = PRODUCT('key-ring-model-1','key-ring-model-1','',(#8));
+#8 = MECHANICAL_CONTEXT('',#2,'mechanical');
+#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
+#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#442);
+#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);
+#12 = CARTESIAN_POINT('',(0.,0.,0.));
+#13 = DIRECTION('',(0.,0.,1.));
+#14 = DIRECTION('',(1.,0.,-0.));
+#15 = MANIFOLD_SOLID_BREP('',#16);
+#16 = CLOSED_SHELL('',(#17,#320,#434,#438));
+#17 = ADVANCED_FACE('',(#18),#41,.F.);
+#18 = FACE_BOUND('',#19,.F.);
+#19 = EDGE_LOOP('',(#20,#138,#240,#241));
+#20 = ORIENTED_EDGE('',*,*,#21,.T.);
+#21 = EDGE_CURVE('',#22,#24,#26,.T.);
+#22 = VERTEX_POINT('',#23);
+#23 = CARTESIAN_POINT('',(9.4,-9.251035259944E-24,-6.434038485669E-22));
+#24 = VERTEX_POINT('',#25);
+#25 = CARTESIAN_POINT('',(9.4,-8.312509632642E-09,0.900000519387));
+#26 = SEAM_CURVE('',#27,(#40,#131),.PCURVE_S1.);
+#27 = ( BOUNDED_CURVE() B_SPLINE_CURVE(11,(#28,#29,#30,#31,#32,#33,#34,
+    #35,#36,#37,#38,#39),.UNSPECIFIED.,.F.,.F.) 
+B_SPLINE_CURVE_WITH_KNOTS((12,12),(0.,6.347315779474),
+.PIECEWISE_BEZIER_KNOTS.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() 
+RATIONAL_B_SPLINE_CURVE((1.669078461068,1.669078461068,1.669078461069,
+    1.669078461067,1.66907846107,1.669078461066,1.66907846107,
+    1.669078461067,1.669078461069,1.669078461068,1.669078461068,
+1.669078461068)) REPRESENTATION_ITEM('') );
+#28 = CARTESIAN_POINT('',(9.4,3.459038611098E-15,-5.551115123126E-17));
+#29 = CARTESIAN_POINT('',(9.400000000001,5.369268815325,
+    8.182064623613E-02));
+#30 = CARTESIAN_POINT('',(6.026370419707,10.738416814093,0.163627498095)
+  );
+#31 = CARTESIAN_POINT('',(-0.723169530259,13.753567352707,0.24547858618)
+  );
+#32 = CARTESIAN_POINT('',(-8.978695812288,12.051574462725,0.32722967407)
+  );
+#33 = CARTESIAN_POINT('',(-15.12453002532,4.969906488298,0.409149037399)
+  );
+#34 = CARTESIAN_POINT('',(-15.12453002963,-4.969906474906,0.490851481987
+    ));
+#35 = CARTESIAN_POINT('',(-8.978695823003,-12.05157445481,0.572770845317
+    ));
+#36 = CARTESIAN_POINT('',(-0.723169542398,-13.75356735204,0.654521933207
+    ));
+#37 = CARTESIAN_POINT('',(6.026370410205,-10.73841681942,0.736373021292)
+  );
+#38 = CARTESIAN_POINT('',(9.399999995254,-5.369268823637,0.818179873151)
+  );
+#39 = CARTESIAN_POINT('',(9.4,-8.312463880417E-09,0.900000519387));
+#40 = PCURVE('',#41,#126);
+#41 = ( BOUNDED_SURFACE() B_SPLINE_SURFACE(6,11,(
+    (#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,#67,#68,#69,#70,#71,#72,#73,#74,#75,#76,#77)
+    ,(#78,#79,#80,#81,#82,#83,#84,#85,#86,#87,#88,#89)
+    ,(#90,#91,#92,#93,#94,#95,#96,#97,#98,#99,#100,#101)
+    ,(#102,#103,#104,#105,#106,#107,#108,#109,#110,#111,#112,#113)
+    ,(#114,#115,#116,#117,#118,#119,#120,#121,#122,#123,#124,#125
+)),.UNSPECIFIED.,.T.,.F.,.F.) B_SPLINE_SURFACE_WITH_KNOTS((1,6,6,1),(12,
+    12),(-6.28318530718,0.,6.28318530718,12.566370614359),(0.,
+6.347315779474),.UNSPECIFIED.) GEOMETRIC_REPRESENTATION_ITEM() 
+RATIONAL_B_SPLINE_SURFACE((
+    (1.669078461068,1.669078461068,1.669078461069,1.669078461067
+      ,1.66907846107,1.669078461066,1.66907846107,1.669078461067
+      ,1.669078461069,1.669078461068,1.669078461068,1.669078461068)
+    ,(1.03672962321,1.03672962321,1.03672962321,1.036729623209
+      ,1.03672962321,1.036729623209,1.036729623211,1.036729623209
+      ,1.03672962321,1.036729623209,1.03672962321,1.03672962321)
+    ,(1.038346699848,1.038346699847,1.038346699848,1.038346699847
+      ,1.038346699848,1.038346699847,1.038346699848,1.038346699847
+      ,1.038346699848,1.038346699847,1.038346699848,1.038346699848)
+    ,(0.853534330196,0.853534330196,0.853534330196,0.853534330196
+      ,0.853534330197,0.853534330196,0.853534330197,0.853534330196
+      ,0.853534330196,0.853534330196,0.853534330196,0.853534330196)
+    ,(1.038346699848,1.038346699847,1.038346699848,1.038346699847
+      ,1.038346699848,1.038346699846,1.038346699849,1.038346699847
+      ,1.038346699848,1.038346699847,1.038346699848,1.038346699848)
+    ,(1.03672962321,1.03672962321,1.03672962321,1.036729623209
+      ,1.03672962321,1.036729623209,1.03672962321,1.036729623209
+      ,1.03672962321,1.03672962321,1.03672962321,1.03672962321)
+    ,(1.669078461068,1.669078461068,1.669078461069,1.669078461067
+      ,1.66907846107,1.669078461066,1.66907846107,1.669078461067
+      ,1.669078461069,1.669078461068,1.669078461068,1.669078461068
+))) REPRESENTATION_ITEM('') SURFACE() );
+#42 = CARTESIAN_POINT('',(9.4,3.459038611098E-15,-5.551115123126E-17));
+#43 = CARTESIAN_POINT('',(9.400000000001,5.369268815325,
+    8.182064623613E-02));
+#44 = CARTESIAN_POINT('',(6.026370419707,10.738416814093,0.163627498095)
+  );
+#45 = CARTESIAN_POINT('',(-0.723169530259,13.753567352707,0.24547858618)
+  );
+#46 = CARTESIAN_POINT('',(-8.978695812288,12.051574462725,0.32722967407)
+  );
+#47 = CARTESIAN_POINT('',(-15.12453002532,4.969906488298,0.409149037399)
+  );
+#48 = CARTESIAN_POINT('',(-15.12453002963,-4.969906474906,0.490851481987
+    ));
+#49 = CARTESIAN_POINT('',(-8.978695823003,-12.05157445481,0.572770845317
+    ));
+#50 = CARTESIAN_POINT('',(-0.723169542398,-13.75356735204,0.654521933207
+    ));
+#51 = CARTESIAN_POINT('',(6.026370410205,-10.73841681942,0.736373021292)
+  );
+#52 = CARTESIAN_POINT('',(9.399999995254,-5.369268823637,0.818179873151)
+  );
+#53 = CARTESIAN_POINT('',(9.4,-8.312463880417E-09,0.900000519387));
+#54 = CARTESIAN_POINT('',(9.4,-1.125488591214E-14,0.747694384007));
+#55 = CARTESIAN_POINT('',(9.399995905264,5.369268568856,0.829515030243)
+  );
+#56 = CARTESIAN_POINT('',(6.026385459911,10.738413748347,0.911321882077)
+  );
+#57 = CARTESIAN_POINT('',(-0.723210301267,13.75357551918,0.993172970264)
+  );
+#58 = CARTESIAN_POINT('',(-8.978619274511,12.05156122054,1.074924057982)
+  );
+#59 = CARTESIAN_POINT('',(-15.1246326153,4.969912621601,1.156843421418)
+  );
+#60 = CARTESIAN_POINT('',(-15.12442605111,-4.969899885593,1.238545866117
+    ));
+#61 = CARTESIAN_POINT('',(-8.978771536476,-12.05158659042,1.320465229145
+    ));
+#62 = CARTESIAN_POINT('',(-0.723128705001,-13.75355792296,1.402216317337
+    ));
+#63 = CARTESIAN_POINT('',(6.026354816741,-10.7384188993,1.484067405257)
+  );
+#64 = CARTESIAN_POINT('',(9.400003227007,-5.369268577169,1.565874257162)
+  );
+#65 = CARTESIAN_POINT('',(9.399999137016,-8.312455782727E-09,
+    1.647694903393));
+#66 = CARTESIAN_POINT('',(8.475453314253,3.042704976863E-15,
+    0.855050572461));
+#67 = CARTESIAN_POINT('',(8.475448631583,4.841165884694,0.936866155431)
+  );
+#68 = CARTESIAN_POINT('',(5.433659383916,9.682218205557,1.01869628521));
+#69 = CARTESIAN_POINT('',(-0.652090510607,12.400891356539,1.100479765899
+    ));
+#70 = CARTESIAN_POINT('',(-8.095499594973,10.86604510376,1.182368701302)
+  );
+#71 = CARTESIAN_POINT('',(-13.63705750975,4.481361864462,1.264080182461)
+  );
+#72 = CARTESIAN_POINT('',(-13.63682127698,-4.481347329191,1.346020414894
+    ));
+#73 = CARTESIAN_POINT('',(-8.095673695604,-10.86607413375,1.427731895588
+    ));
+#74 = CARTESIAN_POINT('',(-0.651997171841,-12.40087123522,1.509620831531
+    ));
+#75 = CARTESIAN_POINT('',(5.433624361806,-9.682224084389,1.591404311917)
+  );
+#76 = CARTESIAN_POINT('',(8.475457015034,-4.841165875928,1.673234441776)
+  );
+#77 = CARTESIAN_POINT('',(8.47545232736,8.765972468738E-09,
+    1.755050024741));
+#78 = CARTESIAN_POINT('',(7.712897385546,1.306246777411E-14,
+    1.609823385706E-15));
+#79 = CARTESIAN_POINT('',(7.712897385547,4.405592915362,
+    8.181140684497E-02));
+#80 = CARTESIAN_POINT('',(4.944766460482,8.811083617789,0.163660736047)
+  );
+#81 = CARTESIAN_POINT('',(-0.593380236822,11.2852020438,0.245388454689)
+  );
+#82 = CARTESIAN_POINT('',(-7.367208796273,9.888261172919,0.327391085561)
+  );
+#83 = CARTESIAN_POINT('',(-12.40999246895,4.078402837814,0.408931107574)
+  );
+#84 = CARTESIAN_POINT('',(-12.40999245708,-4.078402874586,0.491067464569
+    ));
+#85 = CARTESIAN_POINT('',(-7.36720876682,-9.888261194742,0.572607486585)
+  );
+#86 = CARTESIAN_POINT('',(-0.59338020347,-11.28520204556,0.654610117455)
+  );
+#87 = CARTESIAN_POINT('',(4.94476648662,-8.811083603139,0.736337836098)
+  );
+#88 = CARTESIAN_POINT('',(7.712897398592,-4.405592892508,0.818187165299)
+  );
+#89 = CARTESIAN_POINT('',(7.712897385547,2.285206008451E-08,
+    0.899998572145));
+#90 = CARTESIAN_POINT('',(8.475453314253,-9.020562075079E-16,
+    -0.855050572461));
+#91 = CARTESIAN_POINT('',(8.475457996925,4.84116644841,-0.77323498949));
+#92 = CARTESIAN_POINT('',(5.433624984476,9.682225217425,-0.691404859655)
+  );
+#93 = CARTESIAN_POINT('',(-0.651997260551,12.400872678462,
+    -0.609621379198));
+#94 = CARTESIAN_POINT('',(-8.095674649567,10.86607539083,-0.527732443401
+    ));
+#95 = CARTESIAN_POINT('',(-13.63682286945,4.48134783659,-0.446020962486)
+  );
+#96 = CARTESIAN_POINT('',(-13.6370590931,-4.481362400056,-0.364080730308
+    ));
+#97 = CARTESIAN_POINT('',(-8.095500526334,-10.8660463776,-0.282369248924
+    ));
+#98 = CARTESIAN_POINT('',(-0.65209057374,-12.4008928011,-0.200480313671)
+  );
+#99 = CARTESIAN_POINT('',(5.433660026644,-9.68221932736,-0.118696832908)
+  );
+#100 = CARTESIAN_POINT('',(8.47544962348,-4.841166439643,
+    -3.686670315479E-02));
+#101 = CARTESIAN_POINT('',(8.475454301147,8.765968523977E-09,
+    4.494887982148E-02));
+#102 = CARTESIAN_POINT('',(9.4,7.528699885739E-15,-0.747694384007));
+#103 = CARTESIAN_POINT('',(9.400004094737,5.369269061794,-0.665873737771
+    ));
+#104 = CARTESIAN_POINT('',(6.026355379506,10.738419879839,
+    -0.584066885887));
+#105 = CARTESIAN_POINT('',(-0.723128759255,13.753559186232,
+    -0.502215797904));
+#106 = CARTESIAN_POINT('',(-8.978772350064,12.051587704914,
+    -0.420464709841));
+#107 = CARTESIAN_POINT('',(-15.12442743534,4.969900354996,
+    -0.338545346619));
+#108 = CARTESIAN_POINT('',(-15.12463400814,-4.969913064227,
+    -0.256842902142));
+#109 = CARTESIAN_POINT('',(-8.978620109535,-12.0515623192,
+    -0.174923538511));
+#110 = CARTESIAN_POINT('',(-0.72321037979,-13.75357678113,
+    -9.317245092297E-02));
+#111 = CARTESIAN_POINT('',(6.026386003666,-10.73841473954,
+    -1.132136267251E-02));
+#112 = CARTESIAN_POINT('',(9.399996763502,-5.369269070106,
+    7.048548913973E-02));
+#113 = CARTESIAN_POINT('',(9.400000862984,-8.312460990367E-09,
+    0.15230613538));
+#114 = CARTESIAN_POINT('',(9.4,3.459038611098E-15,-5.551115123126E-17));
+#115 = CARTESIAN_POINT('',(9.400000000001,5.369268815325,
+    8.182064623613E-02));
+#116 = CARTESIAN_POINT('',(6.026370419707,10.738416814093,0.163627498095
+    ));
+#117 = CARTESIAN_POINT('',(-0.723169530259,13.753567352707,0.24547858618
+    ));
+#118 = CARTESIAN_POINT('',(-8.978695812288,12.051574462725,0.32722967407
+    ));
+#119 = CARTESIAN_POINT('',(-15.12453002532,4.969906488298,0.409149037399
+    ));
+#120 = CARTESIAN_POINT('',(-15.12453002963,-4.969906474906,
+    0.490851481987));
+#121 = CARTESIAN_POINT('',(-8.978695823003,-12.05157445481,
+    0.572770845317));
+#122 = CARTESIAN_POINT('',(-0.723169542398,-13.75356735204,
+    0.654521933207));
+#123 = CARTESIAN_POINT('',(6.026370410205,-10.73841681942,0.736373021292
+    ));
+#124 = CARTESIAN_POINT('',(9.399999995254,-5.369268823637,0.818179873151
+    ));
+#125 = CARTESIAN_POINT('',(9.4,-8.312463880417E-09,0.900000519387));
+#126 = DEFINITIONAL_REPRESENTATION('',(#127),#130);
+#127 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#128,#129),.UNSPECIFIED.,.F.,.F.,
+  (2,2),(0.,6.347315779474),.PIECEWISE_BEZIER_KNOTS.);
+#128 = CARTESIAN_POINT('',(6.28318530718,0.));
+#129 = CARTESIAN_POINT('',(6.28318530718,6.347315779474));
+#130 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) 
+PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE',''
+  ) );
+#131 = PCURVE('',#41,#132);
+#132 = DEFINITIONAL_REPRESENTATION('',(#133),#137);
+#133 = LINE('',#134,#135);
+#134 = CARTESIAN_POINT('',(0.,0.));
+#135 = VECTOR('',#136,1.);
+#136 = DIRECTION('',(0.,1.));
+#137 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) 
+PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE',''
+  ) );
+#138 = ORIENTED_EDGE('',*,*,#139,.F.);
+#139 = EDGE_CURVE('',#24,#24,#140,.T.);
+#140 = SURFACE_CURVE('',#141,(#149,#156),.PCURVE_S1.);
+#141 = ( BOUNDED_CURVE() B_SPLINE_CURVE(6,(#142,#143,#144,#145,#146,#147
+,#148),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,6,6,1),(
+    -6.28318530718,0.,6.28318530718,12.566370614359),.UNSPECIFIED.) 
+CURVE() GEOMETRIC_REPRESENTATION_ITEM() RATIONAL_B_SPLINE_CURVE((
+    1.669078461068,1.03672962321,1.038346699848,0.853534330196,
+1.038346699848,1.03672962321,1.669078461068)) REPRESENTATION_ITEM('') );
+#142 = CARTESIAN_POINT('',(9.4,-8.312463880417E-09,0.900000519387));
+#143 = CARTESIAN_POINT('',(9.399999137016,-8.312455782727E-09,
+    1.647694903393));
+#144 = CARTESIAN_POINT('',(8.47545232736,8.765972468738E-09,
+    1.755050024741));
+#145 = CARTESIAN_POINT('',(7.712897385547,2.285206008451E-08,
+    0.899998572145));
+#146 = CARTESIAN_POINT('',(8.475454301147,8.765968523977E-09,
+    4.494887982148E-02));
+#147 = CARTESIAN_POINT('',(9.400000862984,-8.312460990367E-09,
+    0.15230613538));
+#148 = CARTESIAN_POINT('',(9.4,-8.312463880417E-09,0.900000519387));
+#149 = PCURVE('',#41,#150);
+#150 = DEFINITIONAL_REPRESENTATION('',(#151),#155);
+#151 = LINE('',#152,#153);
+#152 = CARTESIAN_POINT('',(0.,6.347315779474));
+#153 = VECTOR('',#154,1.);
+#154 = DIRECTION('',(1.,0.));
+#155 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) 
+PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE',''
+  ) );
+#156 = PCURVE('',#157,#235);
+#157 = ( BOUNDED_SURFACE() B_SPLINE_SURFACE(6,10,(
+    (#158,#159,#160,#161,#162,#163,#164,#165,#166,#167,#168)
+    ,(#169,#170,#171,#172,#173,#174,#175,#176,#177,#178,#179)
+    ,(#180,#181,#182,#183,#184,#185,#186,#187,#188,#189,#190)
+    ,(#191,#192,#193,#194,#195,#196,#197,#198,#199,#200,#201)
+    ,(#202,#203,#204,#205,#206,#207,#208,#209,#210,#211,#212)
+    ,(#213,#214,#215,#216,#217,#218,#219,#220,#221,#222,#223)
+    ,(#224,#225,#226,#227,#228,#229,#230,#231,#232,#233,#234
+)),.UNSPECIFIED.,.T.,.F.,.F.) B_SPLINE_SURFACE_WITH_KNOTS((1,6,6,1),(11,
+    11),(-6.28318530718,0.,6.28318530718,12.566370614359),(0.,
+4.936801161813),.UNSPECIFIED.) GEOMETRIC_REPRESENTATION_ITEM() 
+RATIONAL_B_SPLINE_SURFACE((
+    (1.669078461068,1.669078461068,1.669078461068,1.669078461069
+      ,1.669078461068,1.669078461069,1.669078461068,1.669078461068
+      ,1.669078461068,1.669078461068,1.669078461068)
+    ,(1.03672962321,1.03672962321,1.036729623209,1.03672962321
+      ,1.036729623209,1.03672962321,1.036729623209,1.03672962321
+      ,1.03672962321,1.03672962321,1.03672962321)
+    ,(1.038346699848,1.038346699848,1.038346699847,1.038346699848
+      ,1.038346699847,1.038346699848,1.038346699847,1.038346699848
+      ,1.038346699847,1.038346699848,1.038346699848)
+    ,(0.853534330196,0.853534330196,0.853534330196,0.853534330196
+      ,0.853534330196,0.853534330196,0.853534330196,0.853534330196
+      ,0.853534330196,0.853534330196,0.853534330196)
+    ,(1.038346699848,1.038346699848,1.038346699847,1.038346699848
+      ,1.038346699847,1.038346699848,1.038346699847,1.038346699848
+      ,1.038346699847,1.038346699848,1.038346699848)
+    ,(1.03672962321,1.03672962321,1.036729623209,1.03672962321
+      ,1.036729623209,1.03672962321,1.036729623209,1.03672962321
+      ,1.03672962321,1.03672962321,1.03672962321)
+    ,(1.669078461068,1.669078461068,1.669078461068,1.669078461069
+      ,1.669078461068,1.669078461069,1.669078461068,1.669078461068
+      ,1.669078461068,1.669078461068,1.669078461068
+))) REPRESENTATION_ITEM('') SURFACE() );
+#158 = CARTESIAN_POINT('',(9.4,-8.312505683783E-09,0.900000519387));
+#159 = CARTESIAN_POINT('',(9.400000004067,4.593684719087,0.969995272843)
+  );
+#160 = CARTESIAN_POINT('',(6.905917957217,9.187742086032,1.04001692136)
+  );
+#161 = CARTESIAN_POINT('',(1.915379288072,12.255891932717,1.109968620374
+    ));
+#162 = CARTESIAN_POINT('',(-4.496986471991,12.284092223366,
+    1.180027416194));
+#163 = CARTESIAN_POINT('',(-10.23764831909,8.590406924996,1.249999876406
+    ));
+#164 = CARTESIAN_POINT('',(-12.87836276711,2.295556908527,1.319972336617
+    ));
+#165 = CARTESIAN_POINT('',(-11.7370952708,-4.014493677607,1.390031132437
+    ));
+#166 = CARTESIAN_POINT('',(-7.848959567083,-8.396436219341,
+    1.459982831452));
+#167 = CARTESIAN_POINT('',(-2.891603451243,-10.05487786378,
+    1.530004479968));
+#168 = CARTESIAN_POINT('',(1.632292882151,-9.257192876184,1.599999233424
+    ));
+#169 = CARTESIAN_POINT('',(9.399999137016,-8.312498023244E-09,
+    1.647694903393));
+#170 = CARTESIAN_POINT('',(9.400007858442,4.593684819434,1.717689656859)
+  );
+#171 = CARTESIAN_POINT('',(6.905889503733,9.187747019779,1.787711305221)
+  );
+#172 = CARTESIAN_POINT('',(1.915436542408,12.255883061966,1.857663004917
+    ));
+#173 = CARTESIAN_POINT('',(-4.497050718787,12.284087325203,
+    1.927721799137));
+#174 = CARTESIAN_POINT('',(-10.23761507445,8.590446998477,1.997694261745
+    ));
+#175 = CARTESIAN_POINT('',(-12.87835699744,2.295492887533,2.067666719534
+    ));
+#176 = CARTESIAN_POINT('',(-11.73711446154,-4.014439008844,
+    2.137725517008));
+#177 = CARTESIAN_POINT('',(-7.848950110429,-8.396463750708,
+    2.207677215298));
+#178 = CARTESIAN_POINT('',(-2.891604842644,-10.05487055063,
+    2.277698863989));
+#179 = CARTESIAN_POINT('',(1.632293103327,-9.257194130532,2.34769361743)
+  );
+#180 = CARTESIAN_POINT('',(8.47545232736,8.765920211928E-09,
+    1.755050024741));
+#181 = CARTESIAN_POINT('',(8.475462292093,4.141911026122,1.825055557486)
+  );
+#182 = CARTESIAN_POINT('',(6.22662359386,8.283870183904,1.895032727905)
+  );
+#183 = CARTESIAN_POINT('',(1.727080180403,11.050873832024,1.965083664401
+    ));
+#184 = CARTESIAN_POINT('',(-4.054659790021,11.075385140133,
+    2.035021659545));
+#185 = CARTESIAN_POINT('',(-9.231006348304,7.745811754387,2.10505070432)
+  );
+#186 = CARTESIAN_POINT('',(-11.61119559623,2.069693414844,2.175079743585
+    ));
+#187 = CARTESIAN_POINT('',(-10.58312520926,-3.619680811991,2.24501774245
+    ));
+#188 = CARTESIAN_POINT('',(-7.076755724464,-7.570568697545,
+    2.315068677338));
+#189 = CARTESIAN_POINT('',(-2.607240551269,-9.065919047284,
+    2.385045848134));
+#190 = CARTESIAN_POINT('',(1.471747263113,-8.346693570868,2.45505138085)
+  );
+#191 = CARTESIAN_POINT('',(7.712897385547,2.285200972896E-08,
+    0.899998572145));
+#192 = CARTESIAN_POINT('',(7.712897374363,3.769292848027,0.970012995508)
+  );
+#193 = CARTESIAN_POINT('',(5.666408457508,7.5383562934,1.039953481204));
+#194 = CARTESIAN_POINT('',(1.571653671038,10.057006679245,1.110086266261
+    ));
+#195 = CARTESIAN_POINT('',(-3.689699541941,10.078467065182,
+    1.179924629676));
+#196 = CARTESIAN_POINT('',(-8.400808507058,7.049115329986,1.250000339776
+    ));
+#197 = CARTESIAN_POINT('',(-10.5660621032,1.88353729049,1.320076049874)
+  );
+#198 = CARTESIAN_POINT('',(-9.631303358576,-3.294157589299,1.38991441329
+    ));
+#199 = CARTESIAN_POINT('',(-6.439870229854,-6.889344804582,
+    1.460047198346));
+#200 = CARTESIAN_POINT('',(-2.372698258154,-8.250251963262,
+    1.529987684043));
+#201 = CARTESIAN_POINT('',(1.339330542317,-7.595721149332,1.600002107406
+    ));
+#202 = CARTESIAN_POINT('',(8.475454301147,8.765911996278E-09,
+    4.494887982148E-02));
+#203 = CARTESIAN_POINT('',(8.475444327834,4.141910796613,0.114954412544)
+  );
+#204 = CARTESIAN_POINT('',(6.226688671699,8.283858899607,0.184931583316)
+  );
+#205 = CARTESIAN_POINT('',(1.726949230234,11.050894120899,0.254982518255
+    ));
+#206 = CARTESIAN_POINT('',(-4.05451284694,11.07539634305,0.324920517058)
+  );
+#207 = CARTESIAN_POINT('',(-9.231082384311,7.745720099679,0.394949556352
+    ));
+#208 = CARTESIAN_POINT('',(-11.61120879243,2.069839841485,0.464978601156
+    ));
+#209 = CARTESIAN_POINT('',(-10.58308131686,-3.619805848526,
+    0.534916596239));
+#210 = CARTESIAN_POINT('',(-7.0767773534,-7.57050572874,0.604967532785)
+  );
+#211 = CARTESIAN_POINT('',(-2.607237368905,-9.06593577367,0.674944703181
+    ));
+#212 = CARTESIAN_POINT('',(1.471746757248,-8.346690701966,0.744950235932
+    ));
+#213 = CARTESIAN_POINT('',(9.400000862983,-8.312511456943E-09,
+    0.15230613538));
+#214 = CARTESIAN_POINT('',(9.399992149692,4.593684618741,0.222300888826)
+  );
+#215 = CARTESIAN_POINT('',(6.9059464107,9.187737152285,0.292322537498));
+#216 = CARTESIAN_POINT('',(1.915322033735,12.255900803465,0.362274235831
+    ));
+#217 = CARTESIAN_POINT('',(-4.496922225197,12.284097121532,
+    0.432333033252));
+#218 = CARTESIAN_POINT('',(-10.23768156373,8.590366851512,0.502305491066
+    ));
+#219 = CARTESIAN_POINT('',(-12.87836853678,2.295620929523,0.5722779537)
+  );
+#220 = CARTESIAN_POINT('',(-11.73707608007,-4.014548346371,
+    0.642336747866));
+#221 = CARTESIAN_POINT('',(-7.848969023736,-8.396408687974,
+    0.712288447606));
+#222 = CARTESIAN_POINT('',(-2.891602059843,-10.05488517693,
+    0.782310095948));
+#223 = CARTESIAN_POINT('',(1.632292660976,-9.257191621836,0.852304849419
+    ));
+#224 = CARTESIAN_POINT('',(9.4,-8.312505683783E-09,0.900000519387));
+#225 = CARTESIAN_POINT('',(9.400000004067,4.593684719087,0.969995272843)
+  );
+#226 = CARTESIAN_POINT('',(6.905917957217,9.187742086032,1.04001692136)
+  );
+#227 = CARTESIAN_POINT('',(1.915379288072,12.255891932717,1.109968620374
+    ));
+#228 = CARTESIAN_POINT('',(-4.496986471991,12.284092223366,
+    1.180027416194));
+#229 = CARTESIAN_POINT('',(-10.23764831909,8.590406924996,1.249999876406
+    ));
+#230 = CARTESIAN_POINT('',(-12.87836276711,2.295556908527,1.319972336617
+    ));
+#231 = CARTESIAN_POINT('',(-11.7370952708,-4.014493677607,1.390031132437
+    ));
+#232 = CARTESIAN_POINT('',(-7.848959567083,-8.396436219341,
+    1.459982831452));
+#233 = CARTESIAN_POINT('',(-2.891603451243,-10.05487786378,
+    1.530004479968));
+#234 = CARTESIAN_POINT('',(1.632292882151,-9.257192876184,1.599999233424
+    ));
+#235 = DEFINITIONAL_REPRESENTATION('',(#236),#239);
+#236 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#237,#238),.UNSPECIFIED.,.F.,.F.,
+  (2,2),(0.,6.28318530718),.PIECEWISE_BEZIER_KNOTS.);
+#237 = CARTESIAN_POINT('',(0.,0.));
+#238 = CARTESIAN_POINT('',(6.28318530718,0.));
+#239 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) 
+PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE',''
+  ) );
+#240 = ORIENTED_EDGE('',*,*,#21,.F.);
+#241 = ORIENTED_EDGE('',*,*,#242,.T.);
+#242 = EDGE_CURVE('',#22,#22,#243,.T.);
+#243 = SURFACE_CURVE('',#244,(#275,#281),.PCURVE_S1.);
+#244 = B_SPLINE_CURVE_WITH_KNOTS('',8,(#245,#246,#247,#248,#249,#250,
+    #251,#252,#253,#254,#255,#256,#257,#258,#259,#260,#261,#262,#263,
+    #264,#265,#266,#267,#268,#269,#270,#271,#272,#273,#274),
+  .UNSPECIFIED.,.T.,.F.,(9,7,7,7,9),(0.,1.570796326795,3.14159265359,
+    4.712388980385,6.28318530718),.UNSPECIFIED.);
+#245 = CARTESIAN_POINT('',(9.4,4.124871464326E-15,-2.22044604925E-16));
+#246 = CARTESIAN_POINT('',(9.4,2.411235566278E-15,8.707914296964E-02));
+#247 = CARTESIAN_POINT('',(9.380741823399,1.759451552681E-15,
+    0.175007366761));
+#248 = CARTESIAN_POINT('',(9.341570711506,2.954459263638E-16,
+    0.258469705539));
+#249 = CARTESIAN_POINT('',(9.2837794351,2.740855971114E-18,
+    0.331795085057));
+#250 = CARTESIAN_POINT('',(9.210823523466,8.783962484932E-16,
+    0.390052752797));
+#251 = CARTESIAN_POINT('',(9.127422157055,-1.634274827969E-17,
+    0.429970331727));
+#252 = CARTESIAN_POINT('',(9.038848607951,1.280801791388E-15,
+    0.449936210216));
+#253 = CARTESIAN_POINT('',(8.861798735383,2.207139696179E-15,
+    0.450063556977));
+#254 = CARTESIAN_POINT('',(8.773322131931,3.882466465545E-15,
+    0.430224674052));
+#255 = CARTESIAN_POINT('',(8.690114558598,3.022527226247E-15,
+    0.390527768506));
+#256 = CARTESIAN_POINT('',(8.61733558329,5.909753116082E-15,
+    0.332665377166));
+#257 = CARTESIAN_POINT('',(8.559481157011,5.140354466164E-15,
+    0.259881448407));
+#258 = CARTESIAN_POINT('',(8.519827493227,6.424099763355E-15,
+    0.176714504773));
+#259 = CARTESIAN_POINT('',(8.5,6.769018077212E-15,8.835729338221E-02));
+#260 = CARTESIAN_POINT('',(8.5,7.441836637989E-15,-8.835729338221E-02));
+#261 = CARTESIAN_POINT('',(8.519827493227,7.769750895945E-15,
+    -0.176714504773));
+#262 = CARTESIAN_POINT('',(8.559481157011,7.16472050497E-15,
+    -0.259881448407));
+#263 = CARTESIAN_POINT('',(8.617335583289,8.624689565518E-15,
+    -0.332665377166));
+#264 = CARTESIAN_POINT('',(8.690114558598,6.434031221463E-15,
+    -0.390527768506));
+#265 = CARTESIAN_POINT('',(8.773322131931,7.967220130742E-15,
+    -0.430224674052));
+#266 = CARTESIAN_POINT('',(8.861798735383,6.8861929544E-15,
+    -0.450063556977));
+#267 = CARTESIAN_POINT('',(9.038848607951,6.845340269984E-15,
+    -0.449936210216));
+#268 = CARTESIAN_POINT('',(9.127422157055,5.839404707913E-15,
+    -0.429970331727));
+#269 = CARTESIAN_POINT('',(9.210823523465,6.801165259949E-15,
+    -0.390052752796));
+#270 = CARTESIAN_POINT('',(9.283779435101,5.678979216232E-15,
+    -0.331795085057));
+#271 = CARTESIAN_POINT('',(9.341570711506,5.314271485929E-15,
+    -0.258469705539));
+#272 = CARTESIAN_POINT('',(9.380741823399,5.626422286692E-15,
+    -0.175007366761));
+#273 = CARTESIAN_POINT('',(9.4,4.5988672016E-15,-8.707914296964E-02));
+#274 = CARTESIAN_POINT('',(9.4,4.124899998485E-15,2.22044604925E-16));
+#275 = PCURVE('',#41,#276);
+#276 = DEFINITIONAL_REPRESENTATION('',(#277),#280);
+#277 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#278,#279),.UNSPECIFIED.,.F.,.F.,
+  (2,2),(0.,6.28318530718),.PIECEWISE_BEZIER_KNOTS.);
+#278 = CARTESIAN_POINT('',(0.,0.));
+#279 = CARTESIAN_POINT('',(6.28318530718,0.));
+#280 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) 
+PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE',''
+  ) );
+#281 = PCURVE('',#282,#287);
+#282 = PLANE('',#283);
+#283 = AXIS2_PLACEMENT_3D('',#284,#285,#286);
+#284 = CARTESIAN_POINT('',(9.4,4.124871464326E-15,-2.22044604925E-16));
+#285 = DIRECTION('',(5.600535405636E-14,1.,1.967906251266E-14));
+#286 = DIRECTION('',(1.,-5.600535405636E-14,0.));
+#287 = DEFINITIONAL_REPRESENTATION('',(#288),#319);
+#288 = B_SPLINE_CURVE_WITH_KNOTS('',8,(#289,#290,#291,#292,#293,#294,
+    #295,#296,#297,#298,#299,#300,#301,#302,#303,#304,#305,#306,#307,
+    #308,#309,#310,#311,#312,#313,#314,#315,#316,#317,#318),
+  .UNSPECIFIED.,.F.,.F.,(9,7,7,7,9),(0.,1.570796326795,3.14159265359,
+    4.712388980385,6.28318530718),.UNSPECIFIED.);
+#289 = CARTESIAN_POINT('',(0.,0.));
+#290 = CARTESIAN_POINT('',(-3.552713678801E-15,-8.707914296964E-02));
+#291 = CARTESIAN_POINT('',(-1.925817660092E-02,-0.175007366761));
+#292 = CARTESIAN_POINT('',(-5.842928849415E-02,-0.258469705539));
+#293 = CARTESIAN_POINT('',(-0.1162205649,-0.331795085057));
+#294 = CARTESIAN_POINT('',(-0.189176476534,-0.390052752797));
+#295 = CARTESIAN_POINT('',(-0.272577842945,-0.429970331727));
+#296 = CARTESIAN_POINT('',(-0.361151392049,-0.449936210216));
+#297 = CARTESIAN_POINT('',(-0.538201264617,-0.450063556977));
+#298 = CARTESIAN_POINT('',(-0.626677868069,-0.430224674052));
+#299 = CARTESIAN_POINT('',(-0.709885441402,-0.390527768506));
+#300 = CARTESIAN_POINT('',(-0.78266441671,-0.332665377166));
+#301 = CARTESIAN_POINT('',(-0.840518842989,-0.259881448407));
+#302 = CARTESIAN_POINT('',(-0.880172506773,-0.176714504773));
+#303 = CARTESIAN_POINT('',(-0.9,-8.835729338221E-02));
+#304 = CARTESIAN_POINT('',(-0.9,8.835729338221E-02));
+#305 = CARTESIAN_POINT('',(-0.880172506773,0.176714504773));
+#306 = CARTESIAN_POINT('',(-0.840518842989,0.259881448407));
+#307 = CARTESIAN_POINT('',(-0.782664416711,0.332665377166));
+#308 = CARTESIAN_POINT('',(-0.709885441402,0.390527768506));
+#309 = CARTESIAN_POINT('',(-0.626677868069,0.430224674052));
+#310 = CARTESIAN_POINT('',(-0.538201264617,0.450063556977));
+#311 = CARTESIAN_POINT('',(-0.361151392049,0.449936210216));
+#312 = CARTESIAN_POINT('',(-0.272577842945,0.429970331727));
+#313 = CARTESIAN_POINT('',(-0.189176476535,0.390052752796));
+#314 = CARTESIAN_POINT('',(-0.116220564899,0.331795085057));
+#315 = CARTESIAN_POINT('',(-5.842928849429E-02,0.258469705539));
+#316 = CARTESIAN_POINT('',(-1.925817660089E-02,0.175007366761));
+#317 = CARTESIAN_POINT('',(2.48689957516E-14,8.707914296964E-02));
+#318 = CARTESIAN_POINT('',(1.59872115546E-14,-4.440892098501E-16));
+#319 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) 
+PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE',''
+  ) );
+#320 = ADVANCED_FACE('',(#321),#157,.F.);
+#321 = FACE_BOUND('',#322,.F.);
+#322 = EDGE_LOOP('',(#323,#353,#432,#433));
+#323 = ORIENTED_EDGE('',*,*,#324,.T.);
+#324 = EDGE_CURVE('',#24,#325,#327,.T.);
+#325 = VERTEX_POINT('',#326);
+#326 = CARTESIAN_POINT('',(1.632292882151,-9.257192876184,1.599999233424
+    ));
+#327 = SEAM_CURVE('',#328,(#340,#346),.PCURVE_S1.);
+#328 = ( BOUNDED_CURVE() B_SPLINE_CURVE(10,(#329,#330,#331,#332,#333,
+    #334,#335,#336,#337,#338,#339),.UNSPECIFIED.,.F.,.F.) 
+B_SPLINE_CURVE_WITH_KNOTS((11,11),(0.,4.936801161813),
+.PIECEWISE_BEZIER_KNOTS.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() 
+RATIONAL_B_SPLINE_CURVE((1.669078461068,1.669078461068,1.669078461068,
+    1.669078461069,1.669078461068,1.669078461069,1.669078461068,
+    1.669078461068,1.669078461068,1.669078461068,1.669078461068)) 
+REPRESENTATION_ITEM('') );
+#329 = CARTESIAN_POINT('',(9.4,-8.312505683783E-09,0.900000519387));
+#330 = CARTESIAN_POINT('',(9.400000004067,4.593684719087,0.969995272843)
+  );
+#331 = CARTESIAN_POINT('',(6.905917957217,9.187742086032,1.04001692136)
+  );
+#332 = CARTESIAN_POINT('',(1.915379288072,12.255891932717,1.109968620374
+    ));
+#333 = CARTESIAN_POINT('',(-4.496986471991,12.284092223366,
+    1.180027416194));
+#334 = CARTESIAN_POINT('',(-10.23764831909,8.590406924996,1.249999876406
+    ));
+#335 = CARTESIAN_POINT('',(-12.87836276711,2.295556908527,1.319972336617
+    ));
+#336 = CARTESIAN_POINT('',(-11.7370952708,-4.014493677607,1.390031132437
+    ));
+#337 = CARTESIAN_POINT('',(-7.848959567083,-8.396436219341,
+    1.459982831452));
+#338 = CARTESIAN_POINT('',(-2.891603451243,-10.05487786378,
+    1.530004479968));
+#339 = CARTESIAN_POINT('',(1.632292882151,-9.257192876184,1.599999233424
+    ));
+#340 = PCURVE('',#157,#341);
+#341 = DEFINITIONAL_REPRESENTATION('',(#342),#345);
+#342 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#343,#344),.UNSPECIFIED.,.F.,.F.,
+  (2,2),(0.,4.936801161813),.PIECEWISE_BEZIER_KNOTS.);
+#343 = CARTESIAN_POINT('',(6.28318530718,0.));
+#344 = CARTESIAN_POINT('',(6.28318530718,4.936801161813));
+#345 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) 
+PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE',''
+  ) );
+#346 = PCURVE('',#157,#347);
+#347 = DEFINITIONAL_REPRESENTATION('',(#348),#352);
+#348 = LINE('',#349,#350);
+#349 = CARTESIAN_POINT('',(0.,0.));
+#350 = VECTOR('',#351,1.);
+#351 = DIRECTION('',(0.,1.));
+#352 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) 
+PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE',''
+  ) );
+#353 = ORIENTED_EDGE('',*,*,#354,.F.);
+#354 = EDGE_CURVE('',#325,#325,#355,.T.);
+#355 = SURFACE_CURVE('',#356,(#387,#393),.PCURVE_S1.);
+#356 = B_SPLINE_CURVE_WITH_KNOTS('',8,(#357,#358,#359,#360,#361,#362,
+    #363,#364,#365,#366,#367,#368,#369,#370,#371,#372,#373,#374,#375,
+    #376,#377,#378,#379,#380,#381,#382,#383,#384,#385,#386),
+  .UNSPECIFIED.,.T.,.F.,(9,7,7,7,9),(0.,1.570796326795,3.14159265359,
+    4.712388980385,6.28318530718),.UNSPECIFIED.);
+#357 = CARTESIAN_POINT('',(1.632292882151,-9.257192876184,1.599999233424
+    ));
+#358 = CARTESIAN_POINT('',(1.63229290791,-9.257193022269,1.687078376394)
+  );
+#359 = CARTESIAN_POINT('',(1.628948786131,-9.238227568246,1.775006632991
+    ));
+#360 = CARTESIAN_POINT('',(1.622146817571,-9.199651693763,1.858469038497
+    ));
+#361 = CARTESIAN_POINT('',(1.612111487877,-9.142738519988,1.931794516463
+    ));
+#362 = CARTESIAN_POINT('',(1.599442842046,-9.070891070662,1.990052308483
+    ));
+#363 = CARTESIAN_POINT('',(1.584960356322,-8.98875682577,2.029970029487)
+  );
+#364 = CARTESIAN_POINT('',(1.569579724459,-8.901528941816,2.049936058862
+    ));
+#365 = CARTESIAN_POINT('',(1.538835332016,-8.727168855693,2.050063707227
+    ));
+#366 = CARTESIAN_POINT('',(1.523471522816,-8.64003637779,2.030224975022)
+  );
+#367 = CARTESIAN_POINT('',(1.509022665362,-8.55809284826,1.990528211221)
+  );
+#368 = CARTESIAN_POINT('',(1.496384709857,-8.486419452394,1.93266594386)
+  );
+#369 = CARTESIAN_POINT('',(1.48633837108,-8.429443843018,1.859882113656)
+  );
+#370 = CARTESIAN_POINT('',(1.47945255896,-8.390392468153,1.776715237572)
+  );
+#371 = CARTESIAN_POINT('',(1.476009524224,-8.370866050965,1.688358059958
+    ));
+#372 = CARTESIAN_POINT('',(1.47600947195,-8.370865754505,1.511643473193)
+  );
+#373 = CARTESIAN_POINT('',(1.479452454412,-8.390391875233,1.423286228027
+    ));
+#374 = CARTESIAN_POINT('',(1.486338217329,-8.429442971053,1.340119216843
+    ));
+#375 = CARTESIAN_POINT('',(1.496384513045,-8.48641833622,1.267335189529)
+  );
+#376 = CARTESIAN_POINT('',(1.509022434318,-8.558091537945,1.20947267421)
+  );
+#377 = CARTESIAN_POINT('',(1.523471268286,-8.640034934282,1.16977562692)
+  );
+#378 = CARTESIAN_POINT('',(1.538835065749,-8.727167345621,1.149936593275
+    ));
+#379 = CARTESIAN_POINT('',(1.569579458268,-8.901527432171,1.150063638431
+    ));
+#380 = CARTESIAN_POINT('',(1.584960101943,-8.988755383116,1.170029366035
+    ));
+#381 = CARTESIAN_POINT('',(1.599442611283,-9.070889761939,1.209946802891
+    ));
+#382 = CARTESIAN_POINT('',(1.61211129158,-9.142737406736,1.26820434635)
+  );
+#383 = CARTESIAN_POINT('',(1.622146664655,-9.199650826533,1.34152962742)
+  );
+#384 = CARTESIAN_POINT('',(1.628948682593,-9.238226981054,1.42499189947)
+  );
+#385 = CARTESIAN_POINT('',(1.632292856392,-9.257192730098,1.512920090455
+    ));
+#386 = CARTESIAN_POINT('',(1.632292882151,-9.257192876184,1.599999233424
+    ));
+#387 = PCURVE('',#157,#388);
+#388 = DEFINITIONAL_REPRESENTATION('',(#389),#392);
+#389 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#390,#391),.UNSPECIFIED.,.F.,.F.,
+  (2,2),(0.,6.28318530718),.PIECEWISE_BEZIER_KNOTS.);
+#390 = CARTESIAN_POINT('',(0.,4.936801161813));
+#391 = CARTESIAN_POINT('',(6.28318530718,4.936801161813));
+#392 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) 
+PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE',''
+  ) );
+#393 = PCURVE('',#394,#399);
+#394 = PLANE('',#395);
+#395 = AXIS2_PLACEMENT_3D('',#396,#397,#398);
+#396 = CARTESIAN_POINT('',(1.554155395586,-8.814053239842,1.599999999959
+    ));
+#397 = DIRECTION('',(-0.984807748278,-0.173648204516,-3.268326215552E-14
+    ));
+#398 = DIRECTION('',(0.173648204516,-0.984807748278,-7.88860905221E-31)
+  );
+#399 = DEFINITIONAL_REPRESENTATION('',(#400),#431);
+#400 = B_SPLINE_CURVE_WITH_KNOTS('',8,(#401,#402,#403,#404,#405,#406,
+    #407,#408,#409,#410,#411,#412,#413,#414,#415,#416,#417,#418,#419,
+    #420,#421,#422,#423,#424,#425,#426,#427,#428,#429,#430),
+  .UNSPECIFIED.,.F.,.F.,(9,7,7,7,9),(0.,1.570796326795,3.14159265359,
+    4.712388980385,6.28318530718),.UNSPECIFIED.);
+#401 = CARTESIAN_POINT('',(0.449975781686,-7.665343160213E-07));
+#402 = CARTESIAN_POINT('',(0.449975930026,8.70783764352E-02));
+#403 = CARTESIAN_POINT('',(0.430717903211,0.175006633032));
+#404 = CARTESIAN_POINT('',(0.391546933495,0.258469038538));
+#405 = CARTESIAN_POINT('',(0.333755782,0.331794516504));
+#406 = CARTESIAN_POINT('',(0.260799969607,0.390052308524));
+#407 = CARTESIAN_POINT('',(0.177398671196,0.429970029529));
+#408 = CARTESIAN_POINT('',(8.882515610469E-02,0.449936058903));
+#409 = CARTESIAN_POINT('',(-8.822471624585E-02,0.450063707268));
+#410 = CARTESIAN_POINT('',(-0.176701353494,0.430224975064));
+#411 = CARTESIAN_POINT('',(-0.25990899445,0.390528211262));
+#412 = CARTESIAN_POINT('',(-0.332688068327,0.332665943901));
+#413 = CARTESIAN_POINT('',(-0.390542618594,0.259882113697));
+#414 = CARTESIAN_POINT('',(-0.430196424053,0.176715237613));
+#415 = CARTESIAN_POINT('',(-0.450024067796,8.835805999891E-02));
+#416 = CARTESIAN_POINT('',(-0.450024368829,-8.835652676527E-02));
+#417 = CARTESIAN_POINT('',(-0.430197026119,-0.176713771932));
+#418 = CARTESIAN_POINT('',(-0.39054350401,-0.259880783116));
+#419 = CARTESIAN_POINT('',(-0.332689201719,-0.33266481043));
+#420 = CARTESIAN_POINT('',(-0.259910324979,-0.390527325749));
+#421 = CARTESIAN_POINT('',(-0.17670281927,-0.430224373039));
+#422 = CARTESIAN_POINT('',(-8.822624961346E-02,-0.450063406684));
+#423 = CARTESIAN_POINT('',(8.882362317078E-02,-0.449936361528));
+#424 = CARTESIAN_POINT('',(0.177397206287,-0.429970633924));
+#425 = CARTESIAN_POINT('',(0.260798640696,-0.390053197068));
+#426 = CARTESIAN_POINT('',(0.333754651574,-0.331795653609));
+#427 = CARTESIAN_POINT('',(0.391546052888,-0.258470372538));
+#428 = CARTESIAN_POINT('',(0.43071730696,-0.175008100488));
+#429 = CARTESIAN_POINT('',(0.449975633347,-8.707990950384E-02));
+#430 = CARTESIAN_POINT('',(0.449975781686,-7.665343189078E-07));
+#431 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) 
+PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE',''
+  ) );
+#432 = ORIENTED_EDGE('',*,*,#324,.F.);
+#433 = ORIENTED_EDGE('',*,*,#139,.T.);
+#434 = ADVANCED_FACE('',(#435),#282,.F.);
+#435 = FACE_BOUND('',#436,.T.);
+#436 = EDGE_LOOP('',(#437));
+#437 = ORIENTED_EDGE('',*,*,#242,.T.);
+#438 = ADVANCED_FACE('',(#439),#394,.F.);
+#439 = FACE_BOUND('',#440,.F.);
+#440 = EDGE_LOOP('',(#441));
+#441 = ORIENTED_EDGE('',*,*,#354,.T.);
+#442 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) 
+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#446)) GLOBAL_UNIT_ASSIGNED_CONTEXT
+((#443,#444,#445)) REPRESENTATION_CONTEXT('Context #1',
+  '3D Context with UNIT and UNCERTAINTY') );
+#443 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
+#444 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
+#445 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
+#446 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(2.E-05),#443,
+  'distance_accuracy_value','confusion accuracy');
+#447 = PRODUCT_TYPE('part',$,(#7));
+#448 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#449)
+  ,#442);
+#449 = STYLED_ITEM('color',(#450),#15);
+#450 = PRESENTATION_STYLE_ASSIGNMENT((#451,#457));
+#451 = SURFACE_STYLE_USAGE(.BOTH.,#452);
+#452 = SURFACE_SIDE_STYLE('',(#453));
+#453 = SURFACE_STYLE_FILL_AREA(#454);
+#454 = FILL_AREA_STYLE('',(#455));
+#455 = FILL_AREA_STYLE_COLOUR('',#456);
+#456 = COLOUR_RGB('',0.800000011921,0.800000011921,0.800000011921);
+#457 = CURVE_STYLE('',#458,POSITIVE_LENGTH_MEASURE(0.1),#456);
+#458 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
+ENDSEC;
+END-ISO-10303-21;
diff --git a/Generic objects/key-ring-18_9mm.stl b/Generic objects/key-ring-18_9mm.stl
new file mode 100644
index 00000000..0356ca5f
Binary files /dev/null and b/Generic objects/key-ring-18_9mm.stl differ