package org.simantics.plant3d.utils;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import org.simantics.Simantics;
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 {
});
}
+ public static List<Item> filterUserComponents(List<Item> items) {
+ List<Item> result = new ArrayList<Item>(items.size());
+ for (Item i : items) {
+ if (!i.isCode())
+ result.add(i);
+ }
+ return result;
+ }
+
private static List<Item> getItems(ReadGraph graph, Resource lib, Resource type) throws DatabaseException{
Plant3D p3d = Plant3D.getInstance(graph);
Layer0 l0 = Layer0.getInstance(graph);
}
}
}
+ Collections.sort(result, new Comparator<Item>() {
+ @Override
+ public int compare(Item o1, Item o2) {
+ return o1.getName().compareTo(o2.getName());
+ }
+ });
return result;
}
- private static Item createItem(ReadGraph graph, Resource r) throws DatabaseException {
+ public static Item createItem(ReadGraph graph, Resource r) throws DatabaseException {
Layer0 l0 = Layer0.getInstance(graph);
Plant3D p3d = Plant3D.getInstance(graph);
String name = graph.getRelatedValue(r, l0.HasName);
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);
+ }
+ }
+ }
}