Сообщество программистов Autodesk в СНГ
ADN Club => Адаптация AutoCAD и вертикальных приложений => Тема начата: Привалов Дмитрий от 17-04-2019, 16:27:33
-
AutoCAD 2010x32
Созданы блоки для оформления планов пожарной безопасности, наподобие:
(https://im0-tub-ru.yandex.net/i?id=cd1d95d1e27a5153d50f42d5ebddcbc1-l&n=13)
полилиния-рамка и зеленая штриховка спереди, а белая штриховка сзади.
В чертеже-хранилище блоков все нормально отображается.
При перетаскивании на палитру инструментов часть иконок для блоков создалась нормально, часть явно с нарушенным порядком прорисовки штриховок. т.е. белый квадрат периодически что-нибудь перекрывает на некоторых блоках.
Пробовал обновить иконки блоков
(command "_blockicon" "*") не помогло, при этом в диалоге вставки блоков отображается правильно.
Подозреваю что существует какой-то кэш, т.к. пробовал удалять блок с палитры, закрывать автокад, менять внешний вид блока, менять порядок следования, цвет штриховок, удалять из папки Images в палитре, снова вставлять но он упорно вставляет первое неверное изображение.
Может кто знает как исправить?
-
Даже если это баг в AutoCAD 2010, то смысла о нём говорить нет никакого - ему уже 10 лет.
Могу лишь посоветовать переделать сами блоки, так чтобы в них был правильный порядок прорисовки, но без использования DrawOrder (т.е. создать новые блоки и скопировать в них примитивы в нужном порядке).
-
Могу лишь посоветовать переделать сами блоки, так чтобы в них был правильный порядок прорисовки, но без использования DrawOrder (т.е. создать новые блоки и скопировать в них примитивы в нужном порядке).
Тут кажется 2 проблемы DrawOrder в момент создания иконок и кэширование этих иконок
Я попытался переделать блоки разными способами, но не вижу изменения в иконках для уже перетащенных в палитру блоков.
Если модифицировать блок, переименовать и перетащить на палитру, то изображение меняется.
AutoCAD похоже их закэшировал, возможно в CUIX закинул, или в какую-то другую папку сегодня искать буду.
Даже если это баг в AutoCAD 2010, то смысла о нём говорить нет никакого - ему уже 10 лет.
Скорее всего это не баг, а не реализованная поддержка порядка прорисовки примитивов в блоке при создании иконок палитры в AutoCAD2010. Возможно с какой-то версии добавили.
-
Даже если это баг в 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 Заменить файл обратно из копии.
-
1. Смысл говорить есть, т.к. конторы сидят на тех версиях AutoCAD, которые купили. И новые версии, к сожалению, многие купить не в состоянии из-за "особенностей экономики России". А также из-за рисков отсутствия постоянных лицензий и санкций.
Я имел в виду, что если это баг в столь древней версии, то его Autodesk исправлять не будет. Это очевидный факт.
-
Я имел в виду, что если это баг в столь древней версии, то его 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. Если его не использовать совсем тогда все замечательно )))).
-
Итого коллеги: в AutoCAD2010 забудьте о корректной работе порядка прорисовки за пределами настроенного чертежа средствами AutoCAD.
Насколько я помню это исправили в AutoCAD 2015 SP2.