X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.g3d.csg%2Fsrc%2Forg%2Fsimantics%2Fg3d%2Fcsg%2Fscenegraph2%2FTorusNode.java;fp=org.simantics.g3d.csg%2Fsrc%2Forg%2Fsimantics%2Fg3d%2Fcsg%2Fscenegraph2%2FTorusNode.java;h=a76a504515248201c0eba8f563eb8b7cf7a7957c;hb=87b3241ec277ba3d8e414b26186a032c9cdcaeed;hp=0000000000000000000000000000000000000000;hpb=1f0bcd66274375f2278d2e6c486cb28257a5f7b2;p=simantics%2F3d.git diff --git a/org.simantics.g3d.csg/src/org/simantics/g3d/csg/scenegraph2/TorusNode.java b/org.simantics.g3d.csg/src/org/simantics/g3d/csg/scenegraph2/TorusNode.java new file mode 100644 index 00000000..a76a5045 --- /dev/null +++ b/org.simantics.g3d.csg/src/org/simantics/g3d/csg/scenegraph2/TorusNode.java @@ -0,0 +1,50 @@ +package org.simantics.g3d.csg.scenegraph2; + +import org.jcae.opencascade.jni.TopoDS_Shape; +import org.simantics.g3d.csg.ontology.CSG; +import org.simantics.g3d.property.annotations.GetPropertyValue; +import org.simantics.g3d.property.annotations.SetPropertyValue; +import org.simantics.objmap.graph.annotations.GraphType; +import org.simantics.objmap.graph.annotations.RelatedGetValue; +import org.simantics.objmap.graph.annotations.RelatedSetValue; +import org.simantics.opencascade.OccTriangulator; + +@GraphType(CSG.URIs.Torus) +public class TorusNode extends CSGnode { + + private double r1 = 1.0; + private double r2 = 1.0; + + + @RelatedSetValue(CSG.URIs.HasMinorRadius) + @SetPropertyValue(CSG.URIs.HasMinorRadius) + public void setR1(double r1) { + this.r1 = r1; + firePropertyChanged(CSG.URIs.HasMinorRadius); + } + + @RelatedSetValue(CSG.URIs.HasMajorRadius) + @SetPropertyValue(CSG.URIs.HasMajorRadius) + public void setR2(double r2) { + this.r2 = r2; + firePropertyChanged(CSG.URIs.HasMajorRadius); + } + + @RelatedGetValue(CSG.URIs.HasMinorRadius) + @GetPropertyValue(value=CSG.URIs.HasMinorRadius, name="Minor Radius") + public double getR1() { + return r1; + } + + @RelatedGetValue(CSG.URIs.HasMajorRadius) + @GetPropertyValue(value=CSG.URIs.HasMajorRadius, name="Major Radius") + public double getR2() { + return r2; + } + + @Override + public TopoDS_Shape getBaseGeometry() { + return OccTriangulator.makeTorus(new double[] { 0.0, 0.0, 0.0 }, new double[] { 0.0, 1.0, 0.0 }, r2, r1); + } + +}