]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/utils/P3DUtil.java
SCL bindings to some G3D and Plant3D Java classes
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / utils / P3DUtil.java
index e6e3385f3a2967aaee826a684136ac98be7dce50..7ba42b8f9d128d511973507595fee90d9a6d59fa 100644 (file)
@@ -11,10 +11,16 @@ import org.simantics.db.Resource;
 import org.simantics.db.WriteGraph;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.request.Read;
+import org.simantics.g3d.scenegraph.base.INode;
 import org.simantics.layer0.Layer0;
 import org.simantics.plant3d.ontology.Plant3D;
+import org.simantics.plant3d.scenegraph.Equipment;
+import org.simantics.plant3d.scenegraph.P3DRootNode;
+import org.simantics.plant3d.scenegraph.PipeRun;
+import org.simantics.plant3d.scenegraph.PipelineComponent;
+import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint;
+import org.simantics.plant3d.scenegraph.controlpoint.PipingRules;
 import org.simantics.plant3d.utils.Item.Type;
-import org.simantics.ui.SimanticsUI;
 
 public class P3DUtil {
        
@@ -175,5 +181,40 @@ public class P3DUtil {
                
                return model;
        }
+       
+       public static void finalizeDBLoad(P3DRootNode rootNode) throws Exception{
+           for (INode node : rootNode.getChild()) {
+            if (node instanceof PipeRun) {
+                for (PipelineComponent pc : ((PipeRun) node).getChild())
+                    pc.sync();
+            } else if (node instanceof Equipment) {
+                for (PipelineComponent pc : ((Equipment) node).getChild())
+                    pc.sync();
+            }
+        }
+        
+        for (INode node : rootNode.getChild()) {
+            if (node instanceof PipeRun) {
+                for (PipelineComponent pc : ((PipeRun) node).getChild())
+                    pc.sync2();
+            } else if (node instanceof Equipment) {
+                for (PipelineComponent pc : ((Equipment) node).getChild())
+                    pc.sync2();
+            }
+        }
+        for (INode node : rootNode.getChild()) {
+            if (node instanceof PipeRun) {
+                PipingRules.validate((PipeRun)node);
+            }
+        }
+        PipingRules.setEnabled(true);
+        for (INode node : rootNode.getChild()) {
+            if (node instanceof PipeRun) {
+                PipeRun run = (PipeRun)node;
+                for (PipeControlPoint pcp : run.getControlPoints())
+                    PipingRules.positionUpdate(pcp);        
+            }
+        }
+       }
 
 }