Ejemplo n.º 1
0
        public void MorphGraph()
        {
            List <Point3d> vs = new List <Point3d>();

            //TODO pass corners list in input Mesh.
            Point3d a0 = spaceGraph.Vertices[0].Position;
            Point3d a1 = spaceGraph.Vertices[1].Position;
            Point3d a2 = spaceGraph.Vertices[3].Position;
            Point3d a3 = spaceGraph.Vertices[2].Position;

            Point3d b0 = inputMesh.Vertices[0].Position;
            Point3d b1 = inputMesh.Vertices[1].Position;
            Point3d b2 = inputMesh.Vertices[3].Position;
            Point3d b3 = inputMesh.Vertices[2].Position;

            Surface sA = (Surface)Rhino.Geometry.NurbsSurface.CreateFromCorners(a0, a1, a2, a3);
            Surface sB = (Surface)Rhino.Geometry.NurbsSurface.CreateFromCorners(b0, b1, b2, b3);

            Rhino.Geometry.Morphs.SporphSpaceMorph sporph = new Rhino.Geometry.Morphs.SporphSpaceMorph(sA, sB, new Point2d(0.5, 0.5), new Point2d(0.5, 0.5));

            foreach (var v in spaceGraph.Vertices)
            {
                v.Position = sporph.MorphPoint(v.Position);
            }
        }
Ejemplo n.º 2
0
    public static Rhino.Commands.Result Sporph(Rhino.RhinoDoc doc)
    {
        ObjectType filter = SpaceMorphObjectFilter();

        Rhino.DocObjects.ObjRef objref;
        Rhino.Commands.Result   rc = Rhino.Input.RhinoGet.GetOneObject("Select object to sporph", false, filter, out objref);
        if (rc != Rhino.Commands.Result.Success || objref == null)
        {
            return(rc);
        }

        Rhino.Input.Custom.GetObject go0 = new Rhino.Input.Custom.GetObject();
        go0.SetCommandPrompt("Source surface");
        go0.GeometryFilter  = Rhino.DocObjects.ObjectType.Surface;
        go0.SubObjectSelect = false;
        go0.EnablePreSelect(false, true);
        go0.DeselectAllBeforePostSelect = false;
        go0.Get();
        if (go0.CommandResult() != Rhino.Commands.Result.Success)
        {
            return(go0.CommandResult());
        }

        Rhino.DocObjects.ObjRef srf0_ref = go0.Object(0);

        Rhino.Input.Custom.GetObject go1 = new Rhino.Input.Custom.GetObject();
        go1.SetCommandPrompt("Source surface");
        go1.GeometryFilter  = Rhino.DocObjects.ObjectType.Surface;
        go1.SubObjectSelect = false;
        go1.EnablePreSelect(false, true);
        go1.DeselectAllBeforePostSelect = false;
        go1.Get();
        if (go1.CommandResult() != Rhino.Commands.Result.Success)
        {
            return(go1.CommandResult());
        }

        Rhino.DocObjects.ObjRef srf1_ref = go1.Object(0);

        Rhino.Geometry.Morphs.SporphSpaceMorph morph = new Rhino.Geometry.Morphs.SporphSpaceMorph(srf0_ref.Surface(), srf1_ref.Surface());

        Rhino.Geometry.GeometryBase geom = objref.Geometry().Duplicate();
        if (morph.Morph(geom))
        {
            doc.Objects.Add(geom);
            doc.Views.Redraw();
        }

        return(Rhino.Commands.Result.Success);
    }
Ejemplo n.º 3
0
    public static Rhino.Commands.Result Sporph(Rhino.RhinoDoc doc)
    {
        ObjectType filter = SpaceMorphObjectFilter();
        Rhino.DocObjects.ObjRef objref;
        Rhino.Commands.Result rc = Rhino.Input.RhinoGet.GetOneObject("Select object to sporph", false, filter, out objref);
        if (rc != Rhino.Commands.Result.Success || objref == null)
          return rc;

        Rhino.Input.Custom.GetObject go0 = new Rhino.Input.Custom.GetObject();
        go0.SetCommandPrompt("Source surface");
        go0.GeometryFilter = Rhino.DocObjects.ObjectType.Surface;
        go0.SubObjectSelect = false;
        go0.EnablePreSelect(false, true);
        go0.DeselectAllBeforePostSelect = false;
        go0.Get();
        if (go0.CommandResult() != Rhino.Commands.Result.Success)
          return go0.CommandResult();

        Rhino.DocObjects.ObjRef srf0_ref = go0.Object(0);

        Rhino.Input.Custom.GetObject go1 = new Rhino.Input.Custom.GetObject();
        go1.SetCommandPrompt("Source surface");
        go1.GeometryFilter = Rhino.DocObjects.ObjectType.Surface;
        go1.SubObjectSelect = false;
        go1.EnablePreSelect(false, true);
        go1.DeselectAllBeforePostSelect = false;
        go1.Get();
        if (go1.CommandResult() != Rhino.Commands.Result.Success)
          return go1.CommandResult();

        Rhino.DocObjects.ObjRef srf1_ref = go1.Object(0);

        Rhino.Geometry.Morphs.SporphSpaceMorph morph = new Rhino.Geometry.Morphs.SporphSpaceMorph(srf0_ref.Surface(), srf1_ref.Surface());

        Rhino.Geometry.GeometryBase geom = objref.Geometry().Duplicate();
        if (morph.Morph(geom))
        {
          doc.Objects.Add(geom);
          doc.Views.Redraw();
        }

        return Rhino.Commands.Result.Success;
    }