Пример #1
0
        /// <summary>
        /// Сохранение в словарь объекта DBObject (ExtensionDictionary)
        /// </summary>
        public static void Save(IDboDataSave obj, Document doc)
        {
            if (doc == null || doc.IsDisposed)
            {
                return;
            }

            var dicEd = obj.GetExtDic(doc);

            if (dicEd == null)
            {
                return;
            }

            using (doc.LockDocument())
                using (var t = doc.TransactionManager.StartTransaction())
                {
                    var idDbo = obj.GetDBObject();
                    if (!idDbo.IsNull)
                    {
                        var dbo = idDbo.GetObject(OpenMode.ForWrite);
                        if (dbo != null)
                        {
                            EntDictExt ede = new EntDictExt(dbo, plugin);
                            ede.Save(dicEd);
                        }
                    }
                    t.Commit();
                }
        }
Пример #2
0
        /// <summary>
        /// Загрузка словаря из объекта - всех записей Xrecord
        /// </summary>
        public static DicED Load(DBObject dbo, Document doc)
        {
            DicED      res = null;
            EntDictExt ede = new EntDictExt(dbo, plugin);

            res = ede.Load();
            return(res);
        }
Пример #3
0
 public static void SaveDboDict(this IDboDataSave dboSave)
 {
     var doc = Application.DocumentManager.MdiActiveDocument;
     using (var entDic = new EntDictExt(dboSave.GetDBObject(), dboSave.PluginName))
     {
         entDic.Save(dboSave.GetExtDic(doc));
     }
 }
Пример #4
0
 /// <summary>
 /// Удаление словаря из объекта
 /// </summary>
 /// <param name="dboSave">Объект чертежа</param>
 /// <param name="dicName">Имя удаляемого словаря или пусто для удаления всего словаря плагина</param>
 public static void DeleteDboDict(this IDboDataSave dboSave, string dicName = null)
 {
     var doc = Application.DocumentManager.MdiActiveDocument;
     using (var entDic = new EntDictExt(dboSave.GetDBObject(), dboSave.PluginName))
     {
         entDic.Delete(dicName);
     }
 }
Пример #5
0
 public static void LoadDboDict(this IDboDataSave dboSave)
 {
     var doc = Application.DocumentManager.MdiActiveDocument;
     using (var entDic = new EntDictExt(dboSave.GetDBObject(), dboSave.PluginName))
     {
         var dicED = entDic.Load();
         dboSave.SetExtDic(dicED, doc);
     }
 }
Пример #6
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();
                //}
            }
        }