Пример #1
0
        public MedinaSiteSectorBuilder CategorizeObjects()
        {
            foreach (var obj in Objects)
            {
                var layerName = File.AllLayers.FindIndex(obj.Attributes.LayerIndex).Name;

                //Console.WriteLine(layerName);

                var geo = obj.Geometry as Brep;
                var pt  = Point3d.Unset;

                if (geo == null)
                {
                    if (layerName != "ruins__points")
                    {
                        if (layerName == "mass__object--building")
                        {
                            //Console.WriteLine(obj.Geometry.ObjectType);
                            var extrusion = obj.Geometry as Extrusion;
                            geo = extrusion.ToBrep();
                        }
                        else
                        {
                            continue;
                        }
                    }
                    else
                    {
                        var ptRef = obj.Geometry as Point;

                        if (ptRef != null)
                        {
                            RuinPoints.Add(ptRef.Location);
                            continue;
                        }

                        continue;
                    }
                }

                switch (layerName)
                {
                case "base":
                    Base = geo;
                    break;

                case "datum__ground--footprints":
                    Footprints.Add(geo);
                    break;

                case "datum__ground--courtyard":
                    Courtyards.Add(geo);
                    break;

                case "datum_ground--public":
                    Plazas.Add(geo);
                    break;

                case "datum__floor":
                    Floors.Add(geo);
                    break;

                case "datum__roof":
                    Roofs.Add(geo);
                    break;

                case "datum__balcony":
                    Balconies.Add(geo);
                    break;

                case "mass__object--building":
                    Massing.Add(geo);
                    break;

                case "mass__space--openings":
                    Windows.Add(geo);
                    break;

                case "mass__space--doors":
                    Doors.Add(geo);
                    break;

                default:
                    break;
                }
            }

            return(this);
        }