X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Futils%2FComponentUtils.java;h=50ede807e6dac4039e2aee555174a088df24c80a;hb=5ed9e84f079af0000885f74a91845bb298e9a362;hp=69bf593156e3fa448e8a335e94de60388712c54c;hpb=1ca09aa9bae3ea1e3382ceff0a2a09427f173286;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/utils/ComponentUtils.java b/org.simantics.plant3d/src/org/simantics/plant3d/utils/ComponentUtils.java index 69bf5931..50ede807 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/utils/ComponentUtils.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/utils/ComponentUtils.java @@ -329,7 +329,7 @@ public class ComponentUtils { 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) { @@ -407,11 +407,13 @@ public class ComponentUtils { 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(); @@ -538,7 +540,7 @@ public class ComponentUtils { 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. @@ -546,10 +548,11 @@ public class ComponentUtils { 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);