コード例 #1
0
    public static Result IsPlanarSurfaceInPlane(RhinoDoc doc)
    {
        ObjRef obj_ref;
        var    rc = RhinoGet.GetOneObject("select surface", true, ObjectType.Surface, out obj_ref);

        if (rc != Result.Success)
        {
            return(rc);
        }
        var surface = obj_ref.Surface();

        Point3d[] corners;
        rc = RhinoGet.GetRectangle(out corners);
        if (rc != Result.Success)
        {
            return(rc);
        }

        var plane = new Plane(corners[0], corners[1], corners[2]);

        var is_or_isnt = " not ";

        if (IsSurfaceInPlane(surface, plane, doc.ModelAbsoluteTolerance))
        {
            is_or_isnt = "";
        }

        RhinoApp.WriteLine("Surface is{0} in plane.", is_or_isnt);
        return(Result.Success);
    }
コード例 #2
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            // Pick a mesh
            ObjRef obj_ref;
            Result rc = RhinoGet.GetOneObject("Select mesh", false, ObjectType.Mesh, out obj_ref);

            if (rc != Result.Success)
            {
                return(rc);
            }

            Rhino.Geometry.Mesh mesh = obj_ref.Mesh();
            if (null == mesh)
            {
                return(Result.Failure);
            }

            // Pick a point that is contrained to the mesh
            GetPoint gp = new GetPoint();

            gp.SetCommandPrompt("Pick point on mesh");
            gp.Constrain(mesh, false);
            gp.Get();
            if (gp.CommandResult() != Result.Success)
            {
                return(gp.CommandResult());
            }

            Point3d point = gp.Point();

            doc.Objects.AddPoint(point);
            doc.Views.Redraw();

            return(Result.Success);
        }
コード例 #3
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            const ObjectType filter = ObjectType.AnyObject;
            ObjRef           objref;
            var rc = RhinoGet.GetOneObject("Select object", false, filter, out objref);

            if (rc != Result.Success || null == objref)
            {
                return(rc);
            }

            var obj = objref.Object();

            if (null == obj)
            {
                return(Result.Failure);
            }

            var ud = obj.Attributes.UserData.Find(typeof(SampleCsUserDataObject)) as SampleCsUserDataObject;

            if (null != ud)
            {
                obj.Attributes.UserData.Remove(ud);
            }

            return(Result.Success);
        }
コード例 #4
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            ObjRef sRef;
            Result r = RhinoGet.GetOneObject("Pick closed curve", false, ObjectType.Curve, out sRef);

            if (r != Result.Success || null == sRef)
            {
                return(r);
            }

            RhinoObject obj = sRef.Object();

            obj.Attributes.SetUserString("Name", "Concrete");
            Curve selectedCurve = sRef.Curve();


            //if the curve is not closed do nothing
            if (!selectedCurve.IsClosed)
            {
                Rhino.RhinoApp.WriteLine("The curve was not closed!!");
                return(Result.Success);
            }

            List <Brep>  breps        = new List <Brep>();
            List <Curve> cuttedCurves = CurveAndBrepManipulation.cutCurve(selectedCurve, Plane.WorldXY, Axis.XAxis);

            foreach (Curve curve in cuttedCurves)
            {
                breps.AddRange(Brep.CreatePlanarBreps(curve));
            }


            DrawAndSaveUserAttr(breps, doc, obj);
            return(Result.Success);
        }
コード例 #5
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            ObjRef obj_ref;
            var    rc = RhinoGet.GetOneObject("Select object", false, ObjectType.AnyObject, out obj_ref);

            if (rc != Result.Success)
            {
                return(rc);
            }
            var  rhino_object = obj_ref.Object();
            var  color        = rhino_object.Attributes.ObjectColor;
            bool b            = Rhino.UI.Dialogs.ShowColorDialog(ref color);

            if (!b)
            {
                return(Result.Cancel);
            }

            rhino_object.Attributes.ObjectColor = color;
            rhino_object.Attributes.ColorSource = ObjectColorSource.ColorFromObject;
            rhino_object.CommitChanges();

            // an object's color attributes can also be specified
            // when the object is added to Rhino
            var sphere     = new Sphere(Point3d.Origin, 5.0);
            var attributes = new ObjectAttributes();

            attributes.ObjectColor = Color.CadetBlue;
            attributes.ColorSource = ObjectColorSource.ColorFromObject;
            doc.Objects.AddSphere(sphere, attributes);

            doc.Views.Redraw();
            return(Result.Success);
        }
