Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
            public static bool IsPerimeterAdjacent(EdgeCurves edges)
            {
                bool result = (edges.PerimeterAdjacent.Count > 0) ? true : false;

                return(result);
            }
Пример #4
0
 public static void EdgeClassification(ZonePackage zp, EdgeCurves ec)
 {
     zp.EdgeCurves = ec;
 }