public Wall BrepToSpeckleWall(RH.Brep brep) { Wall wall = null; BoundingBox brepBox = brep.GetBoundingBox(false); double height = brepBox.Max.Z - brepBox.Min.Z; // extract height var bottomCurves = GetSurfaceBrepEdges(brep, getBottom: true); // extract baseline var intCurves = GetSurfaceBrepEdges(brep, getInterior: true); // extract openings List <Base> openings = new List <Base>(); if (intCurves != null) { foreach (ICurve crv in intCurves) { openings.Add(new Opening(crv)); } } if (bottomCurves != null && height > 0) { wall = new Wall(height, bottomCurves[0], openings) { units = ModelUnits } } ; return(wall); }
protected override void DrawOverlay(Rhino.Display.DrawEventArgs e) { base.DrawOverlay(e); List <Guid> noDupGUIDs = new List <Guid>(); for (int i = 0; i < Ids.Count; i++) { if (noDupGUIDs.Contains(Ids[i])) { } else { noDupGUIDs.Add(Ids[i]); RhinoObject foundObject = Rhino.RhinoDoc.ActiveDoc.Objects.Find(Ids[i]); int isSelected = foundObject.IsSelected(false); switch (foundObject.ObjectType) { case Rhino.DocObjects.ObjectType.Point: if (isSelected > 0) { e.Display.DrawDot(((Rhino.Geometry.Point)foundObject.Geometry).Location, i.ToString(), System.Drawing.Color.Red, System.Drawing.Color.White); } else { e.Display.DrawDot(((Rhino.Geometry.Point)foundObject.Geometry).Location, i.ToString(), System.Drawing.Color.Black, System.Drawing.Color.White); } break; case Rhino.DocObjects.ObjectType.Curve: Rhino.Geometry.Curve myCurve = (Rhino.Geometry.Curve)foundObject.Geometry; myCurve.Domain = new Rhino.Geometry.Interval(0, 1); if (isSelected > 0) { e.Display.DrawDot(myCurve.PointAtNormalizedLength(0.5), i.ToString(), System.Drawing.Color.Red, System.Drawing.Color.White); } else { e.Display.DrawDot(myCurve.PointAtNormalizedLength(0.5), i.ToString(), System.Drawing.Color.Black, System.Drawing.Color.White); } break; case Rhino.DocObjects.ObjectType.Extrusion: Rhino.Geometry.Extrusion myExtru = (Rhino.Geometry.Extrusion)foundObject.Geometry; Rhino.Geometry.Point3d myExtruLocation = myExtru.GetBoundingBox(true).Center; //Rhino.Geometry.Point3d myExtruCentroid = Rhino.Geometry.AreaMassProperties.Compute(myExtru.ToBrep()).Centroid; if (isSelected > 0) { e.Display.DrawDot(myExtruLocation, i.ToString(), System.Drawing.Color.Red, System.Drawing.Color.White); } else { e.Display.DrawDot(myExtruLocation, i.ToString(), System.Drawing.Color.Black, System.Drawing.Color.White); } break; case Rhino.DocObjects.ObjectType.Brep: Rhino.Geometry.Brep myBrep = (Rhino.Geometry.Brep)foundObject.Geometry; Rhino.Geometry.Point3d myBrepLocation = myBrep.GetBoundingBox(true).Center; if (isSelected > 0) { e.Display.DrawDot(myBrepLocation, i.ToString(), System.Drawing.Color.Red, System.Drawing.Color.White); } else { e.Display.DrawDot(myBrepLocation, i.ToString(), System.Drawing.Color.Black, System.Drawing.Color.White); } break; case Rhino.DocObjects.ObjectType.Mesh: var mesh = foundObject.Geometry as Rhino.Geometry.Mesh; Rhino.Geometry.Point3d myMeshLocation = mesh.GetBoundingBox(true).Center; if (isSelected > 0) { e.Display.DrawDot(myMeshLocation, i.ToString(), System.Drawing.Color.Red, System.Drawing.Color.White); } else { e.Display.DrawDot(myMeshLocation, i.ToString(), System.Drawing.Color.Black, System.Drawing.Color.White); } break; case Rhino.DocObjects.ObjectType.TextDot: var textDot = (TextDot)foundObject.Geometry; break; case Rhino.DocObjects.ObjectType.Annotation: var textObj = (Rhino.Geometry.TextEntity)foundObject.Geometry; break; } } } Rhino.RhinoDoc.ActiveDoc.Views.Redraw(); }