Использование транзитной графики

Автор Тема: Использование транзитной графики  (Прочитано 11394 раз)

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

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: Использование транзитной графики
« Ответ #1 : 01-11-2015, 17:52:06 »
Я заметил, что примеры в этой статье не эквивалентны. В примере на  C++ функция addTransient вызывается с параметром DirectShortTerm и в коллекцию номеров вьюпортов добавляется значение из системной переменной CVPORT. А в примере на C# используется TransientDrawingMode.Highlight и коллекция вьюпортов оставлена пустой.
В чем разница этих TransientDrawingMode?
И главный вопрос (ради которого я и искал примеры), что записать в viewportNumbers, чтоб объект отображался во всех вьюпортах, как все объекты модели, но не рисовался в пространстве бумаги? Надо перебирать все объекты пространства листа и заталкивать в коллекцию все Viewport.Number? Или есть варианты по проще?

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Использование транзитной графики
« Ответ #2 : 01-11-2015, 18:43:51 »
В чем разница этих TransientDrawingMode?
Всё есть в документации ObjectARX. Смотри описание Autodesk.AutoCAD.GraphicsInterface.TransientDrawingMode.
И главный вопрос (ради которого я и искал примеры), что записать в viewportNumbers, чтоб объект отображался во всех вьюпортах, как все объекты модели, но не рисовался в пространстве бумаги?
Я честно говоря не понял зачем такие сложности. У Layout есть метод GetViewports. У каждого из Viewport есть свойство Number.
« Последнее редактирование: 01-11-2015, 19:21:55 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: Использование транзитной графики
« Ответ #3 : 01-11-2015, 19:10:13 »
Сложности создает сам TransientManager: представьте, что я хочу временно показать пользователю какое-то твердое тело где-то в модели. Вызываю addTransient с пустым списком вьюпортов, как в примере. Если вдруг в это время пользователь находился на листе, то он увидит солид во всех вьюпортах листа (что конечно правильно) и плюс еще один огромный солид поверх пространства бумаги!! TransientManager не понимает разницы между пространством листа и модели. Это совершенно не нормальное поведение. Transient-графика в пространстве бумаги не нужна никогда. Или я не понимаю как им пользоваться. Вот в чем сложность.

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Использование транзитной графики
« Ответ #4 : 01-11-2015, 19:26:14 »
Transient-графика в пространстве бумаги не нужна никогда.
Ну почему же. Например нарисовать временную рамку в Листе. Очень может быть полезно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Использование транзитной графики
« Ответ #5 : 01-11-2015, 19:28:40 »
Сложности создает сам TransientManager: представьте, что я хочу временно показать пользователю какое-то твердое тело где-то в модели.
Тут большой вопрос нужно ли вообще для этой цели пользоваться TransientManager. Может лучше создать примитив, а потом его удалить.
Пока мне непонятна итоговая задача я не могу подсказать варианты решения.
Пока лишь могу сказать, что у Листа CVPORT == 1. Так что этого номера в коллекции в твоём случае быть не должно. Если пользователь в листе, то:
Цитировать
У Layout есть метод GetViewports. У каждого из Viewport есть свойство Number.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: Использование транзитной графики
« Ответ #6 : 01-11-2015, 21:33:12 »
Цитировать
нарисовать временную рамку в Листе
Хм, в самом деле. Согласен, что-то я перегнул палку... Для плоских объектов - смысл есть.
Цитировать
Тут большой вопрос нужно ли вообще для этой цели пользоваться TransientManager
Да, вариантов-то много. Мне например надо подсвечивать существующие объекты, а для этого я в других местах использовал Entity.Highlight().
Цитировать
У Layout есть метод GetViewports
Ценное замечание, приму к разработке.

Спасибо за ответы!

 

Оффлайн Dziubyna

  • ADN Club
  • Сообщений: 41
  • Карма: 4
  • Skype: andriy.dziubyna
Re: Использование транзитной графики
« Ответ #7 : 11-10-2018, 10:31:32 »
<a href="http://adn-cis.org/ispolzovanie-tranzitnoj-grafiki.html" title="Использование транзитной графики">Использование транзитной графики[/url]

