Silas Gruen преди 9 месеца
родител
ревизия
c3484d71cf
променени са 2 файла, в които са добавени 503 реда и са изтрити 24 реда
  1. 492 0
      cell_measure_robot/pneumatics/sensor_tip.step
  2. 11 24
      cell_measure_robot/pneumatics/tconnector.py

+ 492 - 0
cell_measure_robot/pneumatics/sensor_tip.step

@@ -0,0 +1,492 @@
+ISO-10303-21;
+HEADER;
+FILE_DESCRIPTION(('FreeCAD Model'),'2;1');
+FILE_NAME('Open CASCADE Shape Model','2025-02-27T08:39:25',(''),(''),
+  'Open CASCADE STEP processor 7.8','FreeCAD','Unknown');
+FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
+ENDSEC;
+DATA;
+#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',
+  'automotive_design',2000,#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('Body001','Body001','',(#8));
+#8 = PRODUCT_CONTEXT('',#2,'mechanical');
+#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
+#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#435);
+#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,#54,#87,#129,#155,#175,#199,#223,#247,#271,
+    #316,#347,#372,#396,#414,#426));
+#17 = ADVANCED_FACE('',(#18),#49,.T.);
+#18 = FACE_BOUND('',#19,.T.);
+#19 = EDGE_LOOP('',(#20,#29,#41,#48));
+#20 = ORIENTED_EDGE('',*,*,#21,.T.);
+#21 = EDGE_CURVE('',#22,#22,#24,.T.);
+#22 = VERTEX_POINT('',#23);
+#23 = CARTESIAN_POINT('',(0.,-7.5,-3.5));
+#24 = CIRCLE('',#25,3.5);
+#25 = AXIS2_PLACEMENT_3D('',#26,#27,#28);
+#26 = CARTESIAN_POINT('',(0.,-7.5,0.));
+#27 = DIRECTION('',(0.,-1.,0.));
+#28 = DIRECTION('',(0.,0.,-1.));
+#29 = ORIENTED_EDGE('',*,*,#30,.T.);
+#30 = EDGE_CURVE('',#22,#31,#33,.T.);
+#31 = VERTEX_POINT('',#32);
+#32 = CARTESIAN_POINT('',(0.,-7.6,-3.4));
+#33 = ( BOUNDED_CURVE() B_SPLINE_CURVE(6,(#34,#35,#36,#37,#38,#39,#40),
+.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((7,7),(0.,
+1.570796326795),.PIECEWISE_BEZIER_KNOTS.) CURVE() 
+GEOMETRIC_REPRESENTATION_ITEM() RATIONAL_B_SPLINE_CURVE((1.031393471788,
+    1.010025407661,0.997924642725,0.993958444137,0.997924642725,
+1.010025407661,1.031393471788)) REPRESENTATION_ITEM('') );
+#34 = CARTESIAN_POINT('',(0.,-7.5,-3.5));
+#35 = CARTESIAN_POINT('',(0.,-7.526733678315,-3.5));
+#36 = CARTESIAN_POINT('',(0.,-7.552770857258,-3.491499564937));
+#37 = CARTESIAN_POINT('',(0.,-7.57519195132,-3.47519195132));
+#38 = CARTESIAN_POINT('',(0.,-7.591499564937,-3.452770857258));
+#39 = CARTESIAN_POINT('',(0.,-7.6,-3.426733678315));
+#40 = CARTESIAN_POINT('',(0.,-7.6,-3.4));
+#41 = ORIENTED_EDGE('',*,*,#42,.F.);
+#42 = EDGE_CURVE('',#31,#31,#43,.T.);
+#43 = CIRCLE('',#44,3.4);
+#44 = AXIS2_PLACEMENT_3D('',#45,#46,#47);
+#45 = CARTESIAN_POINT('',(0.,-7.6,0.));
+#46 = DIRECTION('',(0.,-1.,0.));
+#47 = DIRECTION('',(0.,0.,-1.));
+#48 = ORIENTED_EDGE('',*,*,#30,.F.);
+#49 = TOROIDAL_SURFACE('',#50,3.4,0.1);
+#50 = AXIS2_PLACEMENT_3D('',#51,#52,#53);
+#51 = CARTESIAN_POINT('',(0.,-7.5,0.));
+#52 = DIRECTION('',(0.,-1.,0.));
+#53 = DIRECTION('',(0.,0.,-1.));
+#54 = ADVANCED_FACE('',(#55),#82,.T.);
+#55 = FACE_BOUND('',#56,.T.);
+#56 = EDGE_LOOP('',(#57,#58,#65,#74,#81));
+#57 = ORIENTED_EDGE('',*,*,#21,.F.);
+#58 = ORIENTED_EDGE('',*,*,#59,.F.);
+#59 = EDGE_CURVE('',#60,#22,#62,.T.);
+#60 = VERTEX_POINT('',#61);
+#61 = CARTESIAN_POINT('',(0.,-6.957106781187,-3.5));
+#62 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#63,#64),.UNSPECIFIED.,.F.,.F.,(2,
+    2),(-0.342893218813,0.2),.PIECEWISE_BEZIER_KNOTS.);
+#63 = CARTESIAN_POINT('',(-8.572527594031E-16,-6.957106781187,-3.5));
+#64 = CARTESIAN_POINT('',(-8.572527594031E-16,-7.5,-3.5));
+#65 = ORIENTED_EDGE('',*,*,#66,.T.);
+#66 = EDGE_CURVE('',#60,#67,#69,.T.);
+#67 = VERTEX_POINT('',#68);
+#68 = CARTESIAN_POINT('',(4.286263797016E-16,-6.957106288257,3.5));
+#69 = CIRCLE('',#70,3.5);
+#70 = AXIS2_PLACEMENT_3D('',#71,#72,#73);
+#71 = CARTESIAN_POINT('',(0.,-6.957106781187,0.));
+#72 = DIRECTION('',(0.,-1.,0.));
+#73 = DIRECTION('',(0.,0.,-1.));
+#74 = ORIENTED_EDGE('',*,*,#75,.T.);
+#75 = EDGE_CURVE('',#67,#60,#76,.T.);
+#76 = CIRCLE('',#77,3.5);
+#77 = AXIS2_PLACEMENT_3D('',#78,#79,#80);
+#78 = CARTESIAN_POINT('',(0.,-6.957106781187,0.));
+#79 = DIRECTION('',(0.,-1.,0.));
+#80 = DIRECTION('',(0.,0.,-1.));
+#81 = ORIENTED_EDGE('',*,*,#59,.T.);
+#82 = CYLINDRICAL_SURFACE('',#83,3.5);
+#83 = AXIS2_PLACEMENT_3D('',#84,#85,#86);
+#84 = CARTESIAN_POINT('',(0.,-7.3,0.));
+#85 = DIRECTION('',(0.,-1.,0.));
+#86 = DIRECTION('',(0.,0.,-1.));
+#87 = ADVANCED_FACE('',(#88),#124,.T.);
+#88 = FACE_BOUND('',#89,.T.);
+#89 = EDGE_LOOP('',(#90,#101,#114,#115,#116,#117));
+#90 = ORIENTED_EDGE('',*,*,#91,.T.);
+#91 = EDGE_CURVE('',#92,#94,#96,.T.);
+#92 = VERTEX_POINT('',#93);
+#93 = CARTESIAN_POINT('',(0.,-5.542893218813,-3.5));
+#94 = VERTEX_POINT('',#95);
+#95 = CARTESIAN_POINT('',(4.286263797016E-16,-5.54289371255,3.5));
+#96 = CIRCLE('',#97,3.5);
+#97 = AXIS2_PLACEMENT_3D('',#98,#99,#100);
+#98 = CARTESIAN_POINT('',(0.,-5.542893218813,0.));
+#99 = DIRECTION('',(0.,-1.,0.));
+#100 = DIRECTION('',(0.,0.,-1.));
+#101 = ORIENTED_EDGE('',*,*,#102,.T.);
+#102 = EDGE_CURVE('',#94,#67,#103,.T.);
+#103 = B_SPLINE_CURVE_WITH_KNOTS('',9,(#104,#105,#106,#107,#108,#109,
+    #110,#111,#112,#113),.UNSPECIFIED.,.F.,.F.,(10,10),(4.11084268775,
+    8.456436267359),.PIECEWISE_BEZIER_KNOTS.);
+#104 = CARTESIAN_POINT('',(3.460314839207E-16,-5.631653855453,
+    2.825561493825));
+#105 = CARTESIAN_POINT('',(3.825950971367E-16,-5.426716383523,
+    3.124126053349));
+#106 = CARTESIAN_POINT('',(4.327997111803E-16,-5.383949613776,
+    3.53407783764));
+#107 = CARTESIAN_POINT('',(4.842473978843E-16,-5.572559072693,
+    3.954180080505));
+#108 = CARTESIAN_POINT('',(5.187620186393E-16,-5.988209448048,
+    4.236013346873));
+#109 = CARTESIAN_POINT('',(5.187328473364E-16,-6.512686079933,
+    4.235775145107));
+#110 = CARTESIAN_POINT('',(4.841720040203E-16,-6.928080283209,
+    3.953564442886));
+#111 = CARTESIAN_POINT('',(4.327033576916E-16,-7.116308068383,
+    3.533291051697));
+#112 = CARTESIAN_POINT('',(3.825035217198E-16,-7.073168940419,
+    3.123378283323));
+#113 = CARTESIAN_POINT('',(3.459627207591E-16,-6.867960354715,2.825));
+#114 = ORIENTED_EDGE('',*,*,#66,.F.);
+#115 = ORIENTED_EDGE('',*,*,#75,.F.);
+#116 = ORIENTED_EDGE('',*,*,#102,.F.);
+#117 = ORIENTED_EDGE('',*,*,#118,.T.);
+#118 = EDGE_CURVE('',#94,#92,#119,.T.);
+#119 = CIRCLE('',#120,3.5);
+#120 = AXIS2_PLACEMENT_3D('',#121,#122,#123);
+#121 = CARTESIAN_POINT('',(0.,-5.542893218813,0.));
+#122 = DIRECTION('',(0.,-1.,0.));
+#123 = DIRECTION('',(0.,0.,-1.));
+#124 = TOROIDAL_SURFACE('',#125,3.25,0.75);
+#125 = AXIS2_PLACEMENT_3D('',#126,#127,#128);
+#126 = CARTESIAN_POINT('',(0.,-6.25,0.));
+#127 = DIRECTION('',(0.,-1.,0.));
+#128 = DIRECTION('',(0.,0.,-1.));
+#129 = ADVANCED_FACE('',(#130),#150,.T.);
+#130 = FACE_BOUND('',#131,.T.);
+#131 = EDGE_LOOP('',(#132,#133,#141,#148,#149));
+#132 = ORIENTED_EDGE('',*,*,#91,.F.);
+#133 = ORIENTED_EDGE('',*,*,#134,.T.);
+#134 = EDGE_CURVE('',#92,#135,#137,.T.);
+#135 = VERTEX_POINT('',#136);
+#136 = CARTESIAN_POINT('',(0.,-5.35,-3.5));
+#137 = LINE('',#138,#139);
+#138 = CARTESIAN_POINT('',(0.,-7.3,-3.5));
+#139 = VECTOR('',#140,1.);
+#140 = DIRECTION('',(0.,1.,0.));
+#141 = ORIENTED_EDGE('',*,*,#142,.T.);
+#142 = EDGE_CURVE('',#135,#135,#143,.T.);
+#143 = CIRCLE('',#144,3.5);
+#144 = AXIS2_PLACEMENT_3D('',#145,#146,#147);
+#145 = CARTESIAN_POINT('',(0.,-5.35,0.));
+#146 = DIRECTION('',(0.,-1.,0.));
+#147 = DIRECTION('',(0.,0.,-1.));
+#148 = ORIENTED_EDGE('',*,*,#134,.F.);
+#149 = ORIENTED_EDGE('',*,*,#118,.F.);
+#150 = CYLINDRICAL_SURFACE('',#151,3.5);
+#151 = AXIS2_PLACEMENT_3D('',#152,#153,#154);
+#152 = CARTESIAN_POINT('',(0.,-7.3,0.));
+#153 = DIRECTION('',(0.,-1.,0.));
+#154 = DIRECTION('',(0.,0.,-1.));
+#155 = ADVANCED_FACE('',(#156,#167),#170,.T.);
+#156 = FACE_BOUND('',#157,.T.);
+#157 = EDGE_LOOP('',(#158));
+#158 = ORIENTED_EDGE('',*,*,#159,.T.);
+#159 = EDGE_CURVE('',#160,#160,#162,.T.);
+#160 = VERTEX_POINT('',#161);
+#161 = CARTESIAN_POINT('',(0.,-5.35,-3.7));
+#162 = CIRCLE('',#163,3.7);
+#163 = AXIS2_PLACEMENT_3D('',#164,#165,#166);
+#164 = CARTESIAN_POINT('',(0.,-5.35,0.));
+#165 = DIRECTION('',(0.,-1.,0.));
+#166 = DIRECTION('',(0.,0.,-1.));
+#167 = FACE_BOUND('',#168,.T.);
+#168 = EDGE_LOOP('',(#169));
+#169 = ORIENTED_EDGE('',*,*,#142,.F.);
+#170 = PLANE('',#171);
+#171 = AXIS2_PLACEMENT_3D('',#172,#173,#174);
+#172 = CARTESIAN_POINT('',(0.,-5.35,-3.125));
+#173 = DIRECTION('',(0.,-1.,0.));
+#174 = DIRECTION('',(0.,0.,-1.));
+#175 = ADVANCED_FACE('',(#176),#194,.T.);
+#176 = FACE_BOUND('',#177,.T.);
+#177 = EDGE_LOOP('',(#178,#187,#192,#193));
+#178 = ORIENTED_EDGE('',*,*,#179,.T.);
+#179 = EDGE_CURVE('',#180,#180,#182,.T.);
+#180 = VERTEX_POINT('',#181);
+#181 = CARTESIAN_POINT('',(0.,-5.15,-3.9));
+#182 = CIRCLE('',#183,3.9);
+#183 = AXIS2_PLACEMENT_3D('',#184,#185,#186);
+#184 = CARTESIAN_POINT('',(0.,-5.15,0.));
+#185 = DIRECTION('',(0.,-1.,0.));
+#186 = DIRECTION('',(0.,0.,-1.));
+#187 = ORIENTED_EDGE('',*,*,#188,.F.);
+#188 = EDGE_CURVE('',#160,#180,#189,.T.);
+#189 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#190,#191),.UNSPECIFIED.,.F.,.F.,
+  (2,2),(0.,0.282842712475),.PIECEWISE_BEZIER_KNOTS.);
+#190 = CARTESIAN_POINT('',(1.359357947054E-15,-5.35,-3.7));
+#191 = CARTESIAN_POINT('',(1.432836755002E-15,-5.15,-3.9));
+#192 = ORIENTED_EDGE('',*,*,#159,.F.);
+#193 = ORIENTED_EDGE('',*,*,#188,.T.);
+#194 = CONICAL_SURFACE('',#195,3.7,0.785398163397);
+#195 = AXIS2_PLACEMENT_3D('',#196,#197,#198);
+#196 = CARTESIAN_POINT('',(0.,-5.35,0.));
+#197 = DIRECTION('',(0.,1.,0.));
+#198 = DIRECTION('',(0.,0.,1.));
+#199 = ADVANCED_FACE('',(#200),#218,.T.);
+#200 = FACE_BOUND('',#201,.T.);
+#201 = EDGE_LOOP('',(#202,#211,#216,#217));
+#202 = ORIENTED_EDGE('',*,*,#203,.T.);
+#203 = EDGE_CURVE('',#204,#204,#206,.T.);
+#204 = VERTEX_POINT('',#205);
+#205 = CARTESIAN_POINT('',(0.,-4.69,-3.9));
+#206 = CIRCLE('',#207,3.9);
+#207 = AXIS2_PLACEMENT_3D('',#208,#209,#210);
+#208 = CARTESIAN_POINT('',(0.,-4.69,0.));
+#209 = DIRECTION('',(0.,-1.,0.));
+#210 = DIRECTION('',(0.,0.,-1.));
+#211 = ORIENTED_EDGE('',*,*,#212,.T.);
+#212 = EDGE_CURVE('',#204,#180,#213,.T.);
+#213 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#214,#215),.UNSPECIFIED.,.F.,.F.,
+  (2,2),(-2.91,-2.45),.PIECEWISE_BEZIER_KNOTS.);
+#214 = CARTESIAN_POINT('',(0.,-4.69,-3.9));
+#215 = CARTESIAN_POINT('',(0.,-5.15,-3.9));
+#216 = ORIENTED_EDGE('',*,*,#179,.F.);
+#217 = ORIENTED_EDGE('',*,*,#212,.F.);
+#218 = CYLINDRICAL_SURFACE('',#219,3.9);
+#219 = AXIS2_PLACEMENT_3D('',#220,#221,#222);
+#220 = CARTESIAN_POINT('',(0.,-7.6,0.));
+#221 = DIRECTION('',(0.,-1.,0.));
+#222 = DIRECTION('',(0.,0.,-1.));
+#223 = ADVANCED_FACE('',(#224),#242,.T.);
+#224 = FACE_BOUND('',#225,.T.);
+#225 = EDGE_LOOP('',(#226,#235,#240,#241));
+#226 = ORIENTED_EDGE('',*,*,#227,.T.);
+#227 = EDGE_CURVE('',#228,#228,#230,.T.);
+#228 = VERTEX_POINT('',#229);
+#229 = CARTESIAN_POINT('',(0.,-4.125,-4.465));
+#230 = CIRCLE('',#231,4.465);
+#231 = AXIS2_PLACEMENT_3D('',#232,#233,#234);
+#232 = CARTESIAN_POINT('',(0.,-4.125,0.));
+#233 = DIRECTION('',(0.,-1.,0.));
+#234 = DIRECTION('',(0.,0.,-1.));
+#235 = ORIENTED_EDGE('',*,*,#236,.F.);
+#236 = EDGE_CURVE('',#204,#228,#237,.T.);
+#237 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#238,#239),.UNSPECIFIED.,.F.,.F.,
+  (2,2),(0.,0.799030662741),.PIECEWISE_BEZIER_KNOTS.);
+#238 = CARTESIAN_POINT('',(1.432836755002E-15,-4.69,-3.9));
+#239 = CARTESIAN_POINT('',(1.640414387458E-15,-4.125,-4.465));
+#240 = ORIENTED_EDGE('',*,*,#203,.F.);
+#241 = ORIENTED_EDGE('',*,*,#236,.T.);
+#242 = CONICAL_SURFACE('',#243,3.9,0.785398163397);
+#243 = AXIS2_PLACEMENT_3D('',#244,#245,#246);
+#244 = CARTESIAN_POINT('',(0.,-4.69,0.));
+#245 = DIRECTION('',(0.,1.,0.));
+#246 = DIRECTION('',(0.,0.,1.));
+#247 = ADVANCED_FACE('',(#248),#266,.T.);
+#248 = FACE_BOUND('',#249,.T.);
+#249 = EDGE_LOOP('',(#250,#251,#258,#265));
+#250 = ORIENTED_EDGE('',*,*,#227,.F.);
+#251 = ORIENTED_EDGE('',*,*,#252,.F.);
+#252 = EDGE_CURVE('',#253,#228,#255,.T.);
+#253 = VERTEX_POINT('',#254);
+#254 = CARTESIAN_POINT('',(0.,-0.9,-4.465));
+#255 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#256,#257),.UNSPECIFIED.,.F.,.F.,
+  (2,2),(-6.7,-3.475),.PIECEWISE_BEZIER_KNOTS.);
+#256 = CARTESIAN_POINT('',(-1.093609591639E-15,-0.9,-4.465));
+#257 = CARTESIAN_POINT('',(-1.093609591639E-15,-4.125,-4.465));
+#258 = ORIENTED_EDGE('',*,*,#259,.T.);
+#259 = EDGE_CURVE('',#253,#253,#260,.T.);
+#260 = CIRCLE('',#261,4.465);
+#261 = AXIS2_PLACEMENT_3D('',#262,#263,#264);
+#262 = CARTESIAN_POINT('',(0.,-0.9,0.));
+#263 = DIRECTION('',(0.,-1.,0.));
+#264 = DIRECTION('',(0.,0.,-1.));
+#265 = ORIENTED_EDGE('',*,*,#252,.T.);
+#266 = CYLINDRICAL_SURFACE('',#267,4.465);
+#267 = AXIS2_PLACEMENT_3D('',#268,#269,#270);
+#268 = CARTESIAN_POINT('',(0.,-7.6,0.));
+#269 = DIRECTION('',(0.,-1.,0.));
+#270 = DIRECTION('',(0.,0.,-1.));
+#271 = ADVANCED_FACE('',(#272,#308),#311,.T.);
+#272 = FACE_BOUND('',#273,.T.);
+#273 = EDGE_LOOP('',(#274,#284,#293,#301));
+#274 = ORIENTED_EDGE('',*,*,#275,.T.);
+#275 = EDGE_CURVE('',#276,#278,#280,.T.);
+#276 = VERTEX_POINT('',#277);
+#277 = CARTESIAN_POINT('',(-4.55,-0.9,1.750178562319));
+#278 = VERTEX_POINT('',#279);
+#279 = CARTESIAN_POINT('',(-4.55,-0.9,-1.750178562319));
+#280 = LINE('',#281,#282);
+#281 = CARTESIAN_POINT('',(-4.55,-0.9,-4.465));
+#282 = VECTOR('',#283,1.);
+#283 = DIRECTION('',(0.,0.,-1.));
+#284 = ORIENTED_EDGE('',*,*,#285,.T.);
+#285 = EDGE_CURVE('',#278,#286,#288,.T.);
+#286 = VERTEX_POINT('',#287);
+#287 = CARTESIAN_POINT('',(4.55,-0.9,-1.750178562319));
+#288 = CIRCLE('',#289,4.875);
+#289 = AXIS2_PLACEMENT_3D('',#290,#291,#292);
+#290 = CARTESIAN_POINT('',(0.,-0.9,0.));
+#291 = DIRECTION('',(0.,-1.,0.));
+#292 = DIRECTION('',(0.,0.,-1.));
+#293 = ORIENTED_EDGE('',*,*,#294,.T.);
+#294 = EDGE_CURVE('',#286,#295,#297,.T.);
+#295 = VERTEX_POINT('',#296);
+#296 = CARTESIAN_POINT('',(4.55,-0.9,1.750178562319));
+#297 = LINE('',#298,#299);
+#298 = CARTESIAN_POINT('',(4.55,-0.9,-4.465));
+#299 = VECTOR('',#300,1.);
+#300 = DIRECTION('',(0.,0.,1.));
+#301 = ORIENTED_EDGE('',*,*,#302,.T.);
+#302 = EDGE_CURVE('',#295,#276,#303,.T.);
+#303 = CIRCLE('',#304,4.875);
+#304 = AXIS2_PLACEMENT_3D('',#305,#306,#307);
+#305 = CARTESIAN_POINT('',(0.,-0.9,0.));
+#306 = DIRECTION('',(0.,-1.,0.));
+#307 = DIRECTION('',(0.,0.,-1.));
+#308 = FACE_BOUND('',#309,.T.);
+#309 = EDGE_LOOP('',(#310));
+#310 = ORIENTED_EDGE('',*,*,#259,.F.);
+#311 = PLANE('',#312);
+#312 = AXIS2_PLACEMENT_3D('',#313,#314,#315);
+#313 = CARTESIAN_POINT('',(0.,-0.9,-4.465));
+#314 = DIRECTION('',(0.,-1.,0.));
+#315 = DIRECTION('',(0.,0.,-1.));
+#316 = ADVANCED_FACE('',(#317),#342,.T.);
+#317 = FACE_BOUND('',#318,.T.);
+#318 = EDGE_LOOP('',(#319,#320,#328,#336));
+#319 = ORIENTED_EDGE('',*,*,#275,.F.);
+#320 = ORIENTED_EDGE('',*,*,#321,.F.);
+#321 = EDGE_CURVE('',#322,#276,#324,.T.);
+#322 = VERTEX_POINT('',#323);
+#323 = CARTESIAN_POINT('',(-4.55,-1.E-01,1.750178562319));
+#324 = LINE('',#325,#326);
+#325 = CARTESIAN_POINT('',(-4.55,-7.6,1.750178562319));
+#326 = VECTOR('',#327,1.);
+#327 = DIRECTION('',(0.,-1.,0.));
+#328 = ORIENTED_EDGE('',*,*,#329,.F.);
+#329 = EDGE_CURVE('',#330,#322,#332,.T.);
+#330 = VERTEX_POINT('',#331);
+#331 = CARTESIAN_POINT('',(-4.55,-1.E-01,-1.750178562319));
+#332 = LINE('',#333,#334);
+#333 = CARTESIAN_POINT('',(-4.55,-1.E-01,-10.));
+#334 = VECTOR('',#335,1.);
+#335 = DIRECTION('',(0.,2.22044604925E-16,1.));
+#336 = ORIENTED_EDGE('',*,*,#337,.T.);
+#337 = EDGE_CURVE('',#330,#278,#338,.T.);
+#338 = LINE('',#339,#340);
+#339 = CARTESIAN_POINT('',(-4.55,-7.6,-1.750178562319));
+#340 = VECTOR('',#341,1.);
+#341 = DIRECTION('',(0.,-1.,0.));
+#342 = PLANE('',#343);
+#343 = AXIS2_PLACEMENT_3D('',#344,#345,#346);
+#344 = CARTESIAN_POINT('',(-4.55,-1.,-5.));
+#345 = DIRECTION('',(-1.,0.,0.));
+#346 = DIRECTION('',(0.,0.,1.));
+#347 = ADVANCED_FACE('',(#348),#367,.T.);
+#348 = FACE_BOUND('',#349,.T.);
+#349 = EDGE_LOOP('',(#350,#351,#360,#366));
+#350 = ORIENTED_EDGE('',*,*,#337,.F.);
+#351 = ORIENTED_EDGE('',*,*,#352,.T.);
+#352 = EDGE_CURVE('',#330,#353,#355,.T.);
+#353 = VERTEX_POINT('',#354);
+#354 = CARTESIAN_POINT('',(4.55,-1.E-01,-1.750178562319));
+#355 = CIRCLE('',#356,4.875);
+#356 = AXIS2_PLACEMENT_3D('',#357,#358,#359);
+#357 = CARTESIAN_POINT('',(0.,-1.E-01,0.));
+#358 = DIRECTION('',(0.,-1.,0.));
+#359 = DIRECTION('',(0.,0.,-1.));
+#360 = ORIENTED_EDGE('',*,*,#361,.T.);
+#361 = EDGE_CURVE('',#353,#286,#362,.T.);
+#362 = LINE('',#363,#364);
+#363 = CARTESIAN_POINT('',(4.55,-7.6,-1.750178562319));
+#364 = VECTOR('',#365,1.);
+#365 = DIRECTION('',(0.,-1.,0.));
+#366 = ORIENTED_EDGE('',*,*,#285,.F.);
+#367 = CYLINDRICAL_SURFACE('',#368,4.875);
+#368 = AXIS2_PLACEMENT_3D('',#369,#370,#371);
+#369 = CARTESIAN_POINT('',(0.,-7.6,0.));
+#370 = DIRECTION('',(0.,-1.,0.));
+#371 = DIRECTION('',(0.,0.,-1.));
+#372 = ADVANCED_FACE('',(#373),#391,.T.);
+#373 = FACE_BOUND('',#374,.T.);
+#374 = EDGE_LOOP('',(#375,#376,#377,#385));
+#375 = ORIENTED_EDGE('',*,*,#294,.F.);
+#376 = ORIENTED_EDGE('',*,*,#361,.F.);
+#377 = ORIENTED_EDGE('',*,*,#378,.F.);
+#378 = EDGE_CURVE('',#379,#353,#381,.T.);
+#379 = VERTEX_POINT('',#380);
+#380 = CARTESIAN_POINT('',(4.55,-1.E-01,1.750178562319));
+#381 = LINE('',#382,#383);
+#382 = CARTESIAN_POINT('',(4.55,-1.E-01,-5.));
+#383 = VECTOR('',#384,1.);
+#384 = DIRECTION('',(0.,-2.22044604925E-16,-1.));
+#385 = ORIENTED_EDGE('',*,*,#386,.T.);
+#386 = EDGE_CURVE('',#379,#295,#387,.T.);
+#387 = LINE('',#388,#389);
+#388 = CARTESIAN_POINT('',(4.55,-7.6,1.750178562319));
+#389 = VECTOR('',#390,1.);
+#390 = DIRECTION('',(0.,-1.,0.));
+#391 = PLANE('',#392);
+#392 = AXIS2_PLACEMENT_3D('',#393,#394,#395);
+#393 = CARTESIAN_POINT('',(4.55,-1.,5.));
+#394 = DIRECTION('',(1.,0.,0.));
+#395 = DIRECTION('',(0.,0.,-1.));
+#396 = ADVANCED_FACE('',(#397),#409,.T.);
+#397 = FACE_BOUND('',#398,.T.);
+#398 = EDGE_LOOP('',(#399,#400,#407,#408));
+#399 = ORIENTED_EDGE('',*,*,#386,.F.);
+#400 = ORIENTED_EDGE('',*,*,#401,.T.);
+#401 = EDGE_CURVE('',#379,#322,#402,.T.);
+#402 = CIRCLE('',#403,4.875);
+#403 = AXIS2_PLACEMENT_3D('',#404,#405,#406);
+#404 = CARTESIAN_POINT('',(0.,-1.E-01,0.));
+#405 = DIRECTION('',(0.,-1.,0.));
+#406 = DIRECTION('',(0.,0.,-1.));
+#407 = ORIENTED_EDGE('',*,*,#321,.T.);
+#408 = ORIENTED_EDGE('',*,*,#302,.F.);
+#409 = CYLINDRICAL_SURFACE('',#410,4.875);
+#410 = AXIS2_PLACEMENT_3D('',#411,#412,#413);
+#411 = CARTESIAN_POINT('',(0.,-7.6,0.));
+#412 = DIRECTION('',(0.,-1.,0.));
+#413 = DIRECTION('',(0.,0.,-1.));
+#414 = ADVANCED_FACE('',(#415),#421,.F.);
+#415 = FACE_BOUND('',#416,.F.);
+#416 = EDGE_LOOP('',(#417,#418,#419,#420));
+#417 = ORIENTED_EDGE('',*,*,#329,.F.);
+#418 = ORIENTED_EDGE('',*,*,#352,.T.);
+#419 = ORIENTED_EDGE('',*,*,#378,.F.);
+#420 = ORIENTED_EDGE('',*,*,#401,.T.);
+#421 = PLANE('',#422);
+#422 = AXIS2_PLACEMENT_3D('',#423,#424,#425);
+#423 = CARTESIAN_POINT('',(-15.,-0.1,-15.));
+#424 = DIRECTION('',(0.,-1.,2.22044604925E-16));
+#425 = DIRECTION('',(1.,0.,0.));
+#426 = ADVANCED_FACE('',(#427),#430,.T.);
+#427 = FACE_BOUND('',#428,.T.);
+#428 = EDGE_LOOP('',(#429));
+#429 = ORIENTED_EDGE('',*,*,#42,.T.);
+#430 = PLANE('',#431);
+#431 = AXIS2_PLACEMENT_3D('',#432,#433,#434);
+#432 = CARTESIAN_POINT('',(2.633949703729E-16,-7.6,1.005470685691E-16));
+#433 = DIRECTION('',(-0.,-1.,-0.));
+#434 = DIRECTION('',(0.,0.,-1.));
+#435 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) 
+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#439)) GLOBAL_UNIT_ASSIGNED_CONTEXT
+((#436,#437,#438)) REPRESENTATION_CONTEXT('Context #1',
+  '3D Context with UNIT and UNCERTAINTY') );
+#436 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
+#437 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
+#438 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
+#439 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(5.E-06),#436,
+  'distance_accuracy_value','confusion accuracy');
+#440 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));
+#441 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#442)
+  ,#435);
+#442 = STYLED_ITEM('color',(#443),#15);
+#443 = PRESENTATION_STYLE_ASSIGNMENT((#444,#450));
+#444 = SURFACE_STYLE_USAGE(.BOTH.,#445);
+#445 = SURFACE_SIDE_STYLE('',(#446));
+#446 = SURFACE_STYLE_FILL_AREA(#447);
+#447 = FILL_AREA_STYLE('',(#448));
+#448 = FILL_AREA_STYLE_COLOUR('',#449);
+#449 = COLOUR_RGB('',0.447059003357,0.474510015008,0.501960993452);
+#450 = CURVE_STYLE('',#451,POSITIVE_LENGTH_MEASURE(0.1),#452);
+#451 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
+#452 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02,
+  9.803921802644E-02);
+ENDSEC;
+END-ISO-10303-21;