コード例 #6
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            ObjRef obj_ref;
            var    rc = RhinoGet.GetOneObject(
                "Select edge curve", false, ObjectType.EdgeFilter, out obj_ref);

            if (rc != Result.Success)
            {
                return(rc);
            }
            var edge = obj_ref.Edge();

            var face_idxs        = edge.AdjacentFaces();
            var edge_owning_brep = edge.Brep;

            foreach (var idx in face_idxs)
            {
                var face      = edge_owning_brep.Faces[idx];
                var face_copy = face.DuplicateFace(true);
                var id        = doc.Objects.AddBrep(face_copy);
                doc.Objects.Find(id).Select(true);
            }
            doc.Views.Redraw();
            return(Result.Success);
        }
コード例 #7
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            const ObjectType filter = ObjectType.AnyObject;
            ObjRef           objref;
            var rc = RhinoGet.GetOneObject("Select object", false, filter, out objref);

            if (rc != Result.Success || null == objref)
            {
                return(rc);
            }

            var obj = objref.Object();

            if (null == obj)
            {
                return(Result.Failure);
            }

            var ud = obj.Attributes.UserData.Find(typeof(SampleCsUserDataObject)) as SampleCsUserDataObject;

            if (null != ud)
            {
                var gs = new GetString();
                gs.SetCommandPrompt("Modify object notes");
                gs.GetLiteralString();
                if (gs.CommandResult() != Result.Success)
                {
                    return(gs.CommandResult());
                }

                ud.Notes = gs.StringResult();
            }

            return(Result.Success);
        }
コード例 #8
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            // get mesh
            var rc = RhinoGet.GetOneObject("Pick mesh", false, ObjectType.Mesh, out var objRef);

            if (rc != Result.Success)
            {
                return(rc);
            }

            var mesh = objRef.Mesh();

            doc.Views.RedrawEnabled = false;

            var pMesh = mesh.ToPlanktonMeshWithNgons();

            for (int i = pMesh.Faces.Count - 1; i >= 0; i--)
            {
                if (pMesh.Faces.GetFaceVertices(i).Length == 3)
                {
                    pMesh.Faces.RemoveFace(i);
                }
            }

            pMesh.Compact();

            mesh = pMesh.ToRhinoMeshWithNgons();
            doc.Objects.Replace(objRef, mesh);

            doc.Views.RedrawEnabled = true;
            doc.Views.Redraw();

            return(Result.Success);
        }
コード例 #9
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            var rc = RhinoGet.GetOneObject("Select object", false, ObjectType.AnyObject, out var objref);

            if (rc != Result.Success)
            {
                return(rc);
            }

            var obj = objref.Object();

            if (null == obj)
            {
                return(Result.Failure);
            }

            if (!(obj.Attributes.UserData.Find(typeof(SampleCsCustomUserData)) is SampleCsCustomUserData ud))
            {
                var rand = new Random();
                ud = new SampleCsCustomUserData
                {
                    Data =
                    {
                        X = rand.NextDouble(),
                        Y = rand.NextDouble(),
                        Z = rand.NextDouble()
                    }
                };
                obj.Attributes.UserData.Add(ud);
            }

            RhinoApp.WriteLine("{0} = {1}", ud.Description, ud.Data);

            return(Result.Success);
        }
コード例 #10
0
    public static Result ModifyLightColor(RhinoDoc doc)
    {
        ObjRef obj_ref;
        var    rc = RhinoGet.GetOneObject("Select light to change color", true,
                                          ObjectType.Light, out obj_ref);

        if (rc != Result.Success)
        {
            return(rc);
        }
        var light = obj_ref.Light();

        if (light == null)
        {
            return(Result.Failure);
        }

        var diffuse_color = light.Diffuse;

        if (Dialogs.ShowColorDialog(ref diffuse_color))
        {
            light.Diffuse = diffuse_color;
        }

        doc.Lights.Modify(obj_ref.ObjectId, light);
        return(Result.Success);
    }
