[#106] Fix SubAssembly importing in RockSim
This commit is contained in:
parent
3d3ad2486b
commit
90cceecd65
@ -350,6 +350,9 @@ class StageHandler extends AbstractElementHandler {
|
||||
if (RockSimCommonConstants.TRANSITION.equals(element)) {
|
||||
return new TransitionHandler(context, component, warnings);
|
||||
}
|
||||
if (RockSimCommonConstants.SUBASSEMBLY.equals(element)) {
|
||||
return new SubAssemblyHandler(context, component);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -10,18 +10,21 @@ import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* This class handles Rocksim 'SubAssembly' elements. They are similar to 'AttachedParts' (which is why this class is subclassed from
|
||||
* AttachedPartsHandler) with some key differences. In Rocksim, AttachedParts elements can contain SubAssembly elements, which can in turn
|
||||
* This class handles RockSim 'SubAssembly' elements. They are similar to 'AttachedParts' (which is why this class is subclassed from
|
||||
* AttachedPartsHandler) with some key differences. In RockSim, AttachedParts elements can contain SubAssembly elements, which can in turn
|
||||
* contain AttachedParts elements. To represent them in OR, SubAssembly elements are treated as children of the stage - much like a nose cone or
|
||||
* external body tube.
|
||||
*/
|
||||
public class SubAssemblyHandler extends AttachedPartsHandler {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param c the parent component
|
||||
* @throws IllegalArgumentException
|
||||
*/
|
||||
public SubAssemblyHandler(final DocumentLoadingContext context, final RocketComponent c)
|
||||
throws IllegalArgumentException {
|
||||
//A bit of a risk here, but assign the subassembly to the stage, not to the component. This is because typically the
|
||||
//first component within the subassembly will be an external component.
|
||||
super(context, c.getStage());
|
||||
super(context, c);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -33,9 +36,14 @@ public class SubAssemblyHandler extends AttachedPartsHandler {
|
||||
if (RockSimCommonConstants.ATTACHED_PARTS.equals(element)) {
|
||||
return this;
|
||||
}
|
||||
// The key override of this class - treat body tubes as external body tubes.
|
||||
// The key override of this class - treat body tubes, transitions, and nose cones as external components.
|
||||
// note: this will only work if the parent component is a stage.
|
||||
else if (RockSimCommonConstants.BODY_TUBE.equals(element)) {
|
||||
return new BodyTubeHandler(getContext(), getComponent(), warnings);
|
||||
} else if (RockSimCommonConstants.TRANSITION.equals(element)) {
|
||||
return new TransitionHandler(getContext(), getComponent(), warnings);
|
||||
} else if (RockSimCommonConstants.NOSE_CONE.equals(element)) {
|
||||
return new NoseConeHandler(getContext(), getComponent(), warnings);
|
||||
}
|
||||
return super.openElement(element, attributes, warnings);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user