package fi.vtt.simantics.processeditor.adapters; import javax.vecmath.Point3d; import javax.vecmath.Vector3d; import org.simantics.db.Graph; import org.simantics.db.Resource; import org.simantics.db.adaption.AdaptionException; import org.simantics.db.adaption.ResourceAdapter; import org.simantics.layer0.utils.EntityFactory; import org.simantics.layer0.utils.IEntity; import org.simantics.proconf.g3d.base.Constraint; import org.simantics.proconf.g3d.base.G3DTools; import fi.vtt.simantics.processeditor.ProcessResource; import fi.vtt.simantics.processeditor.common.PipingTools2; public class NozzleConstraintAdapter implements ResourceAdapter { @SuppressWarnings("unchecked") @Override public T adapt(Graph graph, Resource resource, Resource mia) throws AdaptionException { Constraint c = new Constraint(); assert(graph.isInstanceOf(resource, ProcessResource.plant3Dresource.Nozzle)); IEntity ent = EntityFactory.create(graph,resource); Vector3d dir = PipingTools2.getNozzleDirection(ent); Point3d center = G3DTools.getPoint(ent.getSingleRelatedObject(ProcessResource.g3dResource.HasWorldPosition)); c.points.add(center); c.dirs.add(dir); return (T) c; } }