--- /dev/null
+Manufacturer,PartNo,Description,Type,InnerDiameter,OuterDiameter,Length,Material,Mass\r
+Semroc,HTC-5,Tube Coupler Series 5,TUBE_COUPLER,0.0120142,0.013081,0.01905,Paper,0.000283495\r
+Semroc,HTC-7,Tube Coupler Series 7,TUBE_COUPLER,0.0170942,0.018161,0.0254,Paper,0.000737087\r
+Semroc,HTC-7B,Tube Coupler Series 7,TUBE_COUPLER,0.0182626,0.0193294,0.0254,Paper,0.000737087\r
+Semroc,HTC-8,Tube Coupler Series 8,TUBE_COUPLER,0.0209042,0.021971,0.0254,Paper,0.001077281\r
+Semroc,HTC-8F,Tube Coupler Series 8F,TUBE_COUPLER,0.0214122,0.022479,0.0254,Paper,0.00110563\r
+Semroc,HTC-9,Tube Coupler Series 9,TUBE_COUPLER,0.0230632,0.02413,0.0254,Paper,0.001162329\r
+Semroc,HTC-10,Tube Coupler Series 10,TUBE_COUPLER,0.0243332,0.0254,0.0381,Paper,0.001814368\r
+Semroc,HTC-11,Tube Coupler Series 11,TUBE_COUPLER,0.0276352,0.028702,0.0381,Paper,0.002012814\r
+Semroc,HTC-13,Tube Coupler Series 13,TUBE_COUPLER,0.0319532,0.03302,0.04445,Paper,0.003543687\r
+Semroc,HTC-16,Tube Coupler Series 16,TUBE_COUPLER,0.0395732,0.04064,0.04445,Paper,0.004961161\r
+Semroc,HTC-18,Tube Coupler Series 18,TUBE_COUPLER,0.0446532,0.04572,0.04445,Paper,0.005953393\r
+Semroc,HTC-20,Tube Coupler Series 20,TUBE_COUPLER,0.0497332,0.0508,0.05334,Paper,0.007512616\r
+Semroc,JT-5C,Tube Coupler Series BT-5,TUBE_COUPLER,0.0120142,0.013081,0.01905,Paper,0.000283495\r
+Semroc,JT-20C,Tube Coupler Series BT-20,TUBE_COUPLER,0.0169672,0.018034,0.0254,Paper,0.000737087\r
+Semroc,JT-50C,Tube Coupler Series BT-50,TUBE_COUPLER,0.0230632,0.02413,0.0254,Paper,0.00110563\r
+Semroc,JT-55C,Tube Coupler Series BT-55,TUBE_COUPLER,0.0315214,0.0325882,0.0381,Paper,0.001389125\r
+Semroc,JT-60C,Tube Coupler Series BT-60,TUBE_COUPLER,0.0394462,0.040513,0.04445,Paper,0.001559222\r
+Semroc,JT-70D,Tube Coupler Series BT-70,TUBE_COUPLER,0.0541782,0.055245,0.015875,Paper,0.002466406\r
+Semroc,JT-70E,Tube Coupler Series BT-70,TUBE_COUPLER,0.0541782,0.055245,0.1016,Paper,0.015790667\r
+Semroc,JT-80E,Tube Coupler Series BT-80,TUBE_COUPLER,0.0638556,0.0649224,0.1016,Paper,0.02069513\r
makeBulkHead(preset);
break;
}
+ case TUBE_COUPLER: {
+ makeTubeCoupler(preset);
+ break;
+ }
}
preset.computeDigest();
}
+ private static void makeTubeCoupler( ComponentPreset preset ) throws InvalidComponentPresetException {
+
+ checkRequiredFields( preset, LENGTH );
+
+ // FIXME - TubeCoupler does not have getComponentVolume. So we use a BodyTube for this.
+ BodyTube bt = new BodyTube();
+
+ bt.setLength(preset.get(LENGTH));
+
+ // Need to verify contains 2 of OD, thickness, ID. Compute the third.
+ boolean hasOd = preset.has(OUTER_DIAMETER);
+ boolean hasId = preset.has(INNER_DIAMETER);
+ boolean hasThickness = preset.has(THICKNESS);
+
+ if ( hasOd ) {
+ double outerRadius = preset.get(OUTER_DIAMETER)/2.0;
+ double thickness = 0;
+ bt.setOuterRadius( outerRadius );
+ if ( hasId ) {
+ thickness = outerRadius - preset.get(INNER_DIAMETER)/2.0;
+ } else if ( hasThickness ) {
+ thickness = preset.get(THICKNESS);
+ } else {
+ throw new InvalidComponentPresetException("Body tube preset underspecified " + preset.toString());
+ }
+ bt.setThickness( thickness );
+ } else {
+ if ( ! hasId && ! hasThickness ) {
+ throw new InvalidComponentPresetException("Body tube preset underspecified " + preset.toString());
+ }
+ double innerRadius = preset.get(INNER_DIAMETER)/2.0;
+ double thickness = preset.get(THICKNESS);
+ bt.setOuterRadius(innerRadius + thickness);
+ bt.setThickness(thickness);
+ }
+
+ preset.put(OUTER_DIAMETER, bt.getOuterRadius() *2.0);
+ preset.put(INNER_DIAMETER, bt.getInnerRadius() *2.0);
+ preset.put(THICKNESS, bt.getThickness());
+
+ // Need to translate Mass to Density.
+ if ( preset.has(MASS) ) {
+ String materialName = "TubeCustom";
+ if ( preset.has(MATERIAL) ) {
+ materialName = preset.get(MATERIAL).getName();
+ }
+ Material m = Material.newMaterial(Material.Type.BULK, materialName, preset.get(MASS)/bt.getComponentVolume(), false);
+ preset.put(MATERIAL, m);
+ }
+
+
+ }
+
private static void checkRequiredFields( ComponentPreset preset, TypedKey<?> ... keys ) throws InvalidComponentPresetException {
for( TypedKey<?> key: keys ) {
if (! preset.has(key) ) {