コード例 #11
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            // get mesh
            var rc = RhinoGet.GetOneObject("Pick mesh", false, ObjectType.Mesh, out var objRef);

            if (rc != Result.Success)
            {
                return(rc);
            }

            var mesh = objRef.Mesh();

            doc.Views.RedrawEnabled = false;

            for (int i = 0; i < mesh.Vertices.Count; i++)
            {
                doc.Objects.AddTextDot(i.ToString(), mesh.Vertices[i]);
            }

            var faceAttributes = new ObjectAttributes
            {
                ObjectColor = Color.Blue, ColorSource = ObjectColorSource.ColorFromObject
            };

            for (int i = 0; i < mesh.Faces.Count; i++)
            {
                doc.Objects.AddTextDot(i.ToString(), mesh.Faces.GetFaceCenter(i), faceAttributes);
            }

            doc.Views.RedrawEnabled = true;
            doc.Views.Redraw();

            return(Result.Success);
        }
コード例 #12
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            const ObjectType filter = ObjectType.AnyObject;
            ObjRef           objref;
            var rc = RhinoGet.GetOneObject("Select object", false, filter, out objref);

            if (rc != Result.Success || null == objref)
            {
                return(rc);
            }

            var obj = objref.Object();

            if (null == obj)
            {
                return(Result.Failure);
            }

            var userdata = obj.Attributes.UserData.Find(typeof(SampleCsUserDataObject)) as SampleCsUserDataObject;

            if (null != userdata)
            {
                RhinoApp.WriteLine("{0} = {1}", userdata.Description, userdata.Notes);
            }
            else
            {
                RhinoApp.WriteLine("SampleCsUserData not found.");
            }

            return(Result.Success);
        }
コード例 #13
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            ObjRef obj_ref;
            var    rc = RhinoGet.GetOneObject("Select object to change name", true, ObjectType.AnyObject, out obj_ref);

            if (rc != Result.Success)
            {
                return(rc);
            }
            var rhino_object = obj_ref.Object();

            var new_object_name = "";

            rc = RhinoGet.GetString("New object name", true, ref new_object_name);
            if (rc != Result.Success)
            {
                return(rc);
            }
            if (string.IsNullOrWhiteSpace(new_object_name))
            {
                return(Result.Nothing);
            }

            if (rhino_object.Name != new_object_name)
            {
                rhino_object.Attributes.Name = new_object_name;
                rhino_object.CommitChanges();
            }

            return(Result.Success);
        }
コード例 #14
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            if (m_conduit.Enabled)
            {
                m_conduit.Enabled = false;
            }
            else
            {
                if (RhinoGet.GetOneObject("Select surface", false, ObjectType.Surface, out var obj) == Result.Success)
                {
                    m_conduit.Points.Clear();
                    var surface  = obj.Surface();
                    var u_domain = surface.Domain(0);
                    u_domain.MakeIncreasing();
                    var v_domain = surface.Domain(1);
                    v_domain.MakeIncreasing();
                    const int count = 10;
                    for (var i = 0; i < count + 1; i++)
                    {
                        for (var j = 0; j < count + 1; j++)
                        {
                            var u     = u_domain.Min + u_domain.Length * i / count;
                            var v     = v_domain.Min + v_domain.Length * j / count;
                            var point = surface.PointAt(u, v);
                            m_conduit.Points.Add(point);
                        }
                    }
                    m_conduit.Enabled = true;
                }
            }

            doc.Views.Redraw();

            return(Result.Success);
        }
コード例 #15
0
    public static Result ProjectPointsToMeshesEx(RhinoDoc doc)
    {
        ObjRef obj_ref;
        var    rc = RhinoGet.GetOneObject("mesh", false, ObjectType.Mesh, out obj_ref);

        if (rc != Result.Success)
        {
            return(rc);
        }
        var mesh = obj_ref.Mesh();

        ObjRef[] obj_ref_pts;
        rc = RhinoGet.GetMultipleObjects("points", false, ObjectType.Point, out obj_ref_pts);
        if (rc != Result.Success)
        {
            return(rc);
        }
        var points = new List <Point3d>();

        foreach (var obj_ref_pt in obj_ref_pts)
        {
            var pt = obj_ref_pt.Point().Location;
            points.Add(pt);
        }

        int[] indices;
        var   prj_points = Intersection.ProjectPointsToMeshesEx(new[] { mesh }, points, new Vector3d(0, 1, 0), 0, out indices);

        foreach (var prj_pt in prj_points)
        {
            doc.Objects.AddPoint(prj_pt);
        }
        doc.Views.Redraw();
        return(Result.Success);
    }
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            ObjRef object_ref;
            var    rc = RhinoGet.GetOneObject("Select curve for stacked control point test", false, ObjectType.Curve, out object_ref);

            if (rc != Result.Success)
            {
                return(rc);
            }

            var nc = object_ref.Curve() as NurbsCurve;

            if (null == nc)
            {
                RhinoApp.WriteLine("Curve is not a NURBS curve.");
                return(Result.Success);
            }

            var b = IsStackedControlPointsCurve(nc);

            if (b)
            {
                RhinoApp.WriteLine("NURBS curve has stacked control points.");
            }
            else
            {
                RhinoApp.WriteLine("NURBS curve does not have stacked control points.");
            }

            return(Result.Success);
        }
