/***************************************************/ public static Panel ToBHoMObject(this IWall ramWall) { //Find corner points of wall in RAM model SCoordinate TopstartPt = new SCoordinate(); SCoordinate TopendPt = new SCoordinate(); SCoordinate BottomstartPt = new SCoordinate(); SCoordinate BottomendPt = new SCoordinate(); ramWall.GetEndCoordinates(ref TopstartPt, ref TopendPt, ref BottomstartPt, ref BottomendPt); // Create list of points List <Point> corners = new List <Point>(); corners.Add(TopstartPt.PointFromRAM()); corners.Add(TopendPt.PointFromRAM()); corners.Add(BottomendPt.PointFromRAM()); corners.Add(BottomstartPt.PointFromRAM()); corners.Add(TopstartPt.PointFromRAM()); // Create outline from corner points Polyline outline = new Polyline(); outline.ControlPoints = corners; //Create opening outlines List <ICurve> wallOpeningPLs = new List <ICurve>(); List <Opening> bhomWallOpenings = new List <Opening>(); // Create openings IFinalWallOpenings IFinalWallOpenings = ramWall.GetFinalOpenings(); IRawWallOpenings rawOpenings = ramWall.GetRawOpenings(); if (rawOpenings.GetCount() > 0) { IRawWallOpening check = rawOpenings.GetAt(0); } for (int i = 0; i < IFinalWallOpenings.GetCount(); i++) { IFinalWallOpening IFinalWallOpening = IFinalWallOpenings.GetAt(i); IPoints openingPts = IFinalWallOpening.GetOpeningVertices(); //Re-add first point to close Polygon IPoint firstOPt = openingPts.GetAt(0); SCoordinate firstOCoord = new SCoordinate(); firstOPt.GetCoordinate(ref firstOCoord); openingPts.Add(firstOCoord); ICurve wallOpeningOutline = ToPolyline(openingPts); Opening bhomOpening = Engine.Structure.Create.Opening(wallOpeningOutline); bhomWallOpenings.Add(bhomOpening); } // Create wall Panel bhomPanel = Engine.Structure.Create.Panel(outline, bhomWallOpenings); HashSet <String> tag = new HashSet <string>(); tag.Add("Wall"); //Get wall section property ConstantThickness wall2DProp = new ConstantThickness(); string wallLabel = ""; double wallThickness = ramWall.dThickness.FromInch(); IMaterialFragment Material = null; if (ramWall.eMaterial == EMATERIALTYPES.EWallPropConcreteMat) { wallLabel = "Concrete " + ramWall.dThickness.ToString() + " in"; Material = Engine.Structure.Create.Concrete("Concrete"); } else { wallLabel = "Other " + ramWall.dThickness.ToString() + " in"; Material = Engine.Structure.Create.Concrete("Other"); } wall2DProp.Name = wallLabel; wall2DProp.Thickness = wallThickness; wall2DProp.PanelType = PanelType.Wall; wall2DProp.Material = Material; bhomPanel.Property = wall2DProp; bhomPanel.Tags = tag; bhomPanel.Name = ramWall.lLabel.ToString(); // Add custom data RAMId RAMId = new RAMId(); RAMId.Id = ramWall.lUID; bhomPanel.SetAdapterId(RAMId); bhomPanel.Tags.Add("Wall"); return(bhomPanel); }