Такой вопрос.
Попробовал нарисовать свой CustomEntity с помощью транзитной графики, там у меня и subEntity есть, обращение к текущему Db, и много всего другого.
Нарисовалась, но один нюанс в процессе рисования разных subEntity я наношу их на разные слои, в subEntityTraits() задаю слой, а цвет, вес и тип линии задаю по слою.
Когда объект добавлен в ACDB_MODEL_SPACE все нормально применяется, а когда рисую с помощью транзитной графики эти параметры берутся с текущего слоя в AutoCAD.

Транзитная графика такой работы не поддерживает?

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Использование транзитной графики
« Ответ #8 : 11-10-2018, 10:50:34 »
Когда объект добавлен в ACDB_MODEL_SPACE все нормально применяется, а когда рисую с помощью транзитной графики эти параметры берутся с текущего слоя в AutoCAD.

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

Оффлайн Dziubyna

  • ADN Club
  • Сообщений: 41
  • Карма: 4
  • Skype: andriy.dziubyna
Re: Использование транзитной графики
« Ответ #9 : 19-10-2018, 10:25:29 »
Возникла проблема. Не знаю связана или с какой-то спецификой работы AutoCAD или это ошибка.

Написал свое CustomEntity которое рисую только транзитной графикой, так как оно только сервисное и нужно что бы в процессе работы вывести некоторые данные пользователю, не добавляя в чертеж.

Объект наносится нормально. Я ранее спрашивал о цвете, здесь цвет задаю конкретный цвет не по слою. Линии и другие геометрические объекты рисуются нормально по настройках, которые применяю (включая цвет).

Но есть проблема с текстом, не применяется цвет тот что я задаю, при чем пробовал рисовать AcDbMText, AcDbText и (AcGiWorldDraw)mode->geometry().text. Результат один и тот же. Цвет берется из рандомного слоя который присутствует в чертеже (определил методом тыка), игнорируя тот который я задаю перед рисованием (для AcDbMText и AcDbText: пробовал setColorIndex и setColor, для geometry().text в subEntityTraits() setTrueColor и setColor). И когда нашел слой, из которого текст берет цвет, если изменить цвет на слое, то сразу же меняется цвет и самого текста на чертеже в транзитной графике.

Попробовал скомпилировать приложение под другую платформу (не AutoCAD) там все хорошо, рисуется з тем цветом что я задаю в subWorldDraw.

Так вот это ошибка работы транзитной графики с текстом в AutoCAD? Или там есть какие-то нюансы? Не знаю нужен ли пример кода нанесения, там ничего особенного, если нужен, то могу навести.

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: Использование транзитной графики
« Ответ #10 : 19-10-2018, 11:40:45 »
Мой вам совет - забейте на эту транзитную графику. Фаталов и глюков сверх всякой меры...

Оффлайн Dziubyna

  • ADN Club
  • Сообщений: 41
  • Карма: 4
  • Skype: andriy.dziubyna
Re: Использование транзитной графики
« Ответ #11 : 19-10-2018, 12:15:55 »
Мой вам совет - забейте на эту транзитную графику. Фаталов и глюков сверх всякой меры...

Я ее уже использую не первый год, для некоторых целей. И то что мне нужно работает без глюков, протестировано вдоль и в поперёк. Но здесь кажется явно с текстами проблемы так как под другой программой все нормально.

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: Использование транзитной графики
« Ответ #12 : 19-10-2018, 12:22:48 »
Я тоже года 2 использовал, боролся. Пока простые объекты выводишь, кривые всякие - вроде все хорошо. Чуть по сложней объект - и получайте фатал. Блоки фаталят стабильно. Вот теперь у вас с текстами глюки. Не удивляюсь. Я теперь полностью избавился от транзитки. Только для отладки.

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Использование транзитной графики
« Ответ #13 : 19-10-2018, 13:16:36 »
Так вот это ошибка работы транзитной графики с текстом в AutoCAD? Или там есть какие-то нюансы? Не знаю нужен ли пример кода нанесения, там ничего особенного, если нужен, то могу навести.
Нужен не просто пример кода, а целый тестовый проект для проверки и при необходимости отправки в ADN DevHelp.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение