Example #1
0
        static void OnDrawRhinoObjectProc(Guid am_id, IntPtr pConstRhinoObject, IntPtr pRhinoDisplayPipeline)
        {
            VisualAnalysisMode mode = FindLocal(am_id);

            if (mode != null)
            {
                var             rhobj = Rhino.DocObjects.RhinoObject.CreateRhinoObjectHelper(pConstRhinoObject);
                DisplayPipeline dp    = new DisplayPipeline(pRhinoDisplayPipeline);
                try
                {
                    Rhino.DocObjects.BrepObject brep = rhobj as Rhino.DocObjects.BrepObject;
                    if (brep != null)
                    {
                        mode.DrawBrepObject(brep, dp);
                        return;
                    }
                    Rhino.DocObjects.CurveObject curve = rhobj as Rhino.DocObjects.CurveObject;
                    if (curve != null)
                    {
                        mode.DrawCurveObject(curve, dp);
                        return;
                    }
                    Rhino.DocObjects.MeshObject mesh = rhobj as Rhino.DocObjects.MeshObject;
                    if (mesh != null)
                    {
                        mode.DrawMeshObject(mesh, dp);
                        return;
                    }
                    Rhino.DocObjects.PointCloudObject pointcloud = rhobj as Rhino.DocObjects.PointCloudObject;
                    if (pointcloud != null)
                    {
                        mode.DrawPointCloudObject(pointcloud, dp);
                        return;
                    }
                    Rhino.DocObjects.PointObject pointobj = rhobj as Rhino.DocObjects.PointObject;
                    if (pointobj != null)
                    {
                        mode.DrawPointObject(pointobj, dp);
                        return;
                    }
                }
                catch (Exception) { }
            }
        }
Example #2
0
 /// <summary>
 /// Draws one brep. Override this method to add your custom behavior.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="brep">A brep object.</param>
 /// <param name="pipeline">The current display pipeline.</param>
 protected virtual void DrawBrepObject(Rhino.DocObjects.BrepObject brep, DisplayPipeline pipeline)
 {
 }
Example #3
0
        private bool AddNodePoint(RhinoDoc doc, double offsetVal, double spacingVal)
        {
            bool result = false;

            try
            {
                int nodeLayerIndex = doc.Layers.Find("Nodes", true);
                if (nodeLayerIndex > -1)
                {
                    Rhino.DocObjects.RhinoObject[] rhobjs = doc.Objects.FindByLayer("A-FLOR");
                    for (int i = 0; i < rhobjs.Length; i++)
                    {
                        if (rhobjs[i] is Rhino.DocObjects.BrepObject)
                        {
                            Rhino.DocObjects.BrepObject brepObj = rhobjs[i] as Rhino.DocObjects.BrepObject;
                            Brep brep = brepObj.BrepGeometry;

                            foreach (BrepFace face in brep.Faces)
                            {
                                if (face.NormalAt(0, 0).Z == 1)
                                {
                                    Surface     offsetSurface = face.Offset(offsetVal, doc.ModelAbsoluteTolerance);
                                    BoundingBox bb            = offsetSurface.GetBoundingBox(true);
                                    int         colNum        = (int)Math.Floor((bb.Max.X - bb.Min.X) / spacingVal);
                                    int         rowNum        = (int)Math.Floor((bb.Max.Y - bb.Min.Y) / spacingVal);

                                    double remainderX = ((bb.Max.X - bb.Min.X) - (colNum * spacingVal)) / 2;
                                    double remainderY = ((bb.Max.Y - bb.Min.Y) - (rowNum * spacingVal)) / 2;

                                    int         nodeNum = 0;
                                    List <Guid> ids     = new List <Guid>();
                                    for (int col = 0; col < colNum; col++)
                                    {
                                        double xVal = bb.Min.X + remainderX + spacingVal * (col + 0.5);

                                        for (int row = 0; row < rowNum; row++)
                                        {
                                            double yVal = bb.Min.Y + remainderY + spacingVal * (row + 0.5);

                                            Point3d point = new Point3d(xVal, yVal, offsetVal);
                                            Rhino.DocObjects.ObjectAttributes attributes = new Rhino.DocObjects.ObjectAttributes();
                                            attributes.Name       = "Node_" + nodeNum;
                                            attributes.LayerIndex = nodeLayerIndex;

                                            Guid guid = doc.Objects.AddPoint(point, attributes);
                                            ids.Add(guid);
                                            nodeNum++;
                                        }
                                    }
                                    int index = doc.Groups.Add(ids);
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                RhinoApp.WriteLine("Cannot add node points. " + ex.Message);
            }
            return(result);
        }