Не правильно создаются иконки на инструментальной палитре для блоков

Автор Тема: Не правильно создаются иконки на инструментальной палитре для блоков  (Прочитано 5275 раз)

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

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

  • ADN Club
  • *****
  • Сообщений: 532
  • Карма: 117
AutoCAD 2010x32
Созданы блоки для оформления планов пожарной безопасности, наподобие:


полилиния-рамка и зеленая штриховка спереди, а белая штриховка сзади.

В чертеже-хранилище блоков все нормально отображается.

При перетаскивании на палитру инструментов часть иконок для блоков создалась нормально, часть явно с нарушенным порядком прорисовки штриховок. т.е. белый квадрат периодически что-нибудь перекрывает на некоторых блоках.
Пробовал обновить иконки блоков
(command "_blockicon" "*") не помогло, при этом в диалоге вставки блоков отображается правильно.

Подозреваю что существует какой-то кэш, т.к. пробовал удалять блок с палитры, закрывать автокад, менять внешний вид блока, менять порядок следования, цвет штриховок, удалять из папки Images в палитре, снова вставлять но он упорно вставляет первое неверное изображение.
Может кто знает как исправить?

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

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

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

  • ADN Club
  • *****
  • Сообщений: 532
  • Карма: 117
Могу лишь посоветовать переделать сами блоки, так чтобы в них был правильный порядок прорисовки, но без использования DrawOrder (т.е. создать новые блоки и скопировать в них примитивы в нужном порядке).

Тут кажется 2 проблемы DrawOrder в момент создания иконок и кэширование этих иконок
Я попытался переделать блоки разными способами,  но не вижу изменения в иконках для уже перетащенных в палитру блоков.
Если модифицировать блок, переименовать и перетащить на палитру, то изображение меняется.
AutoCAD похоже их закэшировал, возможно в CUIX закинул, или в какую-то другую папку сегодня искать буду.

Даже если это баг в AutoCAD 2010, то смысла о нём говорить нет никакого - ему уже 10 лет.
Скорее всего это не баг, а не реализованная поддержка порядка прорисовки примитивов в блоке при создании иконок палитры в AutoCAD2010.  Возможно с какой-то версии добавили.

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

  • ADN Club
  • *****
  • Сообщений: 532
  • Карма: 117
Даже если это баг в AutoCAD 2010, то смысла о нём говорить нет никакого - ему уже 10 лет.
Могу лишь посоветовать переделать сами блоки, так чтобы в них был правильный порядок прорисовки, но без использования DrawOrder (т.е. создать новые блоки и скопировать в них примитивы в нужном порядке).
И все-таки баг 2010. Пол дня убил на тестирование. (((((

1. Смысл говорить есть, т.к. конторы сидят на тех версиях AutoCAD, которые купили. И новые версии, к сожалению, многие купить не в состоянии из-за "особенностей экономики России". А также из-за рисков отсутствия постоянных лицензий и санкций.

2. Первое что сделал проверял как и когда создаются иконки при перетаскивании блока в палитру.
2.1 Берется имя перетаскиваемого блока
2.2 По имени блока AutoCAD берет информацию из DWG файла на диске и создает иконку в папке палитры ToolPalette\Palettes\Images.

Вот тут я и застрял вчера. Иконка создается не из открытого файла! Ранее думал что AutoCAD ругается на состояние чертежа, что изменен и не сохранен, это не так. Он ругается на отсутствие файла на диске или имени блока в файле, на состояние открытого файла ему наплевать. Специально перебирал варианты с переименованием блоков. Т.е. нужно сохранить файл и перетаскивать, тогда все изменения видны.

3. Далее анализировал порядок примитивов в блоке и порядок прорисовки блока.
3.1 При вставке блока из палитры в новый чертеж не копируется порядок прорисовки. Т.е. переделка блоков в данной версии актуальна для блоков, в которых порядок прорисовки важен! Вот тут было бы полезно знать копируется ли в новой версии, и с какой версии AutoCAD копируется порядок прорисовки блоков? Но это я багом не считаю, скорее недоделка.

3.2 А вот собственно и баг 2010! А иконка то создается в обратном порядке следования примитивов в блоке, а не прямом как при вставке и на порядок прорисовки блока ей наплевать. Интересно также, исправлено ли и с какой версии?

4. Быстрый ХУК для 2010 который пришел мне в голову:
4.1 Перестроить с помощью API примитивы блоков в чертеже в соответствии с порядком прорисовки, чтобы не иметь проблем со вставкой.
4.2 Сохранит копию файла.
4.3 Перестроить с помощью API примитивы блоков в чертеже в обратном порядке следования в блоке.
4.4 Перетащить блоки на палитру с правильными иконками.
4.5 Заменить файл обратно из копии.

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

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

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

  • ADN Club
  • *****
  • Сообщений: 532
  • Карма: 117
Я имел в виду, что если это баг в столь древней версии, то его Autodesk исправлять не будет. Это очевидный факт.
Это я согласен. А если не все исправили в новых версиях, например создание иконок блоков? ;-)

Дополнительно провел проверку копирования и т.д.
Исходный блок(он нормально отображается)
Последовательность в блоке id/handle/type/color:
(2128447760) - 1E4A ( Hatch - 255,255,255 )
(2128447768) - 1E4B ( Polyline - 250 )
(2128447776) - 1E4C ( Hatch - красный )
Порядок прорисовки GetFullDrawOrder:
(2128447760) - 1E4A
(2128447776) - 1E4C
(2128447768) - 1E4B

Блок скопирован через буфер в новый чертеж
Последовательность в блоке id/handle/type/color:
(2127435920) - 4F212 ( Hatch - 255,255,255 )
(2127435928) - 4F213 ( Polyline - 250 )
(2127435936) - 4F214 ( Hatch - красный )
Порядок прорисовки GetFullDrawOrder:
(2127435936) - 4F214
(2127435928) - 4F213
(2127435920) - 4F212

Блок скопирован из нового чертежа в другой новый
Последовательность в блоке id/handle/type/color:
(2124773528) - 4F213 ( Hatch - 255,255,255 )
(2124773536) - 4F214 ( Polyline - 250 )
(2124773544) - 4F215 ( Hatch - красный )
Порядок прорисовки GetFullDrawOrder:
(2124773544) - 4F215
(2124773528) - 4F213
(2124773536) - 4F214

Вставлен через палитру в новый чертеж
Последовательность в блоке id/handle/type/color:
(2124179600) - 4F212 ( Hatch - 255,255,255 )
(2124179608) - 4F213 ( Polyline - 250 )
(2124179616) - 4F214 ( Hatch - красный )
Порядок прорисовки GetFullDrawOrder:
(2124179616) - 4F214
(2124179608) - 4F213
(2124179600) - 4F212

Изменен в исходнике, как надо и вставлен в новый чертеж.(вставляется и копируется нормально...ну только с иконками блоков косяк)
Последовательность в блоке id/handle/type/color:
(2125879440) - 4F212 ( Hatch - 255,255,255 )
(2125879448) - 4F213 ( Hatch - красный )
(2125879456) - 4F214 ( Polyline - 250 )
Порядок прорисовки GetFullDrawOrder:
(2125879440) - 4F212
(2125879448) - 4F213
(2125879456) - 4F214

Итого коллеги: в AutoCAD2010 забудьте о корректной работе порядка прорисовки за пределами настроенного чертежа средствами AutoCAD. Если его не использовать совсем тогда все замечательно )))).

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

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