コード例 #17
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            Rhino.DocObjects.ObjRef objref;
            var rc = RhinoGet.GetOneObject("Select Curve", false, ObjectType.Curve, out objref);

            if (rc != Result.Success)
            {
                return(rc);
            }
            var curve = objref.Curve();

            var view  = doc.Views.ActiveView;
            var plane = view.ActiveViewport.ConstructionPlane();
            // Create a construction plane aligned bounding box
            var bbox = curve.GetBoundingBox(plane);

            if (bbox.IsDegenerate(doc.ModelAbsoluteTolerance) > 0)
            {
                RhinoApp.WriteLine("the curve's bounding box is degenerate (flat) in at least one direction so a box cannot be created.");
                return(Result.Failure);
            }
            var brep = Brep.CreateFromBox(bbox);

            doc.Objects.AddBrep(brep);
            doc.Views.Redraw();
            return(Result.Success);
        }
コード例 #18
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            ObjRef object_ref;

            Result res2 = RhinoGet.GetOneObject("Select FANCY curve", false, ObjectType.Curve, out object_ref);

            // RhinoGet takes 5 arguments - prompt as a string, press enter boolean (does not allow the user to press
            // enter), geometry filter to allow them to only select certain types of geometry, then, most importantly
            // we are going to get our object reference back!!  Via the 'out'.  This means that we are passing this
            // variable by reference and not by value.  Therefore, the value will be able to change, so we can access
            // it outside of this method.

            Curve curve = object_ref.Curve();

            if (null == curve)
            {
                return(Result.Failure);
            }

            // this checks if the curve is zero, so it can then return a failure result
            // THERE are a lot of ways to select objects.  Using the ObjRef class is a very powerful way to select
            // geometry.
            // You will see in the future that whenever we draw something to the document, thereby adding it to memory,
            // we will also be adding a Rhino object to it.

            return(Result.Success);
        }
コード例 #19
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            ObjRef obj_ref;
            var    rc = RhinoGet.GetOneObject("Select light to change color", true,
                                              ObjectType.Light, out obj_ref);

            if (rc != Result.Success)
            {
                return(rc);
            }
            var light = obj_ref.Light();

            if (light == null)
            {
                return(Result.Failure);
            }

            var diffuse_color = light.Diffuse;

            if (Dialogs.ShowColorDialog(ref diffuse_color))
            {
                light.Diffuse = diffuse_color;
            }

            doc.Lights.Modify(obj_ref.ObjectId, light);
            return(Result.Success);
        }
コード例 #20
0
    public static Rhino.Commands.Result Sweep1(Rhino.RhinoDoc doc)
    {
        Rhino.DocObjects.ObjRef rail_ref;
        var rc = RhinoGet.GetOneObject("Select rail curve", false, Rhino.DocObjects.ObjectType.Curve, out rail_ref);

        if (rc != Rhino.Commands.Result.Success)
        {
            return(rc);
        }

        var rail_crv = rail_ref.Curve();

        if (rail_crv == null)
        {
            return(Rhino.Commands.Result.Failure);
        }

        var gx = new Rhino.Input.Custom.GetObject();

        gx.SetCommandPrompt("Select cross section curves");
        gx.GeometryFilter = Rhino.DocObjects.ObjectType.Curve;
        gx.EnablePreSelect(false, true);
        gx.GetMultiple(1, 0);
        if (gx.CommandResult() != Rhino.Commands.Result.Success)
        {
            return(gx.CommandResult());
        }

        var cross_sections = new List <Rhino.Geometry.Curve>();

        for (int i = 0; i < gx.ObjectCount; i++)
        {
            var crv = gx.Object(i).Curve();
            if (crv != null)
            {
                cross_sections.Add(crv);
            }
        }
        if (cross_sections.Count < 1)
        {
            return(Rhino.Commands.Result.Failure);
        }

        var sweep = new Rhino.Geometry.SweepOneRail();

        sweep.AngleToleranceRadians = doc.ModelAngleToleranceRadians;
        sweep.ClosedSweep           = false;
        sweep.SweepTolerance        = doc.ModelAbsoluteTolerance;
        sweep.SetToRoadlikeTop();
        var breps = sweep.PerformSweep(rail_crv, cross_sections);

        for (int i = 0; i < breps.Length; i++)
        {
            doc.Objects.AddBrep(breps[i]);
        }
        doc.Views.Redraw();
        return(Rhino.Commands.Result.Success);
    }
