События для размеров

Автор Тема: События для размеров  (Прочитано 7193 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн RevitTormentorАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
События для размеров
« : 28-09-2017, 12:15:25 »
Добрый день.
Какие есть события у размеров? Может это одинаковые события для всех объектов на чертеже (не знаю как правильно они называются Entity вроде, Text Circle и пр.)

События типа Установлен, Добавлен, MouseEnter, MouseLeave и пр.
Применительно к размеру. Делаю создать размер, ставлю вторую точку, отпускаю кнопку мыши размер добавляется в базу и происходит событие DimensionAdded какое нибудь.

Код - C# [Выбрать]
  1.  AcDb.BlockTable bt = db.BlockTableId.GetObject(AcDb.OpenMode.ForRead) as AcDb.BlockTable;
  2.                     AcDb.BlockTableRecord ms = bt[AcDb.BlockTableRecord.ModelSpace].GetObject(AcDb.OpenMode.ForWrite) as AcDb.BlockTableRecord;
  3.                     ms.AppendEntity(circle);
  4.                     tr.AddNewlyCreatedDBObject(circle, true);

Например с кругом после ms.AppendEntity(circle); Круг отправляет событие что он добавлен в BlockTableRecord. и это можно отследить в каком нибудь методе
Код - C# [Выбрать]
  1. void BlockTableAdded(object sender){}

Есть такое как в WPF? Или надо добавить в базу, а потом снова открывать транзакцию и проверять добавился объект в базу или нет и считывать его параметры.

Непосредственно с размером, двигая у размера "ручку" требуется привязка к длине полилинии (или к одной совместной координате двух полилиний). Если нельзя привязаться непосредственно во время изменения размера, можно ли привязаться непосредственно после окончания изменения размера.
Спасибо

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: События для размеров
« Ответ #1 : 28-09-2017, 12:32:09 »
Много разных вопросов в одну кучу. Вы бы лучше написали что вы хотите получить в конечном счете

Оффлайн RevitTormentorАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: События для размеров
« Ответ #2 : 28-09-2017, 12:39:20 »
Непосредственно с размером, двигая у размера "ручку" требуется привязка к длине полилинии (или к одной совместной координате двух полилиний). Если нельзя привязаться непосредственно во время изменения размера, можно ли привязаться непосредственно после окончания изменения размера.

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: События для размеров
« Ответ #3 : 28-09-2017, 13:06:57 »
Привязка к конечным точкам полилинии у пользователя и так есть, тут программировать нечего.
По событиям: у Document есть события CommandWillStart и CommandEnded а у Database есть ObjectModified . Можете их отловить, проверить что изменеия коснулись ваших размеров и модифицировать все что угодно сразу или потом по событию простоя.
У Dimension есть свойство DimensionText - записывайте туда любую строку.
WPF к теме отношения не имеет https://ru.wikipedia.org/wiki/Windows_Presentation_Foundation

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: События для размеров
« Ответ #4 : 28-09-2017, 13:07:33 »
Изучай: ARXDBG и MGDDBG - утилиты для анализа AutoCAD, чертежа и т.д.
Там включишь события (реакторы) и посмотришь какие срабатывают.
Скажу сразу, что специальных событий для размеров нет. Есть события для объектов и для базы.
Для базы:


Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: События для размеров
« Ответ #5 : 28-09-2017, 13:12:10 »
И у самих объектов (размеров, линий и т.п. entity) никаких обработчиков событий нет - все только через Database или Document

Оффлайн RevitTormentorАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: События для размеров
« Ответ #6 : 28-09-2017, 13:16:10 »
Там включишь события (реакторы)
Хотел отдельно вопрос задать про реактора - что это такое? Теперь не стану.
Спасибо Александр

Отмечено как Решение RevitTormentor 28-09-2017, 13:53:51

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: События для размеров
« Ответ #7 : 28-09-2017, 13:41:15 »
И у самих объектов (размеров, линий и т.п. entity) никаких обработчиков событий нет - все только через Database или Document
А вот тут ты заблуждаешься:



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: События для размеров
« Ответ #8 : 28-09-2017, 13:48:16 »
Упс. И в самом деле... Любопытно... И это будет работать после закрытия транзакции и диспоза объекта?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: События для размеров
« Ответ #9 : 28-09-2017, 13:49:42 »
Упс. И в самом деле... Любопытно... И это будет работать после закрытия транзакции и диспоза объекта?
Раз любопытно - проверь! Только не вздумай в событиях объекта использовать транзакцию.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн RevitTormentorАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: События для размеров
« Ответ #10 : 28-09-2017, 13:53:09 »
Вроде там все события только для работы внутри транзакции. Модификация, Закрытие Открытие. Могу конечно и ошибаться :)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: События для размеров
« Ответ #11 : 28-09-2017, 13:55:33 »
Могу конечно и ошибаться :)
Можешь. К объектам/примитивам можно обращаться вообще без транзакции. Пример: http://adn-cis.org/sozdanie-polyline3d-bez-ispolzovaniya-tranzakczii.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение