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

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

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

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

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

Оффлайн avc

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

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

  • Administrator
  • *****
  • Сообщений: 8407
  • Карма: 1014
  • Рыцарь 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
  • ****
  • Сообщений: 371
  • Карма: 67
    • Мои плагины к Автокаду
Re: Использование транзитной графики
« Ответ #3 : 01-11-2015, 19:10:13 »
Сложности создает сам TransientManager: представьте, что я хочу временно показать пользователю какое-то твердое тело где-то в модели. Вызываю addTransient с пустым списком вьюпортов, как в примере. Если вдруг в это время пользователь находился на листе, то он увидит солид во всех вьюпортах листа (что конечно правильно) и плюс еще один огромный солид поверх пространства бумаги!! TransientManager не понимает разницы между пространством листа и модели. Это совершенно не нормальное поведение. Transient-графика в пространстве бумаги не нужна никогда. Или я не понимаю как им пользоваться. Вот в чем сложность.

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

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

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

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

Оффлайн avc

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

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

 

Оффлайн Dziubyna

  • ADN Club
  • Сообщений: 39
  • Карма: 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
  • *****
  • Сообщений: 8407
  • Карма: 1014
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Использование транзитной графики
« Ответ #8 : 11-10-2018, 10:50:34 »
Когда объект добавлен в ACDB_MODEL_SPACE все нормально применяется, а когда рисую с помощью транзитной графики эти параметры берутся с текущего слоя в AutoCAD.

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