コード例 #21
0
    public static Result NurbsSurfaceIncreaseDegree(RhinoDoc doc)
    {
        ObjRef obj_ref;
        var    rc = RhinoGet.GetOneObject(
            "Select surface", false, ObjectType.Surface, out obj_ref);

        if (rc != Result.Success)
        {
            return(rc);
        }
        if (obj_ref == null)
        {
            return(Result.Failure);
        }
        var surface = obj_ref.Surface();

        if (surface == null)
        {
            return(Result.Failure);
        }
        var nurbs_surface = surface.ToNurbsSurface();

        int new_u_degree = -1;

        rc = RhinoGet.GetInteger(string.Format("New U degree <{0}...11>", nurbs_surface.Degree(0)), true, ref new_u_degree,
                                 nurbs_surface.Degree(0), 11);
        if (rc != Result.Success)
        {
            return(rc);
        }

        int new_v_degree = -1;

        rc = RhinoGet.GetInteger(string.Format("New V degree <{0}...11>", nurbs_surface.Degree(1)), true, ref new_v_degree,
                                 nurbs_surface.Degree(1), 11);
        if (rc != Result.Success)
        {
            return(rc);
        }

        rc = Result.Failure;
        if (nurbs_surface.IncreaseDegreeU(new_u_degree))
        {
            if (nurbs_surface.IncreaseDegreeV(new_v_degree))
            {
                if (doc.Objects.Replace(obj_ref.ObjectId, nurbs_surface))
                {
                    rc = Result.Success;
                }
            }
        }

        RhinoApp.WriteLine("Result: {0}", rc.ToString());
        doc.Views.Redraw();
        return(rc);
    }
コード例 #22
0
        //PickPoint 選點功能
        public Result RunCommand(RhinoDoc doc)
        {
            ObjRef obj_ref;
            var    rc = RhinoGet.GetOneObject("Select point", false, ObjectType.Point, out obj_ref);

            if (rc != Result.Success)
            {
                return(rc);
            }
            //選擇單點
            var point = obj_ref.Point();

            RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}",
                               point.Location.X,
                               point.Location.Y,
                               point.Location.Z);

            //選擇多點
            ObjRef[] obj_refs;
            rc = RhinoGet.GetMultipleObjects("Select point", false, ObjectType.Point, out obj_refs);
            if (rc != Result.Success)
            {
                return(rc);
            }

            //欄位名稱
            TxtRes.Text = "BC,UR1,UR2,UR3\n";
            int i = 0;

            //清空
            CbPointX.Items.Clear();
            CbPointY.Items.Clear();
            CbPointZ.Items.Clear();

            foreach (var o_ref in obj_refs)
            {
                point = o_ref.Point();
                RhinoApp.WriteLine("Point: x:{0}, y:{1}, z:{2}",
                                   point.Location.X,
                                   point.Location.Y,
                                   point.Location.Z);

                i++;
                //迭代
                TxtRes.Text += TxtInputBC.Text + i + "," +
                               point.Location.X + "," +
                               point.Location.Y + "," +
                               point.Location.Z + ",\n";

                CbPointX.Items.Add(point.Location.X);
                CbPointY.Items.Add(point.Location.Y);
                CbPointZ.Items.Add(point.Location.Z);
            }
            return(Result.Success);
        }
