/// <inheritdoc /> /// <summary> /// Показ блока (по границе) пользователю с миганием /// С проверкой чертежа и блокировкой. /// </summary> public virtual void Show() { var doc = Application.DocumentManager.MdiActiveDocument; if (doc == null) { return; } if (doc.Database != IdBlRef.Database) { Application.ShowAlertDialog( $"Переключитесь на чертеж {Path.GetFileNameWithoutExtension(IdBlRef.Database.Filename)}"); return; } using (doc.LockDocument()) { var ed = doc.Editor; var ext = ExtentsToShow; if (_isNullExtents) { Application.ShowAlertDialog("Границы объекта не определены."); } ed.Zoom(ext); IdBlRef.FlickObjectHighlight(2, 100, 100); } }
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(); }
private void FillDyn(Property prop, object value) { var blRef = IdBlRef.GetObjectT <BlockReference>(OpenMode.ForWrite); var dynProp = blRef.DynamicBlockReferencePropertyCollection.Cast <DynamicBlockReferenceProperty>() .FirstOrDefault(p => p.PropertyName.Equals(prop.Name, StringComparison.OrdinalIgnoreCase)); SetValue(dynProp, value); }
protected void FillProp([CanBeNull] Property prop, object value) { if (prop == null) { return; } var blRef = IdBlRef.GetObjectT <BlockReference>(OpenMode.ForWrite); if (prop.Type == PropertyType.Attribute && !prop.IdAtrRef.IsNull) { var atr = prop.IdAtrRef.GetObject <AttributeReference>(OpenMode.ForWrite); var text = value?.ToString() ?? string.Empty; if (atr.IsMTextAttribute) { var mt = atr.MTextAttribute; mt.Contents = text; atr.MTextAttribute = mt; atr.UpdateMTextAttribute(); } else { atr.TextString = text; } if (!atr.IsDefaultAlignment) { atr.AdjustAlignment(Db); } } else if (prop.Type == PropertyType.Dynamic) { if (value == null) { return; } var dynProp = blRef.DynamicBlockReferencePropertyCollection.Cast <DynamicBlockReferenceProperty>() .FirstOrDefault(p => p.PropertyName.Equals(prop.Name, StringComparison.OrdinalIgnoreCase)); if (dynProp != null) { try { dynProp.Value = value; } catch { Inspector.AddError( $"Не удалосось установить динамический параметр {prop.Name} " + $"со значением {prop.Value} в блок {BlName}", IdBlRef, System.Drawing.SystemIcons.Error); } } } }
/// <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 void Show(Editor ed) { if (!_extendsHasCalc) { _extendsHasCalc = true; using (var blRef = IdBlRef.Open(OpenMode.ForRead, false, true) as BlockReference) { try { _extents = blRef.GeometricExtents; } catch { var ptMin = new Point3d(Position.X - Side, Position.Y - Side, 0); var ptMax = new Point3d(Position.X + Side, Position.Y + Side, 0); _extents = new Extents3d(ptMin, ptMax); } } } ed.Zoom(_extents); IdBlRef.FlickObjectHighlight(2, 100, 100); }
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(); }
public bool Equals(Tile other) { return(IdBlRef.Equals(other.IdBlRef) && Bounds.Value.IsEqualTo(other.Bounds.Value, Album.Tolerance)); }