PositionType insertPosition = inst.insertPosition;
boolean lengthAdjustable = false;
if (newComponent instanceof InlineComponent) {
- lengthAdjustable = ((InlineComponent)newComponent).isVariableLength();
+ lengthAdjustable = ((InlineComponent)newComponent).isVariableLength() || ((InlineComponent)newComponent).isModifialble();
}
boolean insertAdjustable = false;
if (component instanceof InlineComponent) {
newComponent.setName(name);
pipeRun.addChild(newComponent);
- // TODO: these options are not stored into DB. Should they?!
- if (newComponent instanceof InlineComponent && ((InlineComponent)newComponent).isVariableLength()) {
+
+ if (newComponent instanceof InlineComponent && ((InlineComponent)newComponent).isVariableLength() ||((InlineComponent)newComponent).isModifialble()) {
newPcp.setLength(inst.length);
+ newComponent.setParameter("length", inst.length);
} else if (newComponent instanceof TurnComponent && ((TurnComponent)newComponent).isVariableAngle()) {
newPcp.setTurnAngle(inst.angle);
+ newComponent.setParameter("turnAngle", inst.angle);
}
newComponent.updateParameters();
requiresReverse = true;
}
PipeRun other = endCP.getPipeRun();
- boolean mergeRuns = other == null ? true : pipeRun.equalSpecs(other);
+ boolean mergeRuns = other == null ? true : pipeRun.canMerge(other);
if (requiresReverse) {
// Pipe line must be traversible with next/previous relations without direction change.
PipingRules.reverse(other);
}
+
if (mergeRuns) {
// Runs have compatible specs and must be merged
if (other != null && pipeRun != other)
- PipingRules.merge(pipeRun, other);
+ pipeRun.merge(other);
else if (other == null) {
if (!(endTo instanceof Nozzle)) {
pipeRun.addChild(endTo);