コード例 #23
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            ObjRef obj_ref;
            var    rc = RhinoGet.GetOneObject("Select curve for radius dimension",
                                              true, ObjectType.Curve, out obj_ref);

            if (rc != Result.Success)
            {
                return(rc);
            }
            double curve_parameter;
            var    curve = obj_ref.CurveParameter(out curve_parameter);

            if (curve == null)
            {
                return(Result.Failure);
            }

            if (curve.IsLinear() || curve.IsPolyline())
            {
                RhinoApp.WriteLine("Curve must be non-linear.");
                return(Result.Nothing);
            }

            // in this example just deal with planar curves
            if (!curve.IsPlanar())
            {
                RhinoApp.WriteLine("Curve must be planar.");
                return(Result.Nothing);
            }

            var point_on_curve   = curve.PointAt(curve_parameter);
            var curvature_vector = curve.CurvatureAt(curve_parameter);
            var len = curvature_vector.Length;

            if (len < RhinoMath.SqrtEpsilon)
            {
                RhinoApp.WriteLine("Curve is almost linear and therefore has no curvature.");
                return(Result.Nothing);
            }

            var   center = point_on_curve + (curvature_vector / (len * len));
            Plane plane;

            curve.TryGetPlane(out plane);
            var radial_dimension =
                new RadialDimension(center, point_on_curve, plane.XAxis, plane.Normal, 5.0);

            doc.Objects.AddRadialDimension(radial_dimension);
            doc.Views.Redraw();
            return(Result.Success);
        }
コード例 #24
0
    public static Result ReparameterizeCurve(RhinoDoc doc)
    {
        ObjRef obj_ref;
        var    rc = RhinoGet.GetOneObject("Select curve to reparameterize", false, ObjectType.Curve, out obj_ref);

        if (rc != Result.Success)
        {
            return(rc);
        }
        var curve = obj_ref.Curve();

        if (curve == null)
        {
            return(Result.Failure);
        }

        double domain_start = 0;

        rc = RhinoGet.GetNumber("Domain start", false, ref domain_start);
        if (rc != Result.Success)
        {
            return(rc);
        }

        double domain_end = 0;

        rc = RhinoGet.GetNumber("Domain end", false, ref domain_end);
        if (rc != Result.Success)
        {
            return(rc);
        }

        if (Math.Abs(curve.Domain.T0 - domain_start) < RhinoMath.ZeroTolerance &&
            Math.Abs(curve.Domain.T1 - domain_end) < RhinoMath.ZeroTolerance)
        {
            return(Result.Nothing);
        }

        var curve_copy = curve.DuplicateCurve();

        curve_copy.Domain = new Interval(domain_start, domain_end);
        if (!doc.Objects.Replace(obj_ref, curve_copy))
        {
            return(Result.Failure);
        }
        else
        {
            doc.Views.Redraw();
            return(Result.Success);
        }
    }
コード例 #25
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            const ObjectType filter = ObjectType.AnyObject;
            ObjRef           objref;
            var rc = RhinoGet.GetOneObject("Select object", false, filter, out objref);

            if (rc != Result.Success || null == objref)
            {
                return(rc);
            }

            var obj = objref.Object();

            if (null == obj)
            {
                return(Result.Failure);
            }

            var userdata = obj.Attributes.UserData.Find(typeof(SampleCsUserDataObject)) as SampleCsUserDataObject;

            if (null == userdata)
            {
                RhinoApp.WriteLine("SampleCsUserData not found.");
                return(Result.Nothing);
            }

            var gs = new GetString();

            gs.SetCommandPrompt("Modify object notes");
            gs.GetLiteralString();
            if (gs.CommandResult() != Result.Success)
            {
                return(gs.CommandResult());
            }

            // To support undo, make a copy of the attributes
            // instead of modifying the attributes directly.
            var new_attributes = obj.Attributes.Duplicate();

            userdata = new_attributes.UserData.Find(typeof(SampleCsUserDataObject)) as SampleCsUserDataObject;
            if (null == userdata)
            {
                return(Result.Failure);
            }

            userdata.Notes = gs.StringResult();
            doc.Objects.ModifyAttributes(obj, new_attributes, true);

            return(Result.Success);
        }
