public void Replace() { ObjectId idBtrWin; if (dictIdBtrAkrWindow == null) { dictIdBtrAkrWindow = getBtrAkrWin(UtilsReplaceWindows.Db); } dictIdBtrAkrWindow.TryGetValue(TranslatorW.BlNameNew, out idBtrWin); if (idBtrWin.IsNull) { throw new Exception($"Ошибка, не найден блок окна {TranslatorW.BlNameNew}."); } // Создание вхождения нового блока окнак var blRefNew = new BlockReference(Position, idBtrWin); blRefNew.SetDatabaseDefaults(); blRefNew.Layer = Settings.Default.LayerWindows; // добавление его в определение блок var btrOwner = IdBtrOwner.GetObject(OpenMode.ForWrite) as BlockTableRecord; btrOwner.AppendEntity(blRefNew); UtilsReplaceWindows.Transaction.AddNewlyCreatedDBObject(blRefNew, true); // Удаление старого блока. var blRefOldWin = IdBlRef.GetObject(OpenMode.ForWrite, false, true) as BlockReference; blRefOldWin.Erase(); }
/// <summary> /// Вставка чистого блока сваи и установка текущих параметров /// </summary> public void ResetBlock() { var t = IdBtrOwner.Database.TransactionManager.TopTransaction; var owner = IdBtrOwner.GetObject(OpenMode.ForWrite) as BlockTableRecord; var blRef = BlockInsert.InsertBlockRef(BlName, Position, owner, t); blRef.LayerId = LayerId; var oldBlRef = IdBlRef.GetObject(OpenMode.ForWrite) as BlockReference; oldBlRef.Erase(); var oldProps = Properties.Select(s => (Property)s.Clone()); Update(blRef); foreach (var item in Properties.Where(p => p.IsShow)) { var oldProp = oldProps.First(p => p.Name == item.Name); FillProp(item, oldProp.Value); } }
public bool Define(SpecTable specTable) { if (IdBlRef.IsNull) { Logger.Log.Error($"Ошибка в методе SpecItem.Define() - IdBlRef.IsNull. Недопустимая ситуация."); return(false); } var blRef = IdBlRef.GetObject(OpenMode.ForRead, false, true) as BlockReference; if (blRef == null) { Logger.Log.Error($"Ошибка в методе SpecItem.Define() - blRef == null. Недопустимая ситуация."); return(false); } string err = string.Empty; BlName = blRef.GetEffectiveName(); if (blRef.AttributeCollection == null) { // В блоке нет атрибутов. err += "Нет атрибутов. "; } else { if (Regex.IsMatch(BlName, specTable.SpecOptions.BlocksFilter.BlockNameMatch, RegexOptions.IgnoreCase)) { // все атрибуты блока AttrsDict = blRef.GetAttributeDictionary(); // Проверка типа блока var typeBlock = specTable.SpecOptions.BlocksFilter.Type; if (typeBlock != null) { DBText atrType; if (AttrsDict.TryGetValue(typeBlock.BlockPropName, out atrType)) { if (!typeBlock.Name.Equals(atrType.TextString, StringComparison.OrdinalIgnoreCase)) { // Свойство типа не соответствует требованию err += $"Свойство '{typeBlock.BlockPropName}'='{atrType.TextString}' не соответствует требуемому значению '{typeBlock.Name}'. "; } } // В блоке нет свойства Типа else { err += $"Нет обязательного свойства {typeBlock.BlockPropName}. "; } } // Проверка обязательных атрибутов foreach (var atrMustHave in specTable.SpecOptions.BlocksFilter.AttrsMustHave) { if (!AttrsDict.ContainsKey(atrMustHave)) { err += $"Нет обязательного свойства: '{atrMustHave}'. "; } } // определение Группы DBText groupAttr; if (AttrsDict.TryGetValue(specTable.SpecOptions.GroupPropName, out groupAttr)) { Group = groupAttr.TextString; } // Ключевое свойство DBText keyAttr; if (AttrsDict.TryGetValue(specTable.SpecOptions.KeyPropName, out keyAttr)) { Key = keyAttr.TextString; } else { err += $"Не определено ключевое свойство '{specTable.SpecOptions.KeyPropName}'. "; } } // Имя блока не соответствует Regex.IsMatch else { err += $"Имя блока не соответствует '{specTable.SpecOptions.BlocksFilter.BlockNameMatch}'. "; } } if (string.IsNullOrEmpty(err)) { return(true); } else { Inspector.AddError($"Пропущен блок '{BlName}': {err}", blRef); return(false); } }
public void Delete() { var blRef = IdBlRef.GetObject(OpenMode.ForWrite); blRef.Erase(); }