Added support for TubeCoupler.

This commit is contained in:
Kevin Ruland 2012-04-16 20:17:38 +00:00
parent 5d6da040b2
commit 1184c698be
6 changed files with 116 additions and 2 deletions

View File

@ -0,0 +1,21 @@
Manufacturer,PartNo,Description,Type,InnerDiameter,OuterDiameter,Length,Material,Mass
Semroc,HTC-5,Tube Coupler Series 5,TUBE_COUPLER,0.0120142,0.013081,0.01905,Paper,0.000283495
Semroc,HTC-7,Tube Coupler Series 7,TUBE_COUPLER,0.0170942,0.018161,0.0254,Paper,0.000737087
Semroc,HTC-7B,Tube Coupler Series 7,TUBE_COUPLER,0.0182626,0.0193294,0.0254,Paper,0.000737087
Semroc,HTC-8,Tube Coupler Series 8,TUBE_COUPLER,0.0209042,0.021971,0.0254,Paper,0.001077281
Semroc,HTC-8F,Tube Coupler Series 8F,TUBE_COUPLER,0.0214122,0.022479,0.0254,Paper,0.00110563
Semroc,HTC-9,Tube Coupler Series 9,TUBE_COUPLER,0.0230632,0.02413,0.0254,Paper,0.001162329
Semroc,HTC-10,Tube Coupler Series 10,TUBE_COUPLER,0.0243332,0.0254,0.0381,Paper,0.001814368
Semroc,HTC-11,Tube Coupler Series 11,TUBE_COUPLER,0.0276352,0.028702,0.0381,Paper,0.002012814
Semroc,HTC-13,Tube Coupler Series 13,TUBE_COUPLER,0.0319532,0.03302,0.04445,Paper,0.003543687
Semroc,HTC-16,Tube Coupler Series 16,TUBE_COUPLER,0.0395732,0.04064,0.04445,Paper,0.004961161
Semroc,HTC-18,Tube Coupler Series 18,TUBE_COUPLER,0.0446532,0.04572,0.04445,Paper,0.005953393
Semroc,HTC-20,Tube Coupler Series 20,TUBE_COUPLER,0.0497332,0.0508,0.05334,Paper,0.007512616
Semroc,JT-5C,Tube Coupler Series BT-5,TUBE_COUPLER,0.0120142,0.013081,0.01905,Paper,0.000283495
Semroc,JT-20C,Tube Coupler Series BT-20,TUBE_COUPLER,0.0169672,0.018034,0.0254,Paper,0.000737087
Semroc,JT-50C,Tube Coupler Series BT-50,TUBE_COUPLER,0.0230632,0.02413,0.0254,Paper,0.00110563
Semroc,JT-55C,Tube Coupler Series BT-55,TUBE_COUPLER,0.0315214,0.0325882,0.0381,Paper,0.001389125
Semroc,JT-60C,Tube Coupler Series BT-60,TUBE_COUPLER,0.0394462,0.040513,0.04445,Paper,0.001559222
Semroc,JT-70D,Tube Coupler Series BT-70,TUBE_COUPLER,0.0541782,0.055245,0.015875,Paper,0.002466406
Semroc,JT-70E,Tube Coupler Series BT-70,TUBE_COUPLER,0.0541782,0.055245,0.1016,Paper,0.015790667
Semroc,JT-80E,Tube Coupler Series BT-80,TUBE_COUPLER,0.0638556,0.0649224,0.1016,Paper,0.02069513
1 Manufacturer PartNo Description Type InnerDiameter OuterDiameter Length Material Mass
2 Semroc HTC-5 Tube Coupler Series 5 TUBE_COUPLER 0.0120142 0.013081 0.01905 Paper 0.000283495
3 Semroc HTC-7 Tube Coupler Series 7 TUBE_COUPLER 0.0170942 0.018161 0.0254 Paper 0.000737087
4 Semroc HTC-7B Tube Coupler Series 7 TUBE_COUPLER 0.0182626 0.0193294 0.0254 Paper 0.000737087
5 Semroc HTC-8 Tube Coupler Series 8 TUBE_COUPLER 0.0209042 0.021971 0.0254 Paper 0.001077281
6 Semroc HTC-8F Tube Coupler Series 8F TUBE_COUPLER 0.0214122 0.022479 0.0254 Paper 0.00110563
7 Semroc HTC-9 Tube Coupler Series 9 TUBE_COUPLER 0.0230632 0.02413 0.0254 Paper 0.001162329
8 Semroc HTC-10 Tube Coupler Series 10 TUBE_COUPLER 0.0243332 0.0254 0.0381 Paper 0.001814368
9 Semroc HTC-11 Tube Coupler Series 11 TUBE_COUPLER 0.0276352 0.028702 0.0381 Paper 0.002012814
10 Semroc HTC-13 Tube Coupler Series 13 TUBE_COUPLER 0.0319532 0.03302 0.04445 Paper 0.003543687
11 Semroc HTC-16 Tube Coupler Series 16 TUBE_COUPLER 0.0395732 0.04064 0.04445 Paper 0.004961161
12 Semroc HTC-18 Tube Coupler Series 18 TUBE_COUPLER 0.0446532 0.04572 0.04445 Paper 0.005953393
13 Semroc HTC-20 Tube Coupler Series 20 TUBE_COUPLER 0.0497332 0.0508 0.05334 Paper 0.007512616
14 Semroc JT-5C Tube Coupler Series BT-5 TUBE_COUPLER 0.0120142 0.013081 0.01905 Paper 0.000283495
15 Semroc JT-20C Tube Coupler Series BT-20 TUBE_COUPLER 0.0169672 0.018034 0.0254 Paper 0.000737087
16 Semroc JT-50C Tube Coupler Series BT-50 TUBE_COUPLER 0.0230632 0.02413 0.0254 Paper 0.00110563
17 Semroc JT-55C Tube Coupler Series BT-55 TUBE_COUPLER 0.0315214 0.0325882 0.0381 Paper 0.001389125
18 Semroc JT-60C Tube Coupler Series BT-60 TUBE_COUPLER 0.0394462 0.040513 0.04445 Paper 0.001559222
19 Semroc JT-70D Tube Coupler Series BT-70 TUBE_COUPLER 0.0541782 0.055245 0.015875 Paper 0.002466406
20 Semroc JT-70E Tube Coupler Series BT-70 TUBE_COUPLER 0.0541782 0.055245 0.1016 Paper 0.015790667
21 Semroc JT-80E Tube Coupler Series BT-80 TUBE_COUPLER 0.0638556 0.0649224 0.1016 Paper 0.02069513

