Визуальная идентификация объектов с определенными расширенными данными

Автор Тема: Визуальная идентификация объектов с определенными расширенными данными  (Прочитано 11673 раз)

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

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
В методе WorldDraw не создаются примитивы. Вот мой пробник с поясняющим комментарием:
Код - C# [Выбрать]
  1. wd.Geometry.Draw(polyline); // Так не работает - вылетает автокад с фатальной ошибкой
Конечно. Draw только рисует, контролировать закрытие объектов он не умеет. Как минимум, после нужно вызывать Dispose для полилинии.
Единственное, что мне не нравится в варианте с Drawable Overrule - то, что если я буду размер "значка" делать в зависимости от размера экрана (в процентах), то он будет перерисовываться после вызова Regen.
Насколько я помню, в Civil 3D значок предупреждения динамически размеры не изменяет, тоже только после регенерации.
А тут получается только наипростейшая фигура, у которой я не могу поменять ни цвет, ни толщину, не могу создать заливку.
Глянь wd.SubEntityTraits - там всё это можно задать.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Насколько я помню, в Civil 3D значок предупреждения динамически размеры не изменяет, тоже только после регенерации
Я это и написал ))
Я конечно не пробовал, но по опыту работы в Civil почти на 100% уверен, что это так

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Ок, просто не заметил или не так понял  :)

Оффлайн Кирилл Захаров

  • ADN OPEN
  • ***
  • Сообщений: 119
  • Карма: 5
Здравствуйте!
Не подскажете какие-нибудь хорошие статьи и примеры про Drawable Overrule и GripsOverrule?

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Тут и тут есть примеры. Еще, если погуглить, можно найти. Но если вы ищите на русском, да с объяснениями - увы - нет такого сокровища

Оффлайн Кирилл Захаров

  • ADN OPEN
  • ***
  • Сообщений: 119
  • Карма: 5
Спасибо. Да, на английском много вроде.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Вот еще очень интересный блог - там много хороших примеров, в том числе и по Overrule. Только находится этот блог не на первых страницах гугла, поэтому не все его находят

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Поднимаю тему.
Реализовал я свою задумку
Извините, вам запрещён просмотр содержимого спойлеров.

Вроде ничего там страшного нет такого. Ну как мне кажется. НО! У некоторых пользователей при включенном режиме (при активном DrawableOverrule) при сохранении документа происходит фатал
У меня не получается воспроизвести ошибку, поэтому нужно мнение опытных людей с предположениями о причинах

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Есть два момента, которые мне сильно не нравятся:
1. wd.SubEntityTraits.FillType не восстанавливается исходное состояние, как это сделано для wd.SubEntityTraits.Color.
2. в методе ShowIcon() нет проверки на то, что MpProductsDrawableOverrule уже было ранее включено.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
1. wd.SubEntityTraits.FillType не восстанавливается исходное состояние, как это сделано для wd.SubEntityTraits.Color.
Спасибо, учту. Но это вряд-ли является причиной
2. в методе ShowIcon() нет проверки на то, что MpProductsDrawableOverrule уже было ранее включено
Да, ты прав! Не предусмотрел. Но тоже не критично. Выскакивает ошибка



Но автокад не падает. Исправлю конечно же, но сейчас это не так страшно

И еще вопрос по теме - можно эту геометрию предусмотреть так, чтобы она была только в модели и не показывалась на листах, и не выходила на печать?

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Но это вряд-ли является причиной
Я так подозреваю, что причина с большой вероятностью может быть в других участках кода.
можно эту геометрию предусмотреть так, чтобы она была только в модели и не показывалась на листах
Вроде как, для обработки отображения с учётом вариаций на видовых экранах листов, нужно переопределять метод ViewportDraw.
и не выходила на печать?
Единственный вариант, который приходит в голову - отслеживать события запуска-завершения команды печати. Перед выводом на печать, как правило, выполняется регенерация и метод перерисовки, соответственно, вызывается. Поэтому, в методе перерисовки достаточно будет проверить, что в настоящий момент выполняется команда печати, и не рисовать дополнительную геометрию. Но эту идею надо проверять, сам не пробовал.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
и не выходила на печать?
Цвет меняешь.... может на слой Defpoints перевести маркер?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Единственный вариант, который приходит в голову - отслеживать события запуска-завершения команды печати.
Думаю, что это должно быть лучше: Context.IsPlotGeneration
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение


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

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