package net.sf.openrocket.preset;
-import static net.sf.openrocket.preset.ComponentPreset.FORE_OUTER_DIAMETER;
-import static net.sf.openrocket.preset.ComponentPreset.INNER_DIAMETER;
-import static net.sf.openrocket.preset.ComponentPreset.LENGTH;
-import static net.sf.openrocket.preset.ComponentPreset.MANUFACTURER;
-import static net.sf.openrocket.preset.ComponentPreset.MASS;
-import static net.sf.openrocket.preset.ComponentPreset.MATERIAL;
-import static net.sf.openrocket.preset.ComponentPreset.OUTER_DIAMETER;
-import static net.sf.openrocket.preset.ComponentPreset.PARTNO;
-import static net.sf.openrocket.preset.ComponentPreset.SHAPE;
-import static net.sf.openrocket.preset.ComponentPreset.THICKNESS;
-import static net.sf.openrocket.preset.ComponentPreset.TYPE;
+import static net.sf.openrocket.preset.ComponentPreset.*;
import net.sf.openrocket.material.Material;
import net.sf.openrocket.preset.ComponentPreset.Type;
-import net.sf.openrocket.rocketcomponent.BodyTube;
-import net.sf.openrocket.rocketcomponent.Bulkhead;
import net.sf.openrocket.rocketcomponent.NoseCone;
import net.sf.openrocket.rocketcomponent.Transition;
break;
}
case TUBE_COUPLER: {
- makeTubeCoupler(preset);
+ // For now TUBE_COUPLER is the same as BODY_TUBE
+ makeBodyTube(preset);
break;
}
case CENTERING_RING: {
private static void makeNoseCone( ComponentPreset preset ) throws InvalidComponentPresetException {
- checkRequiredFields( preset, LENGTH, SHAPE, OUTER_DIAMETER );
+ checkRequiredFields( preset, LENGTH, SHAPE, AFT_OUTER_DIAMETER );
if ( preset.has(MASS) ) {
// compute a density for this component
}
private static void makeTransition( ComponentPreset preset ) throws InvalidComponentPresetException {
- checkRequiredFields(preset, LENGTH, OUTER_DIAMETER, FORE_OUTER_DIAMETER);
+ checkRequiredFields(preset, LENGTH, AFT_OUTER_DIAMETER, FORE_OUTER_DIAMETER);
if ( preset.has(MASS) ) {
// compute a density for this component
if ( preset.has(MASS) ) {
// compute a density for this component
double mass = preset.get(MASS);
- // FIXME - Bulkhead.getComponentVolume does not exist!
- // double density = mass / tr.getComponentVolume();
- double volume = Math.pow(preset.get(OUTER_DIAMETER),2) * Math.PI / 4.0;
+ double volume = computeVolumeOfTube(preset);
double density = mass / volume;
String materialName = "BulkHeadCustom";
}
- private static void makeTubeCoupler( ComponentPreset preset ) throws InvalidComponentPresetException {
-
- checkRequiredFields( preset, LENGTH );
-
- checkDiametersAndThickness( preset );
-
- double volume = computeVolumeOfTube( preset );
-
- // Need to translate Mass to Density.
- if ( preset.has(MASS) ) {
- String materialName = "TubeCouplerCustom";
- if ( preset.has(MATERIAL) ) {
- materialName = preset.get(MATERIAL).getName();
- }
- Material m = Material.newMaterial(Material.Type.BULK, materialName, preset.get(MASS)/volume, false);
- preset.put(MATERIAL, m);
- }
- }
-
private static void makeCenteringRing( ComponentPreset preset ) throws InvalidComponentPresetException {
checkRequiredFields( preset, LENGTH );
// Need to translate Mass to Density.
if ( preset.has(MASS) ) {
- String materialName = "TubeCouplerCustom";
+ String materialName = "CenteringRingCustom";
if ( preset.has(MATERIAL) ) {
materialName = preset.get(MATERIAL).getName();
}
// Need to translate Mass to Density.
if ( preset.has(MASS) ) {
- String materialName = "TubeCouplerCustom";
+ String materialName = "EngineBlockCustom";
if ( preset.has(MATERIAL) ) {
materialName = preset.get(MATERIAL).getName();
}
throw new InvalidComponentPresetException("Preset underspecified " + preset.toString());
}
} else {
- if ( ! hasId && ! hasThickness ) {
+ if ( ! hasId || ! hasThickness ) {
throw new InvalidComponentPresetException("Preset underspecified " + preset.toString());
}
innerRadius = preset.get(INNER_DIAMETER)/2.0;
private static double computeVolumeOfTube(ComponentPreset preset) {
double or = preset.get(OUTER_DIAMETER)/2.0;
- double ir = preset.get(INNER_DIAMETER)/2.0;
+ double ir = preset.has(INNER_DIAMETER) ? preset.get(INNER_DIAMETER)/2.0 : 0.0;
double l = preset.get(LENGTH);
return Math.PI * (or*or - ir*ir) * l;
}