Beispiel #1
0
        public override bool IsApplicable(RXObject overruledSubject)
        {
            // Проверка точки - инсоляционная или нет
            var dPt = (DBPoint)overruledSubject;

            return(InsPointHelper.IsInsPoint(dPt));
        }
Beispiel #2
0
        private void DefineEnt(Entity ent)
        {
            var building = ElementFactory.Create <IBuilding>(ent);

            if (building != null)
            {
                // Если это не полилиния или блок - такие объекты пока не поддерживаются
                if (!(ent is Polyline) && !(ent is BlockReference))
                {
                    Inspector.AddError($"Тип здания не подходит для инсоляции - '{ent.GetRXClass().Name}', слой '{ent.Layer}'", ent, System.Drawing.SystemIcons.Error);
                    return;
                }

                var insBuild = new MapBuilding(building);
                Buildings.Add(insBuild);
                var r = GetBuildingRectangle(insBuild);
                treeBuildings.Add(r, insBuild);

                // Подписывание на изменения объекта
                ent.Modified += Building_Modified;
                ent.Erased   += Building_Erased;

                // Оповещение расчета о изменении здания
                if (IsEventsOn)
                {
                    BuildingAdded?.Invoke(this, insBuild);
                }
                return;
            }
            // Сбор точек инсоляции
            var dbPt = ent as DBPoint;

            if (dbPt != null)
            {
                if (InsPointHelper.IsInsPoint(dbPt))
                {
                    InsPoints.Add(dbPt.Id);

                    // Оповещение о создании точки
                    if (IsEventsOn)
                    {
                        InsPointAdded?.Invoke(this, dbPt.Id);
                    }
                }
                return;
            }
            var pl = ent as Polyline;

            if (pl != null)
            {
                var entExtDicExt = new EntDictExt(pl, InsService.PluginName);
                var dic          = entExtDicExt.Load();
                if (dic != null)
                {
                    var dicPlace = dic.GetInner(Place.PlaceDicName);
                    if (dicPlace != null)
                    {
                        Places.Add(new KeyValuePair <ObjectId, DicED>(pl.Id, dicPlace));
                    }
                }
                //// Если она на  слое sapr_ins_visuals - удаление
                //if (VisualDatabase.IsVisualElement(ent))
                //{
                //    ent.UpgradeOpen();
                //    ent.Erase();
                //}
            }
        }