Вызов переопределенного метода Explode при создании штриховки

Автор Тема: Вызов переопределенного метода Explode при создании штриховки  (Прочитано 11296 раз)

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

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

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
С ними: создал полилинию, вызвал команду и выбрал её, вызвал команду "штриховка", завершил - получил отрезок и два кружка.
Их не должно было появиться. Вот если бы они появились после команды EXPLODE, то это было бы нормально. А со штриховкой никакие отрезки и кружки появляться не должны.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Точно могу сказать, что проблема связана с предварительным просмотром штриховки.
Если вы вокруг полилинии с переопределенной графикой построите прямоугольник (т.е. замкнутый контур), то при наведении мышкой с командой Штриховка на прямоугольник у полилинии перестанет работать переопределении графики - т.е. она превратится обратно в начальную полилинию. Потом конечно фатал
Но если установить переменную HPQUICKPREVIEW в 0, то проблема исчезнет вообще!

Могу предположить, что в методе WorldDraw логично должно быть что-то на эту тему - типа исключить объекты из обработки командой Штриховка (и подобных). Не думаю, что разработчики такого не предусмотрели. Разве что только в АПИ не добавили

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Видимо, AutoCAD выполняет предварительный анализ и подготовку чертежа. Сделано это, скорее всего, для ускорения работы этого самого предварительного просмотра. Чтобы когда пользователь перемещал курсор по чертежу, не было долгих зависаний. Возможно, что в этот анализ как раз входит обработка полилиний - взрыв, получение её объектов, использование этих объектов в составлении временных контуров и т.д. Насколько я помню, штриховку нельзя построить по контурам из объектов, которые не добавлены в БД чертежа. И возможно, что во время работы этой команды базовый метод Explode добавляет получаемые осколки в БД чертежа, а после завершения команды объекты удаляются из базы.
Я вижу в этом возможную проблему, только если используется перерисовка полилинии с изменением её геометрии. Скорее всего, штриховка с использованием такой полилинии как границы будет некорректной.

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

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Я вижу в этом возможную проблему, только если используется перерисовка полилинии с изменением её геометрии. Скорее всего, штриховка с использованием такой полилинии как границы будет некорректной.
Да нет, вполне корректная, только учитывается оригинальная геометрия полилинии:


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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
только учитывается оригинальная геометрия полилинии
Ну, собственно, это я и имел в виду. :)