/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object can be used to retrieve data from input parameters and /// to store data in output parameters.</param> protected override void SolveInstance(IGH_DataAccess DA) { var inBreps = new List <GH_Brep>(); if (!DA.GetDataList(0, inBreps)) { return; } var HBObjects = PyBase.CallFromHBHive(inBreps); var HBNames = new List <string>(); var HBTypes = new List <HBType>(); var SrfBreps = new List <Brep>(); var points = new List <Point3d>(); foreach (var item in HBObjects) { var wufiModel = new WufiModel(item); //points = item.Surfaces.First().ExtractPoints(true); points.AddRange(wufiModel.Vertices); //SrfBreps.AddRange(item.Surfaces.Select(_ => _.Geometry)); //HBNames.Add(item.Name); //HBTypes.Add(item.ObjectType); } DA.SetDataList(2, points); //DA.SetData(1, HBTypes); //DA.SetDataList(2, SrfBreps); }
public static List <HBZone> CallFromHBHive(List <GH_Brep> inBreps) { var HBIDs = new List <string>(); foreach (var item in inBreps) { //todo: if null //todo: check if HBID existed var HBID = item.Value.UserDictionary["HBID"] as string; //string formatedHBID = string.Format("['{0}']['{1}']", HBID[0], HBID[1]); HBIDs.Add(HBID); } var PyHBObjects = PyBase.GetHBObjects(HBIDs); var HBZones = new List <HBZone>(); //todo: for later use var HBSurfaces = new List <HBSurface>(); foreach (var item in PyHBObjects) { var hbType = PyBase.GetHBType(item); if (hbType == HBType.HBZone) { HBZones.Add(new HBZone(item)); } else if (hbType == HBType.HBSurface) { HBSurfaces.Add(new HBSurface(item)); } else { //non hbObject } } return(HBZones); }