6 Incheckningar 3e1006616e ... f6642bbb01

Upphovsman SHA1 Meddelande Datum
  Silas Gruen f6642bbb01 update sensor_tip model 11 månader sedan
  Silas Gruen c3484d71cf improve cartridge 11 månader sedan
  Silas Gruen 466d5a728a adapt tconnector dimensions 11 månader sedan
  Silas Gruen 62b664c65d fix: diameter of threads 11 månader sedan
  Silas Gruen 10712c42b7 add g1_8 option to connector 11 månader sedan
  Silas Gruen c36aaff875 add t connector with cartridge 11 månader sedan
2 ändrade filer med 809 tillägg och 0 borttagningar
  1. 697 0
      cell_measure_robot/pneumatics/sensor_tip.step
  2. 112 0
      cell_measure_robot/pneumatics/tconnector.py

+ 697 - 0
cell_measure_robot/pneumatics/sensor_tip.step

@@ -0,0 +1,697 @@
+ISO-10303-21;
+HEADER;
+FILE_DESCRIPTION(('FreeCAD Model'),'2;1');
+FILE_NAME('Open CASCADE Shape Model','2025-02-27T14:21:33',(''),(''),
+  '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('Fusion','Fusion','',(#8));
+#8 = PRODUCT_CONTEXT('',#2,'mechanical');
+#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
+#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#513);
+#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,#60,#193,#217,#253,#298,#340,#371,#396,#420,
+    #438,#463,#475,#504));
+#17 = ADVANCED_FACE('',(#18),#55,.T.);
+#18 = FACE_BOUND('',#19,.F.);
+#19 = EDGE_LOOP('',(#20,#39,#47,#54));
+#20 = ORIENTED_EDGE('',*,*,#21,.T.);
+#21 = EDGE_CURVE('',#22,#22,#24,.T.);
+#22 = VERTEX_POINT('',#23);
+#23 = CARTESIAN_POINT('',(0.,-5.054289321871,-4.035710678129));
+#24 = B_SPLINE_CURVE_WITH_KNOTS('',13,(#25,#26,#27,#28,#29,#30,#31,#32,
+    #33,#34,#35,#36,#37,#38),.UNSPECIFIED.,.T.,.F.,(14,14),(
+    4.926997037152E-16,24.912829742967),.PIECEWISE_BEZIER_KNOTS.);
+#25 = CARTESIAN_POINT('',(0.,-5.054289321871,-4.035710678129));
+#26 = CARTESIAN_POINT('',(1.922331498798,-5.054289321881,-4.035710678119
+    ));
+#27 = CARTESIAN_POINT('',(3.888993410617,-5.054289321864,-3.04218633523)
+  );
+#28 = CARTESIAN_POINT('',(5.295240355825,-5.054289322039,-0.997652355434
+    ));
+#29 = CARTESIAN_POINT('',(5.511213087173,-5.05428932123,1.815885915213)
+  );
+#30 = CARTESIAN_POINT('',(4.012376441985,-5.054289323492,4.246448093781)
+  );
+#31 = CARTESIAN_POINT('',(1.82440979738,-5.054289319329,6.029010138695)
+  );
+#32 = CARTESIAN_POINT('',(-1.824409797435,-5.054289324516,6.029010133754
+    ));
+#33 = CARTESIAN_POINT('',(-4.012376441854,-5.054289320069,4.246448097079
+    ));
+#34 = CARTESIAN_POINT('',(-5.511213087285,-5.054289322703,1.815885913753
+    ));
+#35 = CARTESIAN_POINT('',(-5.295240355776,-5.054289321654,
+    -0.997652355027));
+#36 = CARTESIAN_POINT('',(-3.888993410626,-5.054289321911,
+    -3.042186335289));
+#37 = CARTESIAN_POINT('',(-1.922331498798,-5.054289321882,
+    -4.035710678118));
+#38 = CARTESIAN_POINT('',(-9.884640328486E-16,-5.054289321881,
+    -4.035710678119));
+#39 = ORIENTED_EDGE('',*,*,#40,.T.);
+#40 = EDGE_CURVE('',#22,#41,#43,.T.);
+#41 = VERTEX_POINT('',#42);
+#42 = CARTESIAN_POINT('',(0.,-4.625,-4.465));
+#43 = LINE('',#44,#45);
+#44 = CARTESIAN_POINT('',(0.,-4.625,-4.465));
+#45 = VECTOR('',#46,1.);
+#46 = DIRECTION('',(0.,0.707106781187,-0.707106781187));
+#47 = ORIENTED_EDGE('',*,*,#48,.F.);
+#48 = EDGE_CURVE('',#41,#41,#49,.T.);
+#49 = CIRCLE('',#50,4.465);
+#50 = AXIS2_PLACEMENT_3D('',#51,#52,#53);
+#51 = CARTESIAN_POINT('',(0.,-4.625,0.));
+#52 = DIRECTION('',(0.,-1.,0.));
+#53 = DIRECTION('',(0.,0.,-1.));
+#54 = ORIENTED_EDGE('',*,*,#40,.F.);
+#55 = CONICAL_SURFACE('',#56,4.465,0.785398163397);
+#56 = AXIS2_PLACEMENT_3D('',#57,#58,#59);
+#57 = CARTESIAN_POINT('',(0.,-4.625,0.));
+#58 = DIRECTION('',(0.,1.,0.));
+#59 = DIRECTION('',(0.,0.,-1.));
+#60 = ADVANCED_FACE('',(#61),#175,.F.);
+#61 = FACE_BOUND('',#62,.F.);
+#62 = EDGE_LOOP('',(#63,#64,#72,#109,#174));
+#63 = ORIENTED_EDGE('',*,*,#21,.F.);
+#64 = ORIENTED_EDGE('',*,*,#65,.T.);
+#65 = EDGE_CURVE('',#22,#66,#68,.T.);
+#66 = VERTEX_POINT('',#67);
+#67 = CARTESIAN_POINT('',(1.664847234184E-13,-5.802040286319,
+    -4.035710678129));
+#68 = LINE('',#69,#70);
+#69 = CARTESIAN_POINT('',(0.,-5.054289321871,-4.035710678129));
+#70 = VECTOR('',#71,1.);
+#71 = DIRECTION('',(2.226472867761E-13,-1.,-1.192358719074E-13));
+#72 = ORIENTED_EDGE('',*,*,#73,.F.);
+#73 = EDGE_CURVE('',#74,#66,#76,.T.);
+#74 = VERTEX_POINT('',#75);
+#75 = CARTESIAN_POINT('',(4.035705939861,-5.802032717393,
+    -8.836648803955E-17));
+#76 = B_SPLINE_CURVE_WITH_KNOTS('',6,(#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),.UNSPECIFIED.,.F.,.F.,(7,5,
+    5,5,5,5,7),(0.,0.329598716708,0.547677186946,0.619184461341,
+    0.706120323056,0.814340264759,1.),.UNSPECIFIED.);
+#77 = CARTESIAN_POINT('',(4.035705939861,-5.802032717393,0.));
+#78 = CARTESIAN_POINT('',(4.035706717064,-5.802033958883,-0.348619806231
+    ));
+#79 = CARTESIAN_POINT('',(3.9995691633,-5.802035010342,-0.697325599426)
+  );
+#80 = CARTESIAN_POINT('',(3.927259696809,-5.80203462179,-1.041363439245)
+  );
+#81 = CARTESIAN_POINT('',(3.819599788993,-5.802032236137,-1.376081827395
+    ));
+#82 = CARTESIAN_POINT('',(3.678146790263,-5.802032203888,-1.69700561593)
+  );
+#83 = CARTESIAN_POINT('',(3.390913040957,-5.802037318203,-2.200436285163
+    ));
+#84 = CARTESIAN_POINT('',(3.262781298436,-5.8020406789,-2.393052230795)
+  );
+#85 = CARTESIAN_POINT('',(3.12157338012,-5.802045799602,-2.576628261517)
+  );
+#86 = CARTESIAN_POINT('',(2.968105266961,-5.802052005041,-2.750056213187
+    ));
+#87 = CARTESIAN_POINT('',(2.803318891989,-5.802057766235,-2.912329006824
+    ));
+#88 = CARTESIAN_POINT('',(2.570878173652,-5.802062004299,-3.111812424704
+    ));
+#89 = CARTESIAN_POINT('',(2.512378470331,-5.802062781768,-3.159775778346
+    ));
+#90 = CARTESIAN_POINT('',(2.452812743986,-5.802063218209,-3.20641284064)
+  );
+#91 = CARTESIAN_POINT('',(2.392219354813,-5.802063252443,-3.251693837185
+    ));
+#92 = CARTESIAN_POINT('',(2.330637822306,-5.802062834106,-3.295590515764
+    ));
+#93 = CARTESIAN_POINT('',(2.192088416332,-5.802060816743,-3.389728582237
+    ));
+#94 = CARTESIAN_POINT('',(2.114667480905,-5.802058990606,-3.439295455591
+    ));
+#95 = CARTESIAN_POINT('',(2.035919184323,-5.802056369273,-3.486728698858
+    ));
+#96 = CARTESIAN_POINT('',(1.955918772299,-5.802052950479,-3.531983945854
+    ));
+#97 = CARTESIAN_POINT('',(1.874743570913,-5.802048805657,-3.57502053177)
+  );
+#98 = CARTESIAN_POINT('',(1.690060499267,-5.802038197238,-3.666566657025
+    ));
+#99 = CARTESIAN_POINT('',(1.585950288978,-5.802031404521,-3.713836686054
+    ));
+#100 = CARTESIAN_POINT('',(1.480295759701,-5.802024049685,
+    -3.757540261673));
+#101 = CARTESIAN_POINT('',(1.373253757093,-5.802016661896,
+    -3.797615768659));
+#102 = CARTESIAN_POINT('',(1.264984568509,-5.802009951581,
+    -3.834011295148));
+#103 = CARTESIAN_POINT('',(0.968083257752,-5.801995990395,
+    -3.922738286819));
+#104 = CARTESIAN_POINT('',(0.777382709599,-5.801991658228,
+    -3.967837305938));
+#105 = CARTESIAN_POINT('',(0.584377185865,-5.801996127579,
+    -4.001768333663));
+#106 = CARTESIAN_POINT('',(0.389909932118,-5.80201208771,-4.024405933328
+    ));
+#107 = CARTESIAN_POINT('',(0.194832111374,-5.802040286317,
+    -4.035710678128));
+#108 = CARTESIAN_POINT('',(1.671058193099E-13,-5.802040286319,
+    -4.035710678129));
+#109 = ORIENTED_EDGE('',*,*,#110,.F.);
+#110 = EDGE_CURVE('',#66,#74,#111,.T.);
+#111 = B_SPLINE_CURVE_WITH_KNOTS('',7,(#112,#113,#114,#115,#116,#117,
+    #118,#119,#120,#121,#122,#123,#124,#125,#126,#127,#128,#129,#130,
+    #131,#132,#133,#134,#135,#136,#137,#138,#139,#140,#141,#142,#143,
+    #144,#145,#146,#147,#148,#149,#150,#151,#152,#153,#154,#155,#156,
+    #157,#158,#159,#160,#161,#162,#163,#164,#165,#166,#167,#168,#169,
+    #170,#171,#172,#173),.UNSPECIFIED.,.F.,.F.,(8,6,6,6,6,6,6,6,6,6,8),(
+    0.,6.197136780783E-02,0.222920213548,0.296042085648,0.315519353654,
+    0.32466259779,0.334203713169,0.500833046523,0.667099929693,
+    0.833366995565,1.),.UNSPECIFIED.);
+#112 = CARTESIAN_POINT('',(4.636291350835E-12,-5.802040286305,
+    -4.035710678119));
+#113 = CARTESIAN_POINT('',(-0.16716684581,-5.802040286304,
+    -4.035710678119));
+#114 = CARTESIAN_POINT('',(-0.334509555904,-5.802020104083,
+    -4.027619616245));
+#115 = CARTESIAN_POINT('',(-0.501537347617,-5.80200291559,
+    -4.011421379805));
+#116 = CARTESIAN_POINT('',(-0.667761640713,-5.80199417689,
+    -3.987128919716));
+#117 = CARTESIAN_POINT('',(-0.832696863233,-5.801992889788,
+    -3.954789551642));
+#118 = CARTESIAN_POINT('',(-0.995862063866,-5.801997276546,
+    -3.914487879113));
+#119 = CARTESIAN_POINT('',(-1.574719759955,-5.802024568663,
+    -3.741315608308));
+#120 = CARTESIAN_POINT('',(-1.977684116085,-5.802066958942,
+    -3.563355005316));
+#121 = CARTESIAN_POINT('',(-2.357088318578,-5.802085104562,
+    -3.334613970134));
+#122 = CARTESIAN_POINT('',(-2.705195850213,-5.802060565515,
+    -3.05905045751));
+#123 = CARTESIAN_POINT('',(-3.015238984229,-5.802048772133,
+    -2.741935909989));
+#124 = CARTESIAN_POINT('',(-3.281446942931,-5.80203935803,
+    -2.389718872315));
+#125 = CARTESIAN_POINT('',(-3.598585321176,-5.802033581011,
+    -1.837573680457));
+#126 = CARTESIAN_POINT('',(-3.687739975464,-5.802032777359,
+    -1.659389003678));
+#127 = CARTESIAN_POINT('',(-3.766579548759,-5.802032810359,
+    -1.476199182608));
+#128 = CARTESIAN_POINT('',(-3.834770070681,-5.802033309341,
+    -1.288726171486));
+#129 = CARTESIAN_POINT('',(-3.892042595296,-5.802033857869,
+    -1.097716224835));
+#130 = CARTESIAN_POINT('',(-3.938194023941,-5.802034154249,
+    -0.903935911586));
+#131 = CARTESIAN_POINT('',(-3.982382519425,-5.802034176781,
+    -0.656022014026));
+#132 = CARTESIAN_POINT('',(-3.990878424464,-5.802034160947,
+    -0.603734673974));
+#133 = CARTESIAN_POINT('',(-3.998573083523,-5.802034123265,
+    -0.55132082448));
+#134 = CARTESIAN_POINT('',(-4.005464278773,-5.802034063296,
+    -0.498795219385));
+#135 = CARTESIAN_POINT('',(-4.011550134198,-5.802033981435,
+    -0.44617265094));
+#136 = CARTESIAN_POINT('',(-4.016829115593,-5.802033878912,
+    -0.393467949802));
+#137 = CARTESIAN_POINT('',(-4.023398819117,-5.802033700935,
+    -0.315923159756));
+#138 = CARTESIAN_POINT('',(-4.025319537407,-5.802033639972,
+    -0.29113551027));
+#139 = CARTESIAN_POINT('',(-4.027062062146,-5.802033575111,
+    -0.266334573691));
+#140 = CARTESIAN_POINT('',(-4.028626286675,-5.802033506593,
+    -0.241521887884));
+#141 = CARTESIAN_POINT('',(-4.030012120969,-5.802033434689,
+    -0.216698991474));
+#142 = CARTESIAN_POINT('',(-4.031219491632,-5.802033359704,
+    -0.191867423845));
+#143 = CARTESIAN_POINT('',(-4.033321962925,-5.802033200857,
+    -0.141109162381));
+#144 = CARTESIAN_POINT('',(-4.034201188762,-5.802033116748,
+    -0.115181834079));
+#145 = CARTESIAN_POINT('',(-4.034885954923,-5.802033030027,
+    -8.924849034104E-02));
+#146 = CARTESIAN_POINT('',(-4.035376216617,-5.802032941101,
+    -6.331088132309E-02));
+#147 = CARTESIAN_POINT('',(-4.035671948758,-5.802032850407,
+    -3.737075722919E-02));
+#148 = CARTESIAN_POINT('',(-4.035773145964,-5.802032758408,
+    -1.142986831263E-02));
+#149 = CARTESIAN_POINT('',(-4.034049990294,-5.80203104463,0.467533465301
+    ));
+#150 = CARTESIAN_POINT('',(-3.973089874995,-5.802029221459,
+    0.920425648844));
+#151 = CARTESIAN_POINT('',(-3.852798710171,-5.802029416751,1.36355623316
+    ));
+#152 = CARTESIAN_POINT('',(-3.675239321754,-5.802037563944,
+    1.787697785008));
+#153 = CARTESIAN_POINT('',(-3.444037683138,-5.802049629041,2.18425871493
+    ));
+#154 = CARTESIAN_POINT('',(-3.164366774992,-5.802058492855,
+    2.545337083501));
+#155 = CARTESIAN_POINT('',(-2.522538336873,-5.802065145473,
+    3.182436403194));
+#156 = CARTESIAN_POINT('',(-2.160318862396,-5.802062909141,
+    3.458881558265));
+#157 = CARTESIAN_POINT('',(-1.763166935745,-5.802052640008,
+    3.686800319267));
+#158 = CARTESIAN_POINT('',(-1.338981889788,-5.8020348471,3.861125736079)
+  );
+#159 = CARTESIAN_POINT('',(-0.896338829042,-5.802019762116,
+    3.978338639229));
+#160 = CARTESIAN_POINT('',(-0.444425501712,-5.802012310664,
+    4.036493806535));
+#161 = CARTESIAN_POINT('',(0.458849723785,-5.802012517609,4.034879762988
+    ));
+#162 = CARTESIAN_POINT('',(0.91055282465,-5.802020175526,3.975109812754)
+  );
+#163 = CARTESIAN_POINT('',(1.352774621374,-5.802035380512,3.856315452972
+    ));
+#164 = CARTESIAN_POINT('',(1.776334369507,-5.802053100997,3.680474684837
+    ));
+#165 = CARTESIAN_POINT('',(2.172669628363,-5.80206316185,3.451137280082)
+  );
+#166 = CARTESIAN_POINT('',(2.53389923252,-5.802065187955,3.173398352205)
+  );
+#167 = CARTESIAN_POINT('',(3.173454080608,-5.802058232868,2.53399990324)
+  );
+#168 = CARTESIAN_POINT('',(3.451838040866,-5.80204927793,2.171914161843)
+  );
+#169 = CARTESIAN_POINT('',(3.681623921474,-5.802037242804,1.774517561666
+    ));
+#170 = CARTESIAN_POINT('',(3.857666554843,-5.802029276961,1.349730989831
+    ));
+#171 = CARTESIAN_POINT('',(3.976370263696,-5.802029230273,0.906159538143
+    ));
+#172 = CARTESIAN_POINT('',(4.035704929869,-5.80203110405,0.453038764103)
+  );
+#173 = CARTESIAN_POINT('',(4.035705939861,-5.802032717393,0.));
+#174 = ORIENTED_EDGE('',*,*,#65,.F.);
+#175 = SURFACE_OF_LINEAR_EXTRUSION('',#176,#191);
+#176 = B_SPLINE_CURVE_WITH_KNOTS('',13,(#177,#178,#179,#180,#181,#182,
+    #183,#184,#185,#186,#187,#188,#189,#190),.UNSPECIFIED.,.T.,.F.,(14,
+    14),(4.926997037152E-16,24.912829742967),.PIECEWISE_BEZIER_KNOTS.);
+#177 = CARTESIAN_POINT('',(0.,-5.054289321871,-4.035710678129));
+#178 = CARTESIAN_POINT('',(1.922331498798,-5.054289321881,
+    -4.035710678119));
+#179 = CARTESIAN_POINT('',(3.888993410617,-5.054289321864,-3.04218633523
+    ));
+#180 = CARTESIAN_POINT('',(5.295240355825,-5.054289322039,
+    -0.997652355434));
+#181 = CARTESIAN_POINT('',(5.511213087173,-5.05428932123,1.815885915213)
+  );
+#182 = CARTESIAN_POINT('',(4.012376441985,-5.054289323492,4.246448093781
+    ));
+#183 = CARTESIAN_POINT('',(1.82440979738,-5.054289319329,6.029010138695)
+  );
+#184 = CARTESIAN_POINT('',(-1.824409797435,-5.054289324516,
+    6.029010133754));
+#185 = CARTESIAN_POINT('',(-4.012376441854,-5.054289320069,
+    4.246448097079));
+#186 = CARTESIAN_POINT('',(-5.511213087285,-5.054289322703,
+    1.815885913753));
+#187 = CARTESIAN_POINT('',(-5.295240355776,-5.054289321654,
+    -0.997652355027));
+#188 = CARTESIAN_POINT('',(-3.888993410626,-5.054289321911,
+    -3.042186335289));
+#189 = CARTESIAN_POINT('',(-1.922331498798,-5.054289321882,
+    -4.035710678118));
+#190 = CARTESIAN_POINT('',(-9.884640328486E-16,-5.054289321881,
+    -4.035710678119));
+#191 = VECTOR('',#192,1.);
+#192 = DIRECTION('',(-2.226472867761E-13,1.,1.192358719074E-13));
+#193 = ADVANCED_FACE('',(#194),#212,.T.);
+#194 = FACE_BOUND('',#195,.T.);
+#195 = EDGE_LOOP('',(#196,#203,#210,#211));
+#196 = ORIENTED_EDGE('',*,*,#197,.F.);
+#197 = EDGE_CURVE('',#198,#41,#200,.T.);
+#198 = VERTEX_POINT('',#199);
+#199 = CARTESIAN_POINT('',(0.,-0.9,-4.465));
+#200 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#201,#202),.UNSPECIFIED.,.F.,.F.,
+  (2,2),(-6.7,-2.475),.PIECEWISE_BEZIER_KNOTS.);
+#201 = CARTESIAN_POINT('',(-1.093609591639E-15,-0.9,-4.465));
+#202 = CARTESIAN_POINT('',(-1.093609591639E-15,-5.125,-4.465));
+#203 = ORIENTED_EDGE('',*,*,#204,.T.);
+#204 = EDGE_CURVE('',#198,#198,#205,.T.);
+#205 = CIRCLE('',#206,4.465);
+#206 = AXIS2_PLACEMENT_3D('',#207,#208,#209);
+#207 = CARTESIAN_POINT('',(0.,-0.9,0.));
+#208 = DIRECTION('',(0.,-1.,0.));
+#209 = DIRECTION('',(0.,0.,-1.));
+#210 = ORIENTED_EDGE('',*,*,#197,.T.);
+#211 = ORIENTED_EDGE('',*,*,#48,.F.);
+#212 = CYLINDRICAL_SURFACE('',#213,4.465);
+#213 = AXIS2_PLACEMENT_3D('',#214,#215,#216);
+#214 = CARTESIAN_POINT('',(0.,-7.6,0.));
+#215 = DIRECTION('',(0.,-1.,0.));
+#216 = DIRECTION('',(0.,0.,-1.));
+#217 = ADVANCED_FACE('',(#218),#248,.T.);
+#218 = FACE_BOUND('',#219,.F.);
+#219 = EDGE_LOOP('',(#220,#231,#238,#245,#246,#247));
+#220 = ORIENTED_EDGE('',*,*,#221,.T.);
+#221 = EDGE_CURVE('',#222,#224,#226,.T.);
+#222 = VERTEX_POINT('',#223);
+#223 = CARTESIAN_POINT('',(3.560849528301,-6.932548584904,
+    1.626584611235E-16));
+#224 = VERTEX_POINT('',#225);
+#225 = CARTESIAN_POINT('',(4.342142658685E-16,-6.932548912121,
+    3.560848038067));
+#226 = CIRCLE('',#227,3.560849528301);
+#227 = AXIS2_PLACEMENT_3D('',#228,#229,#230);
+#228 = CARTESIAN_POINT('',(0.,-6.932548584904,0.));
+#229 = DIRECTION('',(0.,-1.,0.));
+#230 = DIRECTION('',(0.,0.,-1.));
+#231 = ORIENTED_EDGE('',*,*,#232,.T.);
+#232 = EDGE_CURVE('',#224,#222,#233,.T.);
+#233 = CIRCLE('',#234,3.560849528301);
+#234 = AXIS2_PLACEMENT_3D('',#235,#236,#237);
+#235 = CARTESIAN_POINT('',(0.,-6.932548584904,0.));
+#236 = DIRECTION('',(0.,-1.,0.));
+#237 = DIRECTION('',(0.,0.,-1.));
+#238 = ORIENTED_EDGE('',*,*,#239,.T.);
+#239 = EDGE_CURVE('',#222,#74,#240,.T.);
+#240 = CIRCLE('',#241,0.75);
+#241 = AXIS2_PLACEMENT_3D('',#242,#243,#244);
+#242 = CARTESIAN_POINT('',(3.4,-6.2,0.));
+#243 = DIRECTION('',(-0.,2.22044604925E-16,1.));
+#244 = DIRECTION('',(1.,0.,0.));
+#245 = ORIENTED_EDGE('',*,*,#73,.T.);
+#246 = ORIENTED_EDGE('',*,*,#110,.T.);
+#247 = ORIENTED_EDGE('',*,*,#239,.F.);
+#248 = TOROIDAL_SURFACE('',#249,3.4,0.75);
+#249 = AXIS2_PLACEMENT_3D('',#250,#251,#252);
+#250 = CARTESIAN_POINT('',(0.,-6.2,0.));
+#251 = DIRECTION('',(-0.,1.,-2.22044604925E-16));
+#252 = DIRECTION('',(1.,0.,0.));
+#253 = ADVANCED_FACE('',(#254,#290),#293,.T.);
+#254 = FACE_BOUND('',#255,.T.);
+#255 = EDGE_LOOP('',(#256,#266,#275,#283));
+#256 = ORIENTED_EDGE('',*,*,#257,.T.);
+#257 = EDGE_CURVE('',#258,#260,#262,.T.);
+#258 = VERTEX_POINT('',#259);
+#259 = CARTESIAN_POINT('',(-4.55,-0.9,1.750178562319));
+#260 = VERTEX_POINT('',#261);
+#261 = CARTESIAN_POINT('',(-4.55,-0.9,-1.750178562319));
+#262 = LINE('',#263,#264);
+#263 = CARTESIAN_POINT('',(-4.55,-0.9,-4.465));
+#264 = VECTOR('',#265,1.);
+#265 = DIRECTION('',(0.,0.,-1.));
+#266 = ORIENTED_EDGE('',*,*,#267,.T.);
+#267 = EDGE_CURVE('',#260,#268,#270,.T.);
+#268 = VERTEX_POINT('',#269);
+#269 = CARTESIAN_POINT('',(4.55,-0.9,-1.750178562319));
+#270 = CIRCLE('',#271,4.875);
+#271 = AXIS2_PLACEMENT_3D('',#272,#273,#274);
+#272 = CARTESIAN_POINT('',(0.,-0.9,0.));
+#273 = DIRECTION('',(0.,-1.,0.));
+#274 = DIRECTION('',(0.,0.,-1.));
+#275 = ORIENTED_EDGE('',*,*,#276,.T.);
+#276 = EDGE_CURVE('',#268,#277,#279,.T.);
+#277 = VERTEX_POINT('',#278);
+#278 = CARTESIAN_POINT('',(4.55,-0.9,1.750178562319));
+#279 = LINE('',#280,#281);
+#280 = CARTESIAN_POINT('',(4.55,-0.9,-4.465));
+#281 = VECTOR('',#282,1.);
+#282 = DIRECTION('',(0.,0.,1.));
+#283 = ORIENTED_EDGE('',*,*,#284,.T.);
+#284 = EDGE_CURVE('',#277,#258,#285,.T.);
+#285 = CIRCLE('',#286,4.875);
+#286 = AXIS2_PLACEMENT_3D('',#287,#288,#289);
+#287 = CARTESIAN_POINT('',(0.,-0.9,0.));
+#288 = DIRECTION('',(0.,-1.,0.));
+#289 = DIRECTION('',(0.,0.,-1.));
+#290 = FACE_BOUND('',#291,.T.);
+#291 = EDGE_LOOP('',(#292));
+#292 = ORIENTED_EDGE('',*,*,#204,.F.);
+#293 = PLANE('',#294);
+#294 = AXIS2_PLACEMENT_3D('',#295,#296,#297);
+#295 = CARTESIAN_POINT('',(0.,-0.9,-4.465));
+#296 = DIRECTION('',(0.,-1.,0.));
+#297 = DIRECTION('',(0.,0.,-1.));
+#298 = ADVANCED_FACE('',(#299),#335,.T.);
+#299 = FACE_BOUND('',#300,.T.);
+#300 = EDGE_LOOP('',(#301,#302,#317,#326,#333,#334));
+#301 = ORIENTED_EDGE('',*,*,#221,.T.);
+#302 = ORIENTED_EDGE('',*,*,#303,.T.);
+#303 = EDGE_CURVE('',#224,#304,#306,.T.);
+#304 = VERTEX_POINT('',#305);
+#305 = CARTESIAN_POINT('',(4.268439677776E-16,-6.957106288257,3.5));
+#306 = B_SPLINE_CURVE_WITH_KNOTS('',9,(#307,#308,#309,#310,#311,#312,
+    #313,#314,#315,#316),.UNSPECIFIED.,.F.,.F.,(10,10),(4.11084268775,
+    8.456436267359),.PIECEWISE_BEZIER_KNOTS.);
+#307 = CARTESIAN_POINT('',(3.5E-16,-5.631653855453,2.825561493825));
+#308 = CARTESIAN_POINT('',(3.8E-16,-5.426716383523,3.124126053349));
+#309 = CARTESIAN_POINT('',(4.3E-16,-5.383949613776,3.53407783764));
+#310 = CARTESIAN_POINT('',(4.8E-16,-5.572559072693,3.954180080505));
+#311 = CARTESIAN_POINT('',(5.2E-16,-5.988209448048,4.236013346873));
+#312 = CARTESIAN_POINT('',(5.2E-16,-6.512686079933,4.235775145107));
+#313 = CARTESIAN_POINT('',(4.8E-16,-6.928080283209,3.953564442886));
+#314 = CARTESIAN_POINT('',(4.3E-16,-7.116308068383,3.533291051697));
+#315 = CARTESIAN_POINT('',(3.8E-16,-7.073168940419,3.123378283323));
+#316 = CARTESIAN_POINT('',(3.5E-16,-6.867960354715,2.825));
+#317 = ORIENTED_EDGE('',*,*,#318,.F.);
+#318 = EDGE_CURVE('',#319,#304,#321,.T.);
+#319 = VERTEX_POINT('',#320);
+#320 = CARTESIAN_POINT('',(0.,-6.957106781187,-3.5));
+#321 = CIRCLE('',#322,3.5);
+#322 = AXIS2_PLACEMENT_3D('',#323,#324,#325);
+#323 = CARTESIAN_POINT('',(0.,-6.957106781187,0.));
+#324 = DIRECTION('',(0.,-1.,0.));
+#325 = DIRECTION('',(0.,0.,-1.));
+#326 = ORIENTED_EDGE('',*,*,#327,.F.);
+#327 = EDGE_CURVE('',#304,#319,#328,.T.);
+#328 = CIRCLE('',#329,3.5);
+#329 = AXIS2_PLACEMENT_3D('',#330,#331,#332);
+#330 = CARTESIAN_POINT('',(0.,-6.957106781187,0.));
+#331 = DIRECTION('',(0.,-1.,0.));
+#332 = DIRECTION('',(0.,0.,-1.));
+#333 = ORIENTED_EDGE('',*,*,#303,.F.);
+#334 = ORIENTED_EDGE('',*,*,#232,.T.);
+#335 = TOROIDAL_SURFACE('',#336,3.25,0.75);
+#336 = AXIS2_PLACEMENT_3D('',#337,#338,#339);
+#337 = CARTESIAN_POINT('',(0.,-6.25,0.));
+#338 = DIRECTION('',(0.,-1.,0.));
+#339 = DIRECTION('',(0.,0.,-1.));
+#340 = ADVANCED_FACE('',(#341),#366,.T.);
+#341 = FACE_BOUND('',#342,.T.);
+#342 = EDGE_LOOP('',(#343,#344,#352,#360));
+#343 = ORIENTED_EDGE('',*,*,#257,.F.);
+#344 = ORIENTED_EDGE('',*,*,#345,.F.);
+#345 = EDGE_CURVE('',#346,#258,#348,.T.);
+#346 = VERTEX_POINT('',#347);
+#347 = CARTESIAN_POINT('',(-4.55,-1.E-01,1.750178562319));
+#348 = LINE('',#349,#350);
+#349 = CARTESIAN_POINT('',(-4.55,-7.6,1.750178562319));
+#350 = VECTOR('',#351,1.);
+#351 = DIRECTION('',(0.,-1.,0.));
+#352 = ORIENTED_EDGE('',*,*,#353,.F.);
+#353 = EDGE_CURVE('',#354,#346,#356,.T.);
+#354 = VERTEX_POINT('',#355);
+#355 = CARTESIAN_POINT('',(-4.55,-1.E-01,-1.750178562319));
+#356 = LINE('',#357,#358);
+#357 = CARTESIAN_POINT('',(-4.55,-1.E-01,-10.));
+#358 = VECTOR('',#359,1.);
+#359 = DIRECTION('',(0.,0.,1.));
+#360 = ORIENTED_EDGE('',*,*,#361,.T.);
+#361 = EDGE_CURVE('',#354,#260,#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 = PLANE('',#367);
+#367 = AXIS2_PLACEMENT_3D('',#368,#369,#370);
+#368 = CARTESIAN_POINT('',(-4.55,-1.,-5.));
+#369 = DIRECTION('',(-1.,0.,0.));
+#370 = DIRECTION('',(0.,0.,1.));
+#371 = ADVANCED_FACE('',(#372),#391,.T.);
+#372 = FACE_BOUND('',#373,.T.);
+#373 = EDGE_LOOP('',(#374,#375,#384,#390));
+#374 = ORIENTED_EDGE('',*,*,#361,.F.);
+#375 = ORIENTED_EDGE('',*,*,#376,.T.);
+#376 = EDGE_CURVE('',#354,#377,#379,.T.);
+#377 = VERTEX_POINT('',#378);
+#378 = CARTESIAN_POINT('',(4.55,-1.E-01,-1.750178562319));
+#379 = CIRCLE('',#380,4.875);
+#380 = AXIS2_PLACEMENT_3D('',#381,#382,#383);
+#381 = CARTESIAN_POINT('',(0.,-1.E-01,0.));
+#382 = DIRECTION('',(0.,-1.,0.));
+#383 = DIRECTION('',(0.,0.,-1.));
+#384 = ORIENTED_EDGE('',*,*,#385,.T.);
+#385 = EDGE_CURVE('',#377,#268,#386,.T.);
+#386 = LINE('',#387,#388);
+#387 = CARTESIAN_POINT('',(4.55,-7.6,-1.750178562319));
+#388 = VECTOR('',#389,1.);
+#389 = DIRECTION('',(0.,-1.,0.));
+#390 = ORIENTED_EDGE('',*,*,#267,.F.);
+#391 = CYLINDRICAL_SURFACE('',#392,4.875);
+#392 = AXIS2_PLACEMENT_3D('',#393,#394,#395);
+#393 = CARTESIAN_POINT('',(0.,-7.6,0.));
+#394 = DIRECTION('',(0.,-1.,0.));
+#395 = DIRECTION('',(0.,0.,-1.));
+#396 = ADVANCED_FACE('',(#397),#415,.T.);
+#397 = FACE_BOUND('',#398,.T.);
+#398 = EDGE_LOOP('',(#399,#400,#401,#409));
+#399 = ORIENTED_EDGE('',*,*,#276,.F.);
+#400 = ORIENTED_EDGE('',*,*,#385,.F.);
+#401 = ORIENTED_EDGE('',*,*,#402,.F.);
+#402 = EDGE_CURVE('',#403,#377,#405,.T.);
+#403 = VERTEX_POINT('',#404);
+#404 = CARTESIAN_POINT('',(4.55,-1.E-01,1.750178562319));
+#405 = LINE('',#406,#407);
+#406 = CARTESIAN_POINT('',(4.55,-1.E-01,-5.));
+#407 = VECTOR('',#408,1.);
+#408 = DIRECTION('',(0.,0.,-1.));
+#409 = ORIENTED_EDGE('',*,*,#410,.T.);
+#410 = EDGE_CURVE('',#403,#277,#411,.T.);
+#411 = LINE('',#412,#413);
+#412 = CARTESIAN_POINT('',(4.55,-7.6,1.750178562319));
+#413 = VECTOR('',#414,1.);
+#414 = DIRECTION('',(0.,-1.,0.));
+#415 = PLANE('',#416);
+#416 = AXIS2_PLACEMENT_3D('',#417,#418,#419);
+#417 = CARTESIAN_POINT('',(4.55,-1.,5.));
+#418 = DIRECTION('',(1.,0.,0.));
+#419 = DIRECTION('',(0.,0.,-1.));
+#420 = ADVANCED_FACE('',(#421),#433,.T.);
+#421 = FACE_BOUND('',#422,.T.);
+#422 = EDGE_LOOP('',(#423,#424,#431,#432));
+#423 = ORIENTED_EDGE('',*,*,#410,.F.);
+#424 = ORIENTED_EDGE('',*,*,#425,.T.);
+#425 = EDGE_CURVE('',#403,#346,#426,.T.);
+#426 = CIRCLE('',#427,4.875);
+#427 = AXIS2_PLACEMENT_3D('',#428,#429,#430);
+#428 = CARTESIAN_POINT('',(0.,-1.E-01,0.));
+#429 = DIRECTION('',(0.,-1.,0.));
+#430 = DIRECTION('',(0.,0.,-1.));
+#431 = ORIENTED_EDGE('',*,*,#345,.T.);
+#432 = ORIENTED_EDGE('',*,*,#284,.F.);
+#433 = CYLINDRICAL_SURFACE('',#434,4.875);
+#434 = AXIS2_PLACEMENT_3D('',#435,#436,#437);
+#435 = CARTESIAN_POINT('',(0.,-7.6,0.));
+#436 = DIRECTION('',(0.,-1.,0.));
+#437 = DIRECTION('',(0.,0.,-1.));
+#438 = ADVANCED_FACE('',(#439),#458,.T.);
+#439 = FACE_BOUND('',#440,.T.);
+#440 = EDGE_LOOP('',(#441,#450,#455,#456,#457));
+#441 = ORIENTED_EDGE('',*,*,#442,.F.);
+#442 = EDGE_CURVE('',#443,#443,#445,.T.);
+#443 = VERTEX_POINT('',#444);
+#444 = CARTESIAN_POINT('',(0.,-7.5,-3.5));
+#445 = CIRCLE('',#446,3.5);
+#446 = AXIS2_PLACEMENT_3D('',#447,#448,#449);
+#447 = CARTESIAN_POINT('',(0.,-7.5,0.));
+#448 = DIRECTION('',(0.,-1.,0.));
+#449 = DIRECTION('',(0.,0.,-1.));
+#450 = ORIENTED_EDGE('',*,*,#451,.F.);
+#451 = EDGE_CURVE('',#319,#443,#452,.T.);
+#452 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#453,#454),.UNSPECIFIED.,.F.,.F.,
+  (2,2),(-0.342893218813,0.2),.PIECEWISE_BEZIER_KNOTS.);
+#453 = CARTESIAN_POINT('',(-8.572527594031E-16,-6.957106781187,-3.5));
+#454 = CARTESIAN_POINT('',(-8.572527594031E-16,-7.5,-3.5));
+#455 = ORIENTED_EDGE('',*,*,#318,.T.);
+#456 = ORIENTED_EDGE('',*,*,#327,.T.);
+#457 = ORIENTED_EDGE('',*,*,#451,.T.);
+#458 = CYLINDRICAL_SURFACE('',#459,3.5);
+#459 = AXIS2_PLACEMENT_3D('',#460,#461,#462);
+#460 = CARTESIAN_POINT('',(0.,-7.3,0.));
+#461 = DIRECTION('',(0.,-1.,0.));
+#462 = DIRECTION('',(0.,0.,-1.));
+#463 = ADVANCED_FACE('',(#464),#470,.T.);
+#464 = FACE_BOUND('',#465,.T.);
+#465 = EDGE_LOOP('',(#466,#467,#468,#469));
+#466 = ORIENTED_EDGE('',*,*,#353,.T.);
+#467 = ORIENTED_EDGE('',*,*,#425,.F.);
+#468 = ORIENTED_EDGE('',*,*,#402,.T.);
+#469 = ORIENTED_EDGE('',*,*,#376,.F.);
+#470 = PLANE('',#471);
+#471 = AXIS2_PLACEMENT_3D('',#472,#473,#474);
+#472 = CARTESIAN_POINT('',(-3.571030755311E-16,-1.E-01,
+    2.975858962759E-17));
+#473 = DIRECTION('',(0.,1.,0.));
+#474 = DIRECTION('',(0.,0.,1.));
+#475 = ADVANCED_FACE('',(#476),#499,.T.);
+#476 = FACE_BOUND('',#477,.T.);
+#477 = EDGE_LOOP('',(#478,#479,#491,#498));
+#478 = ORIENTED_EDGE('',*,*,#442,.T.);
+#479 = ORIENTED_EDGE('',*,*,#480,.T.);
+#480 = EDGE_CURVE('',#443,#481,#483,.T.);
+#481 = VERTEX_POINT('',#482);
+#482 = CARTESIAN_POINT('',(0.,-7.6,-3.4));
+#483 = ( BOUNDED_CURVE() B_SPLINE_CURVE(6,(#484,#485,#486,#487,#488,#489
+,#490),.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('') );
+#484 = CARTESIAN_POINT('',(0.,-7.5,-3.5));
+#485 = CARTESIAN_POINT('',(0.,-7.526733678315,-3.5));
+#486 = CARTESIAN_POINT('',(0.,-7.552770857258,-3.491499564937));
+#487 = CARTESIAN_POINT('',(0.,-7.57519195132,-3.47519195132));
+#488 = CARTESIAN_POINT('',(0.,-7.591499564937,-3.452770857258));
+#489 = CARTESIAN_POINT('',(0.,-7.6,-3.426733678315));
+#490 = CARTESIAN_POINT('',(0.,-7.6,-3.4));
+#491 = ORIENTED_EDGE('',*,*,#492,.F.);
+#492 = EDGE_CURVE('',#481,#481,#493,.T.);
+#493 = CIRCLE('',#494,3.4);
+#494 = AXIS2_PLACEMENT_3D('',#495,#496,#497);
+#495 = CARTESIAN_POINT('',(0.,-7.6,0.));
+#496 = DIRECTION('',(0.,-1.,0.));
+#497 = DIRECTION('',(0.,0.,-1.));
+#498 = ORIENTED_EDGE('',*,*,#480,.F.);
+#499 = TOROIDAL_SURFACE('',#500,3.4,0.1);
+#500 = AXIS2_PLACEMENT_3D('',#501,#502,#503);
+#501 = CARTESIAN_POINT('',(0.,-7.5,0.));
+#502 = DIRECTION('',(0.,-1.,0.));
+#503 = DIRECTION('',(0.,0.,-1.));
+#504 = ADVANCED_FACE('',(#505),#508,.T.);
+#505 = FACE_BOUND('',#506,.T.);
+#506 = EDGE_LOOP('',(#507));
+#507 = ORIENTED_EDGE('',*,*,#492,.T.);
+#508 = PLANE('',#509);
+#509 = AXIS2_PLACEMENT_3D('',#510,#511,#512);
+#510 = CARTESIAN_POINT('',(2.633949703729E-16,-7.6,1.005470685691E-16));
+#511 = DIRECTION('',(-0.,-1.,-0.));
+#512 = DIRECTION('',(0.,0.,-1.));
+#513 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) 
+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#517)) GLOBAL_UNIT_ASSIGNED_CONTEXT
+((#514,#515,#516)) REPRESENTATION_CONTEXT('Context #1',
+  '3D Context with UNIT and UNCERTAINTY') );
+#514 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
+#515 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
+#516 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
+#517 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-05),#514,
+  'distance_accuracy_value','confusion accuracy');
+#518 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));
+#519 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#520)
+  ,#513);
+#520 = STYLED_ITEM('color',(#521),#15);
+#521 = PRESENTATION_STYLE_ASSIGNMENT((#522,#528));
+#522 = SURFACE_STYLE_USAGE(.BOTH.,#523);
+#523 = SURFACE_SIDE_STYLE('',(#524));
+#524 = SURFACE_STYLE_FILL_AREA(#525);
+#525 = FILL_AREA_STYLE('',(#526));
+#526 = FILL_AREA_STYLE_COLOUR('',#527);
+#527 = COLOUR_RGB('',0.447058818107,0.474509808674,0.501960817233);
+#528 = CURVE_STYLE('',#529,POSITIVE_LENGTH_MEASURE(0.1),#530);
+#529 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous');
+#530 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02,
+  9.803921802644E-02);
+ENDSEC;
+END-ISO-10303-21;

