private String type;
private PipeControlPoint controlPoint;
+ private boolean componentCalculatedOffset = false;
@GetType(Plant3D.URIs.InlineComponent)
public String getType() {
if (calculated.containsKey("length")) {
controlPoint.setLength((Double)calculated.get("length"));
}
+ if (calculated.containsKey("offset")) {
+ controlPoint.setOffset((Double)calculated.get("offset"));
+ componentCalculatedOffset = true;
+ } else {
+ componentCalculatedOffset = false;
+ }
}
}
+ @Override
+ public void setPipeRun(PipeRun pipeRun) {
+ // TODO Auto-generated method stub
+ super.setPipeRun(pipeRun);
+ if (getPipeRun() != null && getAlternativePipeRun() != null) {
+ updateOffset();
+ }
+ }
+
+ @Override
+ public void setAlternativePipeRun(PipeRun pipeRun) {
+ // TODO Auto-generated method stub
+ super.setAlternativePipeRun(pipeRun);
+ if (getPipeRun() != null && getAlternativePipeRun() != null) {
+ updateOffset();
+ }
+ }
+
+ private void updateOffset() {
+ if (!componentCalculatedOffset && getControlPoint().isOffset()) {
+ getControlPoint().setOffset(getPipeRun().getPipeDiameter()*0.5 - getAlternativePipeRun().getPipeDiameter()*0.5);
+ }
+ }
+
@Override
public Map<String, Object> updateParameterMap() {
Map<String,Object> map = new HashMap<String, Object>();
map.put("length", controlPoint.getLength());
if (controlPoint.isDualInline()) {
PipeControlPoint sub = controlPoint.getSubPoint().get(0);
- PipeRun pipeRun = sub.getPipeRun();
- if (pipeRun != null) {
- map.put("radius2", pipeRun.getPipeDiameter() * 0.5);
+ PipeRun pipeRun2 = sub.getPipeRun();
+ if (pipeRun2 != null) {
+ map.put("radius2", pipeRun2.getPipeDiameter() * 0.5);
+ }
+ if (controlPoint.isOffset() && !componentCalculatedOffset) {
+ map.put("offset", controlPoint.getOffset());
}
}
}