public static ZoneManifest ZoneManifest(List <Brep> zonesToParse, ProgramManifest pm, TestFitPackage tf) { List <ZonePackage> zpList = new List <ZonePackage>(); double totalArea = 0; foreach (Brep zone in zonesToParse) { ZonePackage zp = new ZonePackage(zone); if (zp.BaseArea < 10) { //Stopgap solution for micro-zones generated by weird circulation corners. continue; } totalArea = totalArea + zp.BaseArea; EdgeCurves edgeCurvePackage = Select.ZoneEdgeCurves(zone, tf, zonesToParse); Update.Zone.EdgeClassification(zp, edgeCurvePackage); Update.Zone.Adjacencies(zp); Update.Zone.AffinityType(zp); zpList.Add(zp); } ZoneManifest zm = new ZoneManifest(zpList, totalArea) { FloorPlan = tf.FloorPlanPackage }; Update.Program.ZonePreference(pm, zm); Update.Zone.Popularity(zm, pm); Update.Zone.ProgramPriority(zm, pm); Update.Zone.ReservedArea(zm, pm); Update.Zone.ProgramTargets(zm, pm); Update.Zone.RoomConfiguration(zm, pm); return(zm); }
protected override void SolveInstance(IGH_DataAccess DA) { ZonePackage zp = null; if (!DA.GetData(0, ref zp)) { return; } DA.SetData(0, zp.Region); EdgeCurves edges = zp.EdgeCurves; DA.SetDataList(2, edges.PerimeterAdjacent); DA.SetDataList(3, edges.CirculationAdjacent); DA.SetDataList(4, edges.CoreAdjacent); DA.SetDataList(5, edges.ExemptionAdjacent); DA.SetDataList(6, edges.StructureAdjacent); DA.SetDataList(7, edges.ZoneAdjacent); DA.SetDataList(9, zp.ProgramTargets); }
public static bool IsPerimeterAdjacent(EdgeCurves edges) { bool result = (edges.PerimeterAdjacent.Count > 0) ? true : false; return(result); }
public static void EdgeClassification(ZonePackage zp, EdgeCurves ec) { zp.EdgeCurves = ec; }