View File

@ -48,6 +48,10 @@ public class ColumnDefinition<T> {
String translated_value = Application.getTranslator().get("Databases.materials.Balsa");
return getMaterialFor(translated_value);
}
if ( "paper".equalsIgnoreCase(value) ) {
String translated_value = Application.getTranslator().get("Databases.materials.Paperoffice");
return getMaterialFor(translated_value);
}
throw new IllegalArgumentException("Invalid material " + value + " in component preset.");
}
if ( type.equals(Shape.class) ) {

View File

@ -63,6 +63,13 @@ public class ComponentPreset implements Comparable<ComponentPreset> {
ComponentPreset.OUTER_DIAMETER,
ComponentPreset.LENGTH} ),
TUBE_COUPLER( new TypedKey<?>[] {
ComponentPreset.MANUFACTURER,
ComponentPreset.PARTNO,
ComponentPreset.OUTER_DIAMETER,
ComponentPreset.INNER_DIAMETER,
ComponentPreset.LENGTH} ),
BULK_HEAD( new TypedKey<?>[] {
ComponentPreset.MANUFACTURER,
ComponentPreset.PARTNO,

View File

@ -57,6 +57,10 @@ public abstract class ComponentPresetFactory {
makeBulkHead(preset);
break;
}
case TUBE_COUPLER: {
makeTubeCoupler(preset);
break;
}
}
preset.computeDigest();
@ -188,6 +192,59 @@ public abstract class ComponentPresetFactory {
}
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) ) {

View File

@ -1,5 +1,6 @@
package net.sf.openrocket.rocketcomponent;
import net.sf.openrocket.preset.ComponentPreset;
import net.sf.openrocket.util.Coordinate;
import net.sf.openrocket.util.MathUtil;
@ -16,7 +17,24 @@ public abstract class ThicknessRingComponent extends RingComponent {
protected double outerRadius = 0;
protected double thickness = 0;
@Override
protected void loadFromPreset(ComponentPreset preset) {
if ( preset.has(ComponentPreset.OUTER_DIAMETER) ) {
this.outerRadiusAutomatic = false;
this.innerRadiusAutomatic = false;
double outerDiameter = preset.get(ComponentPreset.OUTER_DIAMETER);
this.outerRadius = outerDiameter/2.0;
if ( preset.has(ComponentPreset.INNER_DIAMETER) ) {
double innerDiameter = preset.get(ComponentPreset.INNER_DIAMETER);
this.thickness = (outerDiameter-innerDiameter) / 2.0;
}
}
super.loadFromPreset(preset);
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
}
@Override
public double getOuterRadius() {
if (isOuterRadiusAutomatic() && getParent() instanceof RadialParent) {

View File

@ -1,6 +1,8 @@
package net.sf.openrocket.rocketcomponent;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.preset.ComponentPreset;
import net.sf.openrocket.preset.ComponentPreset.Type;
import net.sf.openrocket.startup.Application;
@ -13,7 +15,12 @@ public class TubeCoupler extends ThicknessRingComponent implements RadialParent
setLength(0.06);
}
@Override
public Type getPresetType() {
return ComponentPreset.Type.TUBE_COUPLER;
}
// Make setter visible
@Override
public void setOuterRadiusAutomatic(boolean auto) {