/// <summary> RunCommandPickPlane is a helper method for picking an existing surface to draw on </summary> /// <param name="mRhinoDoc"></param> /// <param name="mode"></param> /// <returns></returns> protected Result RunCommandPickPlane(RhinoDoc mRhinoDoc, RunMode mode) { //routine for picking an existing surface to draw on //please select a plane Rhino.DocObjects.ObjectType filter = Rhino.DocObjects.ObjectType.Surface; Rhino.DocObjects.ObjRef objref = null; Rhino.Commands.Result rc = Rhino.Input.RhinoGet.GetOneObject("Select surface", false, filter, out objref); if (rc != Rhino.Commands.Result.Success || objref == null) { return(rc); } Rhino.Geometry.Surface refSrf = objref.Surface(); refSrf.FrameAt(.5, .5, out plane1); Point3d pOrigin = refSrf.PointAt(1, 1); Point3d pY = refSrf.PointAt(0.5, 1); Point3d pX = refSrf.PointAt(1, 0.75); Vector3d vX = Rhino.Geometry.Point3d.Subtract(pX, pOrigin); Vector3d vY = Rhino.Geometry.Point3d.Subtract(pY, pOrigin); plane1 = new Plane(pOrigin, vX, vY); Rhino.DocObjects.RhinoObject rhobj = objref.Object(); rhobj.Select(false); mRhinoDoc.Objects.AddPoint(pOrigin); mRhinoDoc.Objects.AddPoint(pX); mRhinoDoc.Objects.AddPoint(pY); mRhinoDoc.Views.Redraw(); return(Result.Success); }
public static Rhino.Commands.Result Splop(Rhino.RhinoDoc doc) { ObjectType filter = SpaceMorphObjectFilter(); Rhino.DocObjects.ObjRef objref; Rhino.Commands.Result rc = Rhino.Input.RhinoGet.GetOneObject("Select object to splop", false, filter, out objref); if (rc != Rhino.Commands.Result.Success || objref == null) { return(rc); } Rhino.Geometry.Plane plane = doc.Views.ActiveView.ActiveViewport.ConstructionPlane(); Rhino.Input.Custom.GetObject go = new Rhino.Input.Custom.GetObject(); go.SetCommandPrompt("Surface to splop on"); go.GeometryFilter = Rhino.DocObjects.ObjectType.Surface; go.SubObjectSelect = false; go.EnablePreSelect(false, true); go.DeselectAllBeforePostSelect = false; go.Get(); if (go.CommandResult() != Rhino.Commands.Result.Success) { return(go.CommandResult()); } Rhino.DocObjects.ObjRef srfref = go.Object(0); double u, v; srfref.SurfaceParameter(out u, out v); Rhino.Geometry.Point2d uv = new Rhino.Geometry.Point2d(u, v); Rhino.Geometry.Morphs.SplopSpaceMorph morph = new Rhino.Geometry.Morphs.SplopSpaceMorph(plane, srfref.Surface(), uv); Rhino.Geometry.GeometryBase geom = objref.Geometry().Duplicate(); if (morph.Morph(geom)) { doc.Objects.Add(geom); doc.Views.Redraw(); } return(Rhino.Commands.Result.Success); }
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); }