コード例 #26
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            var    filter = ObjectType.Surface | ObjectType.PolysrfFilter;
            ObjRef objref;
            var    rc = RhinoGet.GetOneObject("Select surface or polysurface", false, filter, out objref);

            if (rc != Result.Success || objref == null)
            {
                return(rc);
            }

            var rhobj = objref.Object();
            var brep  = objref.Brep();

            if (rhobj == null || brep == null)
            {
                return(Result.Failure);
            }

            rhobj.Select(false);

            var curves = new List <Curve>();

            foreach (var edge in brep.Edges)
            {
                // Find only the naked edges
                if (edge.Valence == EdgeAdjacency.Naked)
                {
                    var crv = edge.DuplicateCurve();
                    if (crv.IsLinear())
                    {
                        crv = new LineCurve(crv.PointAtStart, crv.PointAtEnd);
                    }
                    curves.Add(crv);
                }
            }

            var tol    = 2.1 * doc.ModelAbsoluteTolerance;
            var output = Curve.JoinCurves(curves, tol);

            for (var i = 0; i < output.Length; i++)
            {
                var id = doc.Objects.AddCurve(output[i]);
                doc.Objects.Select(id);
            }

            doc.Views.Redraw();
            return(Result.Success);
        }
コード例 #27
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            // get mesh
            var rc = RhinoGet.GetOneObject("Pick mesh", false, ObjectType.Mesh, out var objRef);

            if (rc != Result.Success)
            {
                return(rc);
            }

            var mesh = objRef.Mesh();

            // extract attributes from picked mesh
            var attributes = objRef.Object().Attributes;

            // delete picked mesh
            doc.Objects.Delete(objRef, true);

            // redraw
            doc.Views.Redraw();

            // Test for runmode and start dialog
            OperateOnMeshDialog dialog = null;

            if (mode == RunMode.Interactive)
            {
                dialog = new OperateOnMeshDialog(mesh);
                dialog.RestorePosition();
                var dialog_rc = dialog.ShowSemiModal(doc, RhinoEtoApp.MainWindow);
                dialog.SavePosition();
                if (dialog_rc == DialogResult.Ok)
                {
                    rc = Result.Success;
                }
            }

            else
            {
                RhinoApp.WriteLine($"Scriptable version of {EnglishName} not implemented.");
                doc.Objects.AddMesh(mesh, attributes);
                return(rc);
            }

            doc.Objects.AddMesh(dialog.OperationResult, attributes);
            doc.Views.Redraw();

            return(rc);
        }
コード例 #28
0
ファイル: XTransformation.cs プロジェクト: danieldepoe/csharp
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            var rc = RhinoGet.GetOneObject("Select brep to transform", true, Rhino.DocObjects.ObjectType.Brep, out ObjRef rhobj);

            if (rc != Rhino.Commands.Result.Success)
            {
                return(rc);
            }

            //simple translation transformation
            var xform = Rhino.Geometry.Transform.Translation(18, 25, 50);

            doc.Objects.Transform(rhobj, xform, true);
            doc.Views.Redraw();
            return(Rhino.Commands.Result.Success);
        }
コード例 #29
0
        protected override Result RunCommand(RhinoDoc doc, RunMode mode)
        {
            ObjRef objref;
            var    rc = RhinoGet.GetOneObject("Select object to move", false, ObjectType.AnyObject, out objref);

            if (rc != Result.Success)
            {
                return(rc);
            }
            if (null == objref)
            {
                return(Result.Failure);
            }

            Point3d first_point;

            rc = RhinoGet.GetPoint("Point to move from", false, out first_point);
            if (rc != Result.Success)
            {
                return(rc);
            }

            var gp = new GetPoint();

            gp.SetCommandPrompt("Point to move to");
            gp.SetBasePoint(first_point, true);
            gp.DrawLineFromPoint(first_point, true);
            gp.Get();
            rc = gp.CommandResult();
            if (rc != Result.Success)
            {
                return(rc);
            }

            var second_point = gp.Point();

            var dir = second_point - first_point;

            if (dir.Length > RhinoMath.ZeroTolerance)
            {
                var xform = Transform.Translation(dir);
                doc.Objects.Transform(objref, xform, true);
                doc.Views.Redraw();
            }

            return(rc);
        }
コード例 #30
0
    public static Rhino.Commands.Result TransformBrep(Rhino.RhinoDoc doc)
    {
        Rhino.DocObjects.ObjRef rhobj;
        var rc = RhinoGet.GetOneObject("Select brep", true, Rhino.DocObjects.ObjectType.Brep, out rhobj);

        if (rc != Rhino.Commands.Result.Success)
        {
            return(rc);
        }

        // Simple translation transformation
        var xform = Rhino.Geometry.Transform.Translation(18, -18, 25);

        doc.Objects.Transform(rhobj, xform, true);
        doc.Views.Redraw();
        return(Rhino.Commands.Result.Success);
    }