public static dynamic GetTSObject(LevelMark dynObject) { if (dynObject is null) { return(null); } return(dynObject.teklaObject); }
public override int GetHashCode() { int hash = 1; if (LevelId != 0) { hash ^= LevelId.GetHashCode(); } if (BeforeLevelId != 0) { hash ^= BeforeLevelId.GetHashCode(); } if (AfterLevelId != 0) { hash ^= AfterLevelId.GetHashCode(); } if (Type != 0) { hash ^= Type.GetHashCode(); } hash ^= abilities_.GetHashCode(); hash ^= ItemMax.GetHashCode(); hash ^= FansMax.GetHashCode(); if (Max != 0) { hash ^= Max.GetHashCode(); } hash ^= eventId_.GetHashCode(); hash ^= StarSource.GetHashCode(); hash ^= awards_.GetHashCode(); if (GameType != 0) { hash ^= GameType.GetHashCode(); } if (LevelInfoId != 0) { hash ^= LevelInfoId.GetHashCode(); } if (ChapterGroup != 0) { hash ^= ChapterGroup.GetHashCode(); } if (LevelMark.Length != 0) { hash ^= LevelMark.GetHashCode(); } hash ^= LevelPlot.GetHashCode(); hash ^= levelCoordinate_.GetHashCode(); hash ^= levelBackdrop_.GetHashCode(); if (levelExtra_ != null) { hash ^= LevelExtra.GetHashCode(); } return(hash); }
/// <summary> /// Singleton instance /// </summary> public static LevelMarkObjectOverrule Instance() { if (_instance != null) { return(_instance); } _instance = new LevelMarkObjectOverrule(); // Фильтр "отлова" примитива по расширенным данным. Работает лучше, чем проверка вручную! _instance.SetXDataFilter(LevelMark.GetDescriptor().Name); return(_instance); }
/// <summary> /// Панель "Отметки уровня" /// </summary> private static void AddLevelMarksPanel(RibbonTab ribbonTab) { var ribSourcePanel = new RibbonPanelSource { Title = Language.GetItem("tab11") }; var ribPanel = new RibbonPanel { Source = ribSourcePanel }; ribbonTab.Panels.Add(ribPanel); var ribRowPanel = new RibbonRowPanel(); // mpLevelMark ribRowPanel.Items.Add(GetBigSplitButton(LevelMark.GetDescriptor())); if (ribRowPanel.Items.Any()) { ribSourcePanel.Items.Add(ribRowPanel); } }
/// <summary> /// Initializes a new instance of the <see cref="LevelMarkGrip"/> class. /// </summary> /// <param name="levelMark">Экземпляр класса <see cref="mpLevelMark.LevelMark"/></param> /// <param name="gripType">Вид ручки</param> /// <param name="gripName">Имя ручки</param> /// <param name="gripPoint">Точка ручки</param> public LevelMarkGrip( LevelMark levelMark, GripType gripType, LevelMarkGripName gripName, Point3d gripPoint) { LevelMark = levelMark; GripName = gripName; GripType = gripType; GripPoint = gripPoint; /* При инициализации ручки нужно собрать все точки и поместить их в поле _points. * Это создаст кэш точек. Если в методе WorldDraw брать точки из самого объекта (LevelMark), * то вспомогательные линии будут меняться при зуммировании. Это связано с тем, что в методе * MoveGripPointsAt происходит вызов метода UpdateEntities */ _points = new List <Point3d> { LevelMark.InsertionPoint, LevelMark.ObjectPoint, LevelMark.BottomShelfStartPoint }; }
/// <inheritdoc /> public override void OnGripStatusChanged(ObjectId entityId, Status newStatus) { try { // При начале перемещения запоминаем первоначальное положение ручки // Запоминаем начальные значения if (newStatus == Status.GripStart) { _gripTmp = GripPoint; } // При удачном перемещении ручки записываем новые значения в расширенные данные // По этим данным я потом получаю экземпляр класса LevelMark if (newStatus == Status.GripEnd) { using (var tr = AcadUtils.Database.TransactionManager.StartOpenCloseTransaction()) { var blkRef = tr.GetObject(LevelMark.BlockId, OpenMode.ForWrite, true, true); using (var resBuf = LevelMark.GetDataForXData()) { blkRef.XData = resBuf; } tr.Commit(); } LevelMark.Dispose(); } // При отмене перемещения возвращаем временные значения if (newStatus == Status.GripAbort) { if (_gripTmp != null) { switch (GripName) { case LevelMarkGripName.BasePoint: LevelMark.InsertionPoint = _gripTmp; break; case LevelMarkGripName.ObjectPoint: LevelMark.ObjectPoint = _gripTmp; break; case LevelMarkGripName.BottomShelfStartPoint: LevelMark.BottomShelfStartPoint = _gripTmp; break; case LevelMarkGripName.ArrowPoint: LevelMark.EndPoint = _gripTmp; break; case LevelMarkGripName.TopShelfPoint: LevelMark.ShelfPoint = _gripTmp; break; } } } base.OnGripStatusChanged(entityId, newStatus); } catch (Exception exception) { if (exception.ErrorStatus != ErrorStatus.NotAllowedForThisProxy) { ExceptionBox.Show(exception); } } }
/// <summary> /// Проверка валидности примитива. Проверка происходит по наличию XData с определенным AppName /// </summary> /// <param name="overruledSubject">Instance of <see cref="RXObject"/></param> public override bool IsApplicable(RXObject overruledSubject) { return(ExtendedDataUtils.IsApplicable(overruledSubject, LevelMark.GetDescriptor().Name, true)); }