CustomEntity на .Net без использования ObjectARX

Автор Тема: CustomEntity на .Net без использования ObjectARX  (Прочитано 32293 раз)

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

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Видимо форум имеет ограничения на длину сообщения, поэтому разбил на два

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Видимо форум имеет ограничения на длину сообщения, поэтому разбил на два
Был максимум 60000 символов - ты их видимо превысил. Я поменял на 120000 - надеюсь будешь влезать. Пришлось вернуть установки обратно - падают браузеры.
« Последнее редактирование: 22-11-2018, 09:30:30 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Сегодня доделал новый примитив - обозначение Разреза. В отличии от подобного примитива в СПДС-Модуле автодеска мой имеет свои плюшки:
- Больше возможностей настройки внешнего вида
- Более стабильное и правильное положение текста в случае изменения Разреза. Т.е. текст всегда находится в одном положении относительно полки, независимо от того, как вы его подвинули
- Возможность восстановить положение текста через редактор значений, вызываемый по двойному клику
- И главная фишка – отображение линии сечения, когда Разрез выбран

К сожалению, на видео уже нет ни сил ни времени, поэтому просто приложу скриншотик:



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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Один из пользователей спросил "А как-же аннотативность?". И вот я задумался - а надо ли? И если да - то все-ли возможности учитывать?
Немного мыслей в слух:
Одна из главных фишек аннотативности, на мой взгляд, это то, что автокад скрывает аннотативные примитивы на видовых экранах при правильной настройке. Это действительно круто и удобно
А вот фишка что для каждого аннотативного масштаба в примитиве можно задать своё состояние (расположение в основном) - вот это уже лишнее. Да и никто этим не пользуется. Да и не удобно это.

Проведя эксперимент я выяснил, что использование блока в основе "кастомного" объекта имеет еще один плюс - блоку можно сказать "аннотавный" и автокад уже сам будет обрабатывать его видимость на видовых экранах. Т.е. реализовать аннотативность вполне реально! Но возникают некоторые моменты:
- У меня у "кастомных" примитивов есть свойство "Масштаб". Стоит ли при его изменении "прокидывать" аннотативный масштаб в список аннотавтиных масштабов блока?
- Что делать, если аннотативный масштаб будет изменен пользователем у самого блока?
- Стоит ли реагировать на изменение переменной ANNOAUTOSCALE?

Эти вопросы у меня возникли только на стадии обдумывания. Если начну делать, то проблем точно появится еще больше.

Кто что думает по этому поводу? Вы бы стали реализовывать аннотативность?

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 409
  • Карма: 77
  • Skype: vildar82
По хорошему, похоже, нужно добавить свойства Аннотативность - Да/Нет
И в зависимости от него управлять масштабом.

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Кто что думает по этому поводу? Вы бы стали реализовывать аннотативность?
Да аннотативность, стоит реализовать.

Мне тоже не доводилось встречать необходимость использования различных положений объектов, для разных масштабов в одном чертеже. Больше было вопросов, почему блоки сместилися при изменении масштаба.

Стандартный механизм аннотативности в AutoCAD универсальный, но уж больно затратный, как ты заметил это порождение кучи блоков, хранящих состояние аннотативного объекта, и собственно список масштабов для каждого объекта, каждый масштаб на объекте - тоже дополнительный DbObject в чертеже.

Вариант без хранения состояния расположения и списка масштабов для объектов более быстрый, удобный и безглючный.

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

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

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
По хорошему, похоже, нужно добавить свойства Аннотативность - Да/Нет
И в зависимости от него управлять масштабом.

Можно реализовать реакцию объекта на переменные cannoscale, psltscale, msltscale, не добавляя дополнительного свойства, может оно не понадобится в дальнейшем.

Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 546
  • Карма: 119
Да вот только этот список пользователь может легко очистить.
Для одного объекта да, а если чертеж насыщенный?
1. По опыту пользователь просто не станет вычищать вручную списки масштабов для каждого объекта. Нужно программное средство.
2. При отключении свойства аннотативности блока, список масштабов должен почиститься для блока и каждого вложенного объекта. Я встречал ситуации когда этого не происходило и список масштабов хранился в объекте с отключенным свойством аннотативности. Т.е. возможны некоторые дополнительные проблемы с механизмом очистки.