+ 112 - 0
cell_measure_robot/pneumatics/tconnector.py

@@ -0,0 +1,112 @@
+
+import cadquery as cq
+from cq_warehouse.thread import (
+    IsoThread
+)
+from ocp_vscode import show, show_object
+from cadquery.occ_impl.exporters import ExportTypes
+
+MM = 1
+IN = 25.4 *MM
+
+distance = 15 *MM
+
+seal_outer_diam = 8.2 *MM
+seal_depth = 5.27 *MM
+seal_torus_diam = 1.5 *MM
+cartridge_small_diam = 7.6 *MM
+cartridge_small_depth = 6.6 *MM
+cartridge_large_diam = 8.85 *MM
+cartridge_large_depth = 3.6 *MM
+
+eps = 0.1 * MM
+
+version = "G1_8"
+# version = "M7"
+
+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,
+    length=length,
+    external=True,
+    end_finishes=("chamfer", "chamfer"),
+)
+
+iso_external_core = (
+    cq.Workplane("XY")
+    .circle(iso_external_thread.min_radius)
+    .extrude(iso_external_thread.length)
+)
+iso_external = iso_external_thread.cq_object.fuse(iso_external_core.val())
+
+housing_diameter = cartridge_large_diam * housing_factor
+housing = (
+    cq.Workplane("XY")
+    .rect(housing_diameter, housing_diameter)
+    .workplane(offset=iso_external_thread.length + distance)
+    .center(0, housing_diameter/2)
+    .rect(housing_diameter, housing_diameter * 2)
+    .workplane(offset=iso_external_thread.length)
+    .rect(housing_diameter, housing_diameter * 2)
+    .loft()
+)
+# Side A
+housing = housing.cut(iso_external)
+# Side B
+housing = housing.cut(iso_external.translate((0, 0, iso_external_thread.length + distance)))
+
+# Cartidge hole
+moved_cartridge = (
+    cartridge.rotate((0, 0, 0), (1, 0, 0), 90)
+    .translate((0, housing_diameter, iso_external_thread.length*2 + distance + 0.9))
+)
+housing = housing.cut(moved_cartridge)
+
+# straight channel
+housing = (
+    housing.faces("<Z")
+    .circle(iso_external_thread.min_radius)
+    .cutThruAll()
+)
+
+sweep = (
+    housing.faces(">Z")
+    .workplane(centerOption="CenterOfBoundBox", offset=-cartridge_small_depth)
+    .center(0, housing_diameter/2)
+    .circle(cartridge_small_diam / 2)
+    .workplane(offset=cartridge_small_diam/2-(iso_external_thread.length + distance/2))
+    .center(0, -housing_diameter)
+    .transformed(rotate=(-90, 0, 0))
+    .circle(seal_outer_diam / 2)
+    .loft(combine=False)
+)
+housing = housing.cut(sweep)
+housing = housing.faces("<Y or >Y").edges("not (>Z or <Z)").fillet(2)
+
+
+# show_object(iso_external_thread.cq_object, name="iso_external_thread")
+# show_object(iso_external_core, name="iso_external_core")
+# show_object(iso_external, name="iso_external")
+show_object(housing, name="housing")
+
+
+with open(f"t_connector_{version}.step", "w") as fp:
+   cq.exporters.exportShape(housing, ExportTypes.STEP, fp)