+ 11 - 24
cell_measure_robot/pneumatics/tconnector.py

@@ -28,15 +28,20 @@ if version == "G1_8":
     major_diam = 9.7 * MM  + eps*2
     pitch=0.907 * MM
     length=12 * MM
+    housing_factor = 2
 
 elif version == "M7":
     major_diam = 7 * MM + eps*2
     pitch=1 * MM
     length=8 * MM
+    housing_factor = 1.75
 
 else:
     raise ValueError("Invalid version")
 
+
+cartridge = cq.importers.importStep("cell_measure_robot/pneumatics/sensor_tip.step")
+
 iso_external_thread = IsoThread(
     major_diameter=major_diam,
     pitch=pitch,
@@ -52,7 +57,7 @@ iso_external_core = (
 )
 iso_external = iso_external_thread.cq_object.fuse(iso_external_core.val())
 
-housing_diameter = cartridge_large_diam * 2
+housing_diameter = cartridge_large_diam * housing_factor
 housing = (
     cq.Workplane("XY")
     .rect(housing_diameter, housing_diameter)
@@ -67,31 +72,13 @@ housing = (
 housing = housing.cut(iso_external)
 # Side B
 housing = housing.cut(iso_external.translate((0, 0, iso_external_thread.length + distance)))
+
 # Cartidge hole
-housing = (
-    housing.faces(">Z")
-    .workplane(centerOption="CenterOfBoundBox")
-    .center(0, housing_diameter/2)
-    .circle(cartridge_large_diam / 2)
-    .cutBlind(-cartridge_large_depth)
-)
-housing = (
-    housing.faces(">Z")
-    .workplane(centerOption="CenterOfBoundBox")
-    .center(0, housing_diameter/2)
-    .circle(cartridge_small_diam / 2)
-    .cutBlind(-cartridge_small_depth)
-)
-# seal as torus
-seal_mid_diam = seal_outer_diam - seal_torus_diam - eps
-seal = (
-    cq.Workplane('XZ', origin = (seal_mid_diam/2, 0, 0))
-    .circle(seal_torus_diam/2-eps)
-    .revolve(360, (-seal_mid_diam/2, 0, 0), (-seal_mid_diam/2, 1, 0))
+moved_cartridge = (
+    cartridge.rotate((0, 0, 0), (1, 0, 0), 90)
+    .translate((0, housing_diameter, iso_external_thread.length*2 + distance + 0.9))
 )
-seal_position = iso_external_thread.length*2 + distance - seal_depth
-seal_moved = seal.translate((0, housing_diameter, seal_position))
-housing = housing.cut(seal_moved)
+housing = housing.cut(moved_cartridge)
 
 # straight channel
 housing = (