return equipment;
}
+ public static Equipment createEquipmentWithNozzles(P3DRootNode root, String typeURI, String nozzleTypeUri) throws Exception {
+ GeometryProvider provider = providers.get(typeURI);
+ if (provider == null) {
+ load(typeURI);
+ provider = providers.get(typeURI);
+ }
+ Equipment equipment = root.createEquipment();
+ equipment.setType(typeURI);
+ equipment.setGeometry(provider);
+ root.addChild(equipment);
+
+ for (int i = 0; i < equipment.numberOfFixedNozzles(); i++) {
+ createNozzle(root, equipment, new Item(nozzleTypeUri, "Nozzle"));
+
+ }
+
+ return equipment;
+ }
+
public static InlineComponent createStraight(P3DRootNode root) throws Exception{
InlineComponent component = root.createInline();
component.setType(Plant3D.URIs.Builtin_Straight);
return equipment;
}
-
+ public static Equipment createEquipmentWithNozzles(P3DRootNode root, Item equipmentType, Item nozzleType) throws Exception {
+ Equipment equipment = createEquipmentWithNozzles(root, equipmentType.getUri(), nozzleType.getUri());
+ String n = root.getUniqueName(equipmentType.getName());
+ equipment.setName(n);
+ return equipment;
+ }
public static Nozzle createDefaultNozzle(P3DRootNode root, Equipment equipment) throws Exception {
return createNozzle(root, equipment, new Item(Plant3D.URIs.Builtin_Nozzle, "Nozzle"));
// Variable angle
public Double angle;
+
+ // Rotation angle used with turns and rotated inline.
+ public Double rotationAngle;
public String getTypeUri() {
return typeUri;
public void setAngle(Double angle) {
this.angle = angle;
}
+
+ public Double getRotationAngle() {
+ return rotationAngle;
+ }
+
+ public void setRotationAngle(Double rotationAngle) {
+ this.rotationAngle = rotationAngle;
+ }
}
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()) {
- newPcp.setLength(inst.length);
- } else if (newComponent instanceof TurnComponent && ((TurnComponent)newComponent).isVariableAngle()) {
- newPcp.setTurnAngle(inst.angle);
+
+ if (newComponent instanceof InlineComponent) {
+ InlineComponent inlineComponent = (InlineComponent)newComponent;
+ if (inlineComponent.isVariableLength()|| inlineComponent.isModifialble()) {
+ newPcp.setLength(inst.length);
+ newComponent.setParameter("length", inst.length);
+ }
+ if (inst.rotationAngle != null)
+ ((InlineComponent) newComponent).setRotationAngle(inst.rotationAngle);
+ } else if (newComponent instanceof TurnComponent) {
+ TurnComponent turnComponent = (TurnComponent)newComponent;
+ if (turnComponent.isVariableAngle()) {
+ newPcp.setTurnAngle(inst.angle);
+ newComponent.setParameter("turnAngle", inst.angle);
+ }
+ if (inst.rotationAngle != null)
+ ((TurnComponent) newComponent).setRotationAngle(inst.rotationAngle);
}
+
newComponent.updateParameters();
Vector3d v = new Vector3d(dir);
PipingRules.addSizeChange(true, pipeRun, other, (InlineComponent)newComponent, toPcp, null);
}
newPcp.setWorldPosition(pos);
+
// TODO : chicken-egg problem
newComponent.updateParameters();
Vector3d v = new Vector3d(dir);
break;
}
newPcp.setWorldPosition(pos);
+ if (inst.rotationAngle != null)
+ ((InlineComponent) newComponent).setRotationAngle(inst.rotationAngle);
}