Сообщество программистов Autodesk в СНГ

ADN Club => Адаптация AutoCAD и вертикальных приложений => Тема начата: BearDyugin от 26-10-2015, 08:27:26

Название: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 26-10-2015, 08:27:26
Всем привет, извиняюсь за дилетантские вопросы.

В общем создал файл частичной адаптации в 2016 AutoCAD-е, но при загрузке в AutoCAD 2014 он ругается.

Что может быть не так?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Николай Полещук от 26-10-2015, 09:52:09
Файлы CUIX в разных версиях AutoCAD несовместимы, даже если и откроются, то будут неправильно работать.
Совместимость есть только на уровне MNU-файлов.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 26-10-2015, 09:55:03
Хотелось бы уточнить: cui, созданный в 2008 версии, гарантированно преобразуется в cuix. Также гарантированно откроется в 2009.
Я бы сказал, что "обратной совместимости файлов меню нет, т.е. придется создавать в более младшей версии и потом уже открывать в более новой".
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 26-10-2015, 10:27:27
Файлы CUIX в разных версиях AutoCAD несовместимы
Ну я же не просто так захотел чтоб оно работало от нового к старому. Раньше так делал.
Вот и сейчас специально новый пример cuix создал в 2016 и он нормально открылся в 2013
т.е. придется создавать в более младшей версии и потом уже открывать в более новой
Ну так и приходится, специально сегодня установил 2013 AutoCAD. Только там (в 2013) неудобно с png иконками, он не даёт их выбрать, приходиться вручную имена писать.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 26-10-2015, 10:32:48
А зачем png? Для прозрачности? Если я правильно помню, где-то мелькал документ Autodesk Icon Develop Guide (формат pdf, текст достаточно мелкий) - там указывалось, какие цвета RGB AutoCAD понимает как "прозрачный". Может, стоит в эту сторону поискать?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 26-10-2015, 11:02:12
Для прозрачности?
Да, для прозрачного фона.
Нашёл статью http://bimapps.typepad.com/bim-apps/2011/Usability/Autodesk%20Icon%20Guidelines.pdf много всего полезного и интересного, но про прозрачный цвет ничего не нашёл.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 26-10-2015, 11:23:18
https://forums.autodesk.com/t5/autocad-2010-2011-2012/custom-ribbon-tool-background-color/td-p/2571342 :
"As Mat.Kirkland said, colour 192,192,192 is used for transparent backgrounds in autocad.

On the button image editor in autocad, click the more button under the standard colours, then type 192,192,192 in the bottom left where it says color:"

Т.е. RGB 192,192,192 понимается acad'ом как прозрачный цвет.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 26-10-2015, 11:26:09
Есть еще вариант - создать ресурсную dll, куда и загонять все что угодно ;)
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 26-10-2015, 11:49:12
Т.е. RGB 192,192,192 понимается acad'ом как прозрачный цвет.

Спасибо!
Проверил так оно и есть, только не совсем честная прозрачность. Т.е. при наложение других прозрачностей на этот "серый" фон, он становится немного другим не " RGB 192,192,192" и тем самым добавляя серые ореолы к объектам иконки, но как вариант - да.

создать ресурсную dll
Осталось научится создавать эти "ресурсные dll"  :D
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 26-10-2015, 11:51:11
Старая тема: http://forum.dwg.ru/showthread.php?t=31134
Да и посвежее вариантов масса :)
Добавлено:
Туда же - https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#q=how%20to%20create%20resource%20dll%20vc%2B%2B&es_th=1 + https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#newwindow=1&q=how%20to%20create%20resource%20dll
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 26-10-2015, 12:22:31
Старая тема: http://forum.dwg.ru/showthread.php?t=31134

в той теме
Цитата: gomer
Для новых версий это уже не актуально, файлы *.cuix содержат в себе кнопки

Спасибо, но пока не до изучения нового (dll там всякие), со старым бы разобраться, в общем вариант с ручным вводом имён png иконок меня пока больше устраивает.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 26-10-2015, 12:31:04
Под "неактуально" подразумевалось "необязательно". Но это не означает, что механизм прекратил свое существование ;) mnc и mnr до сих пор компилируются :)
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 26-10-2015, 18:04:07
Осталось научится создавать эти "ресурсные dll"  :D
У Андрея Бушмана есть статья на эту тему: http://bushman-andrey.blogspot.com/2013/08/dll-partial-cui.html
В принципе всё достаточно просто и наглядно. А это статьи на нашем сайте (для тех, кому не нужно объяснять как создавать ресурсные dll):
http://adn-cis.org/ispolzovanie-resursnoj-dll-dlya-cuix-s-prozrachnyimi-rastrami.html
http://adn-cis.org/npi-%28cui%29-i-prozrachnyie-kartinki.html
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 27-10-2015, 07:29:13
Блин ещё одна засада с этими иконками, не помню с какого момента, но в AutoCAD-е появилась возможность переключать цветовую схему оформления с тёмной на светлую. И свои иконки AutoCAD каким-то образом меняет в соответствии со схемой, чтоб они нормально читались. А как быть с пользовательскими? То что смотрится хорошо на белом , плохо смотрится на сером :-(. Что делать, очень не хочется уходить от прозрачного фона.
Раз даже AutoCAD глюканул, и при тёмной схеме отображал фон-тёмным, а свои иконки как для светлого.


Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 27-10-2015, 09:22:16
Я посмотрел - имена ресурсов не меняются в штатных файлах адаптации независимо от темы оформления. А если использовать руководство по созданию иконок от Autodesk?
P.S. Конечно, есть возможность и вручную png загонять, и ресурсную dll использовать ;)
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 27-10-2015, 09:32:12
А если использовать руководство по созданию иконок от Autodesk?
Там с непрозрачным фоном предлагают делать.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 27-10-2015, 09:44:25
Внимательно читаем:
http://help.autodesk.com/view/ACD/2015/RUS/?guid=GUID-7103E61A-8317-4834-BB00-0FE23AEB020F
Приходим к выводу, что:
1) Нужно иметь два комплекта иконок
2) Нужно каждый из комплектов иконок поместить в свою ресурсную dll
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 27-10-2015, 09:52:36
Секундочку... Насколько я помню, про фон кнопки там как раз ничего не сказано. Там сказано насчет оформления рисунков.
Вот мое меню в ACAD2016 с разными темами оформления. Никакого переключения не производится. Картинки хранятся в одной ресурсной dll, выполнены как bmp. Так что рекомендация, мне кажется, не совсем обязательна для выполнения.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 27-10-2015, 09:58:32
Картинки хранятся в одной ресурсной dll, выполнены как bmp.
Судя по их виду они без прозрачности (т.е. без цвета 192,192,192 - т.к. они bmp, то другого способа сделать фон прозрачным нет). Geobuilder хочет этого избежать.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 27-10-2015, 10:23:35
У Андрея Бушмана есть статья на эту тему: http://bushman-andrey.blogspot.com/2013/08/dll-partial-cui.html
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2F4.bp.blogspot.com%2F-ij7Ng9Vz_Rs%2FUgyN8zUf8bI%2FAAAAAAAAA0w%2FQ3Zet4xIAWE%2Fs1600%2Fadd_resource_file.png&hash=aa182a45ef58671e0d352d41cbb98dc1)
но у меня нет такого пункта "ресурсы", может потому что у меня студия "экспресс"?  :'(
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 27-10-2015, 10:35:32
но у меня нет такого пункта "ресурсы", может потому что у меня студия "экспресс"?  :'(
Да. Из бесплатных есть Visual Studio Community, в которой эта и многие другие возможности есть.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 27-10-2015, 10:53:30
Из бесплатных есть Visual Studio Community
Спасибо, уже устанавливаю.

Приходим к выводу, что:
1) Нужно иметь два комплекта иконок
2) Нужно каждый из комплектов иконок поместить в свою ресурсную dll
Хорошо, в справке написано
Цитировать
Начиная с AutoCAD 2015, если файл CUIx использует внешний ресурс DLL для пользовательских изображений, необходимо создать отдельный ресурс DLL для каждой темы: светлой и темной.
А как быть если приложение будет использоваться в более ранних чем AutoCAD 2015? Я всё про публикацию приложений в App Store.
Как будет правильнее, для разных версий автокада создавать разные Cuix или же добавить 3-ий dll без суфикса "_light/_dark"?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 27-10-2015, 10:54:38
Подозреваю, что проще будет png или ico загонять в dll.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 27-10-2015, 11:01:02
Подозреваю, что проще будет png или ico загонять в dll.
Не, не... Тут уже второй вопрос, с прозрачностью разобрались, bmp с прозрачным цветом 192,192,192, самый простой вариант. Но появились новые грабли смена цветовой схемы, на твоём же рисунке "голубой шар с кисточкой и красным кругляшком" смотрится куда лучше на белом чем на тёмном. Для тёмной надо новый рисовать с другими цветами для контраста.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 27-10-2015, 11:04:07
У меня bmp сформированы неверно, надо будет переделывать (инет глюканул, мой комментарий не прошел). Как будет время - проверю, что получится.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Doublefish от 27-10-2015, 11:09:49
Когда я публиковал приложение в App Store я тоже задумался об иконках и как с ними быть. В результате я пришёл к тому, что вручную перекрасил все иконки (файлы bmp), изменив фон на 192,192,192 (даже и не зная ещё тогда что именно этот цвет и надо). Это решило проблему с отображением иконок во всех AutoCAD 2012-2016 даже с переключением с темной темы на светлую. Имеем всего один cuix файл и все иконки внутри его. В результате я про иконки забыл как страшный сон, т.к. больше проблем с этим нет. Все остальные варианты оказались трудней и отнимали время, а оказолось что проще перекрасить в ручную в самом редакторе CUIX по кнопке Изменить.

Изменения cuix производил в AutoCAD 2014, изменённый cuix загружается плагином и отображается нормально в AutoCAD 2012-2016.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 27-10-2015, 11:15:54
Это решило проблему с отображением иконок во всех AutoCAD 2012-2016 даже с переключением с темной темы на светлую.
Т.е. не менять цвета при переходе, а изначально подобрать такие, чтоб и там и там оптимально смотрелись?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Doublefish от 27-10-2015, 11:28:42
Пример иконки bmp в CUIX, отображение в темной схеме и затем отображение в светлой теме - проблемы с отображением нет
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Doublefish от 27-10-2015, 11:35:24
в названии темы в одном слове ошибка - поправьте пожалуйста
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 27-10-2015, 12:42:21
Как будет правильнее, для разных версий автокада создавать разные Cuix или же добавить 3-ий dll без суфикса "_light/_dark"?
Ну это на твоё усмотрение. Только суффикс "_dark" не нужен - отсутствие суффикса как раз и означает тему "_dark".

P.S.: По поводу последнего моего утверждения - на 100% не уверен. Нужно проверять.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 27-10-2015, 12:49:59
Только суффикса "_dark" нет - отсутствие суффикса как раз и означает тему "_dark".
В ранних версиях иконки буду браться из "без суффикса" или первой попавшейся?
Ну и в справке всё же написано
Цитировать
Например, если загружен файл CUIx под именем mymenu.cuix, AutoCAD выполняет поиск файла библиотеки ресурсов mymenu_light.dll, если используется светлая тема, и файла mymenu_dark.dll, если используется темная тема.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 27-10-2015, 12:52:53
В ранних версиях иконки буду браться из "без суффикса" или первой попавшейся?
В ранних версиях только без суффикса - про суффикс они понятия не имеют. В 2015 и новее думаю (!!!), что при отсутствии dll с суффиксом "_dark" будет браться без суффикса, но это нужно проверять. У меня сейчас такой возможности нет, а ты как раз этим занимаешься. Вот и доложишь результаты тестирования. :)
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 28-10-2015, 11:14:59
Только суффикс "_dark" не нужен - отсутствие суффикса как раз и означает тему "_dark".
Блин и точно, с суффиксом "_dark" он вообще не читает. Создал *_light и *_dark, отображалось всегда только как в *_light, переименовал *_dark в без суффикса, и всё, стало картинку из него подхватывать для тёмной темы.
Хотя опять же не фига не логично. Ранние версии как раз и имели только светлое оформление, а иконку будут брать для тёмной из файла без суффикса.

Также попробовал в dll засунуть иконки pngи icoно AutoCAD (даже 2016) почему-то не хочет их показывать.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Doublefish от 28-10-2015, 11:38:40
Цитировать
Также попробовал в dll засунуть иконки pngи icoно AutoCAD (даже 2016) почему-то не хочет их показывать.

1. Свойство ИД у вас точно в кавычках указано в dll?
2. Имя dll файла точно такое же как и cuix файла и они рядом?
3. В cuix в свойствах команды указаны малое и большое изображение в виде ИД без кавычек и точно свопадает с ид п.1?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 28-10-2015, 11:42:16
Небольшой отчет: проверил на нескольких bmp, сделав для них фон RGB 192,192,192. dll одна. Иконки вроде бы отображаются с прозрачностью и в темной, и светлой темах оформления. ico / png не загонял.
Все сделано в VS2015CommunityEdition
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 28-10-2015, 13:39:33
png загнать в dll не получится, а ico можно: Использование ресурсной dll для CUIx с прозрачными растрами (http://adn-cis.org/ispolzovanie-resursnoj-dll-dlya-cuix-s-prozrachnyimi-rastrami.html)
Хочу обратить внимание на то, что тип ресурса должен быть не BITMAP, а RCDATA
Ну и прикладываю пример проекта. В нём maestro.dll и имена кнопок:
ICO_16_EXPLODE   
ICO_32_EXPLODE   
ICO_16_EXPORT_FILE
ICO_32_EXPORT_FILE
ICO_16_EXTEND     
ICO_32_EXTEND     
ICO_16_EXTRUD     
ICO_32_EXTRUD
Так что если сделать меню maestro.cuix (можно и с другим именем, но тогда maestro.dll нужно переименовать) и использовать эти имена, то должны появляться иконки. Проще всего для добавления новых иконок править в текстовом редакторе (даже в обычном Блокноте) файл maestro.rc
Ту часть, которая начинается с:
ICO_16_EXPLODE       RCDATA                  "./res/RCDATA_16_EXPLODE.ico"Ну а затем перестроить проект.


Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 29-10-2015, 06:50:08
Хочу обратить внимание на то, что тип ресурса должен быть не BITMAP, а RCDATA
А VS по-умолчанию определяет их как ICON, изменил на RCDATA и всё получилось. Потом пошёл дальше в тестах, и png определил как RCDATA, на что AutoCAD закрылся с ошибкой, и пока я это безобразие не исправил даже запускаться больше не стал выдавая ошибку.

В общем png через ресурсный dll ни как не получается использовать в AutoCAD, странно на прямую в cuix можно, а через dll нельзя.

Но самое плохое это
Хотя опять же не фига не логично. Ранние версии как раз и имели только светлое оформление, а иконку будут брать для тёмной из файла без суффикса.

Т.е. придётся всё равно делать разные Cuix для разных версий AutoCAD, причём для ранних(19.0-19.1)  можно и без dll просто с прозрачными bmp, а для свежих(20.0-20.1) уже dark\light dll. А в случаи с Lisp приложениями это лишние движения, теряется кроссплатформенность  :(
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 29-10-2015, 10:15:16
Т.е. придётся всё равно делать разные Cuix для разных версий AutoCAD, причём для ранних(19.0-19.1)  можно и без dll просто с прозрачными bmp, а для свежих(20.0-20.1) уже dark\light dll.
Недавно как раз с этим очень плотно имел дело. CUIX-файл делал один на версии 2014-2016, проблем с этим не было. Также, сделал два C++ проекта с ресурсными иконочными DLL - один для темной схемы, второй - для светлой. В настройках проектов в разделе "Build Events - Post Build Events" можно настроить события таким образом, чтобы создаваемые dll файлы после сборки сразу копировались в нужные папки под нужным названием. В папку для 2014 версии - только "светлая" dll без суффикса, в папку для версий 2015-2016 - "светлая" с суффиксом "_light", "темная" - без суффикса. Я сперва так делал, а потом настроил то же самое но уже в проекте WIX-инсталлятора. В общем, каким образом ни делай, есть возможность один раз настроить и уже потом не думать откуда и какие файлы нужно скопировать и как назвать - все делается автоматически.
Как AutoCAD определяет, какой DLL подгружать:
- в версиях до 2014 включительно подгружается только та DLL с иконками, название которой совпадает с названием файла CIUX. К примеру, есть файл: "MyTools.cuix", иконки для этого файла ищутся в файле "MyTools.dll".
- в версиях 2015-2016 для темной схемы подгружается DLL, совпадающая с названием CUIX, для светлой - название с суффиксом "_light". Пример: "MyTools.cuix", иконки для темной схемы: "MyTools.dll", для светлой: "MyTools_light.dll".
Еще один неочевидный момент. Можно создавать один ICO файл для иконок 16х16 и 32х32. Для этого внутрь ICO нужно поместить два соответствующих изображения. В настройках кнопки указывается при этом одинаковый ID изображения для большой и маленькой кнопки. AutoCAD сам выберет иконку в зависимости от размера выводимого изображения. Этот прием позволяет сильно сократить количество ICO файлов в ресурсах C++ проекта.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 29-10-2015, 10:32:37
В папку для 2014 версии - только "светлая" dll без суффикса, в папку для версий 2015-2016 - "светлая" с суффиксом "_light", "темная" - без суффикса.
Воот, а где эти папки?
.bundle\Contents\Resources\en-us\2014 или .bundle\Contents\Resources\2015-2016\ru-RU или куда?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 29-10-2015, 10:39:26
Я картинок добавил, там это показано. В принципе, структура Bundle может быть любая. Но идею Вы верно уловили - CUIX и DLL для версий 2014 и 2015-2016 должны лежать в разных папках.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 29-10-2015, 10:56:30
Я картинок добавил, там это показано
Клёва, а можно ещё картинку PackageContents.xml, пожалуйста. Лучше бы сам файлик, но я смотрю там много секретного, хотя
бы картинку глянуть.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 29-10-2015, 11:04:55
Все секретное удалил и пометил как "<deleted>" :)
Код - XML [Выбрать]
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <ApplicationPackage
  4.  SchemaVersion="1.0"
  5.  AutodeskProduct="AutoCAD"
  6.  ProductType="Application"
  7.  AppVersion="1.0.2"
  8.  FriendlyVersion="1.0.0"
  9.  Author="Dmitriy Zagorulkin"
  10.  Name="<deleted>"
  11.   Description="<deleted>"
  12.   ProductCode="<deleted>"
  13.   UpgradeCode="<deleted>"
  14.   HelpFile="./Resources/Help/<deleted>C3dNetUtils.chm">
  15.  
  16.   <CompanyDetails
  17.    Name="Dmitriy Zagorulkin"
  18.    Phone=" "
  19.    Url="https://vk.com/zagorulkin"
  20.    Email="zagor.dmtr@gmail.com" />
  21.  
  22.   <RuntimeRequirements
  23.    SupportPath="./Resources/Help/"/>  
  24.  
  25.   <Components Description="R19 Parts">
  26.  
  27.     <RuntimeRequirements
  28.      OS="Win64"
  29.      Platform="Civil3D"
  30.      SeriesMin="R19.1"
  31.      SeriesMax="R19.1"
  32.      SupportPath="./Resources/R19/"/>
  33.  
  34.     <ComponentEntry
  35.      AppName="<deleted>C3dNetUtils R19 CUIX file"
  36.       AppDescription="CUIX file for load into AutoCAD Civil 3D 2014"
  37.       Version="1.0.2"
  38.       ModuleName="./Resources/R19/<deleted>C3dNetUtils.cuix"
  39.       AppType="CuiX"/>
  40.      
  41.    
  42.     <ComponentEntry
  43.      AppName="<deleted>C3dNetUtils R19 NET DLL file"
  44.       AppDescription="Net dll for application load into AutoCAD Civil 3D 2014"
  45.       Version="1.0.2"
  46.       ModuleName="./Contents/R19/<deleted>C3dNetUtilsR19.dll"
  47.       LoadOnAutoCADStartup="True">
  48.       <Commands>
  49.         <Command Local="C3dNetUtilsInitialize" Global="C3dNetUtilsInitialize" StartupCommand="True" />
  50.       </Commands>
  51.     </ComponentEntry>
  52.   </Components>
  53.  
  54.   <Components Description="R20 Parts">
  55.  
  56.     <RuntimeRequirements
  57.      OS="Win64" Platform="Civil3D" SeriesMin="R20.0"
  58.      SeriesMax="R20.1" SupportPath="./Resources/R20" />
  59.  
  60.     <ComponentEntry
  61.      AppName="<deleted>C3dNetUtils R20 CUIX file"
  62.       AppDescription="CUIX file for load into AutoCAD Civil 3D 2015-2016"
  63.       ModuleName="./Resources/R20/<deleted>C3dNetUtils.cuix"
  64.       Version="1.0.2"
  65.       AppType="CuiX" />
  66.    
  67.     <ComponentEntry
  68.      AppName="<deleted>C3dNetUtils R20 NET DLL file"
  69.       AppDescription="Net dll for application load into AutoCAD Civil 3D 2015-2016"
  70.       Version="1.0.2"
  71.       ModuleName="./Contents/R20/<deleted>C3dNetUtilsR20.dll"
  72.       LoadOnAutoCADStartup="True">
  73.       <Commands>
  74.         <Command Local="C3dNetUtilsInitialize" Global="C3dNetUtilsInitialize" StartupCommand="True" />
  75.       </Commands>
  76.     </ComponentEntry>
  77.   </Components>
  78.  
  79. </ApplicationPackage>
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Андрей Бушман от 29-10-2015, 11:05:16
В конце своей заметки я добавил "Примечание" и "UPD".
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 09-11-2015, 18:33:33
В общем сделал всё как научили, долго мучился, больше из-за того что расплодилось разных вариантов под одним и тем же именем во всех путях поиска, и у AutoCAD голова кругом шла, что от куда брать  :o Но потам разобравшись, всё лишнее удалил. И всё заработало!
Но вот присылает мне мой чудо наставник, Sachin Kathare, установочный файл. А там в cuix коды ресурсов заменены на bmp фалы  :-[ ...
Что я сделал не так?
Ведь не лень было ему, (то ли Sachin то ли  Kathare, фиг знает где имя) bmp создавать из приложенных для фала справки png, и при чём даже не в сам cuix файл их запаковывать а в папку support копировать, туда же куда и Cuix при установки копируется. Как-то может нужно подсказать\намекнуть что вместе с cuix-ми нужно и ресурсные dll-ы копировать?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Андрей Бушман от 09-11-2015, 18:37:08
Ведь не лень было ему, (то ли Sachin то ли  Kathare, фиг знает где имя) bmp создавать из приложенных для фала справки png
А почему его самого об этом не спросить (я не об имени|фамилии)?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 09-11-2015, 18:53:16
А почему его самого об этом не спросить (я не об имени|фамилии)?
Обязательно спрошу, только они отвечают спустя минимум неделю.
Я кстати его и про имя\фамилию спросил, но он на этот вопрос так и не ответил. Они так ещё забавно пишут в письмах Dear ... Я конечно знаю что это Уважаемый, но почему-то читается как Дорогой  :D


Другой мой куратор, Sripathi Acharya, засунул обновления моего приложение для Civil 3D почему-то в AutoCAD, по ссылке  (https://apps.autodesk.com/ACD/ru/Detail/Index?id=appstore.exchange.autodesk.com%3ageo_cartogram_windows32and64%3aru)оно есть а вот ни каким другим путём в app store его найти больше нельзя, тоже спросил его об этом неделю назад, до сих пор тишина.

Как бы есть сомнения, может я криворукий, вот и спросил тут.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Андрей Бушман от 09-11-2015, 19:05:04
...
они отвечают спустя минимум неделю
...
в app store
теперь понял. ) То, что вместо цивила засунули в обычный акад - это может быть обычной ошибкой (человеческий фактор) либо в настройках XML-файла пакета не был указан цивил в качестве целевого вертикального приложения (тоже могло произойти по запарке). Наверняка смогут ответить скорее всего только авторы правок.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Андрей Бушман от 09-11-2015, 19:08:48
Если появится аргументированное объяснение (например от тех же авторов правки), то мне тоже будет интересно почитать его.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 09-11-2015, 20:55:39
Но вот присылает мне мой чудо наставник, Sachin Kathare, установочный файл. А там в cuix коды ресурсов заменены на bmp фалы   ...
Что я сделал не так?
Ведь не лень было ему, (то ли Sachin то ли  Kathare, фиг знает где имя) bmp создавать из приложенных для фала справки png, и при чём даже не в сам cuix файл их запаковывать а в папку support копировать, туда же куда и Cuix при установки копируется. Как-то может нужно подсказать\намекнуть что вместе с cuix-ми нужно и ресурсные dll-ы копировать?
Подозреваю, что они просто не знают, что можно по-другому делать. Конечно, надо подсказать. Для этого они и присылают установщик, чтобы мы могли им замечания/пожелания высказать.
По поводу имени - в именах сотрудников Autodesk (может так принято в США?) сперва идет имя, потом фамилия. Скорее всего, тут так же.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 12-11-2015, 20:04:59
Но вот присылает мне мой чудо наставник, Sachin Kathare, установочный файл. А там в cuix коды ресурсов заменены на bmp фалы   ...
Что я сделал не так?
Ну в итоге, сам криворукий.
А я ещё всё думаю, а как AutoCAD узнает где ему нужный dll искать для соответствующего Cuix? Причём, странно почему-то cuxi файл он загружает не из папки bundle, а копирует его в свой support. А потом заметил строчку в примере Дмитрия SupportPath="./Resources/R19/", а я такого не писал в своём PackageContents.xml, вот он иконки и не находил. Я же раньше не знал, что можно свой bundle  скопировать в C:\ProgramData\Autodesk\ApplicationPlugins и при запуске AutoCAD сам всё подхватит и установит,  и тестировал подгружая всё вручную.
Теперь всё работает, попробую обновить ещё раз и как-то объяснить эту схему своему "наставнику", я думаю он сам по ходу не знал что так можно, дописать SupportPath в PackageContents.xml было бы проще, чем в cuix bmp-шные иконки запихивать.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 26-05-2017, 15:41:23
А VS по-умолчанию определяет их как ICON, изменил на RCDATA и всё получилось. Потом пошёл дальше в тестах, и png определил как RCDATA, на что AutoCAD закрылся с ошибкой, и пока я это безобразие не исправил даже запускаться больше не стал выдавая ошибку.

В общем png через ресурсный dll ни как не получается использовать в AutoCAD, странно на прямую в cuix можно, а через dll нельзя.

Я пропустил этот момент, но начиная с AutoCAD 2017 SP1 можно добавлять в ресурсную dll не только ico, но и png. Autodesk'овцы исправили баг, который этому препятствовал.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 27-05-2017, 07:06:30
начиная с AutoCAD 2017 SP1 можно добавлять в ресурсную dll не только ico, но и png. Autodesk'овцы исправили баг, который этому препятствовал.
Круто, но... есть индивиды что до сих пор сидят на версиях 2010, всё равно для них придётся делать ico. Да и вот эта заморочка с dll для тёмной и светлой темы, могли бы сразу ещё тогда сделать png для тёмной и светлой темы, хотя это для нас, для приложений с 1-2 кнопками удобно 1-2 png, а если у приложения 6 панелей с 50-ю кнопками\иконками, конечно удобнее для всего этого использовать 1-2 ресурсных dll.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 12-10-2017, 12:41:01
но начиная с AutoCAD 2017
Если я не ошибаюсь, но начиная с 2017 почему-то через боундел не подхватывается  SupportPath и соответственно Cuix не видит dll :-(
2018
(https://s1.postimg.org/3ikg40eabj/2017-10-12_163635.png)
2014
(https://s1.postimg.org/6i0abugu4f/2017-10-12_163906.png)
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 12-10-2017, 12:56:29
Я конечно могу ошибаться, но SupportPath здесь роли не играет. dll-файл смотрится в том же каталоге, что одноимённый cuix-файл. Проверь не заблокирован ли у тебя dll-файл.

Я проверил у себя и в 2017 и в 2018. Всё нормально (и light, и dark):
(https://farm5.staticflickr.com/4460/37602181026_8b51cafba9_o.png)

Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 12-10-2017, 13:14:04
Если я не ошибаюсь, но начиная с 2017 почему-то через боундел не подхватывается  SupportPath и соответственно Cuix не видит dll :-(
Замечал несколько раз такое поведение. На одном из ПК мне удалось победить эту проблему установкой всех версий C++ Redistributable и .NET Framework 4.7 (хоть Autodesk и рекомендует его не использовать). Подозреваю, что ресурсные DLL, создаваемые в современных версиях Visual Studio требуют наличия на ПК современных версий C++ Redistributable и .NET Framework. Т.к. в С++ совсем не силён, то могу только предполагать.
К слову, у меня в версиях Civil 3D 2016-2018 твоя вкладка отображается корректно.
Проверь не заблокирован ли у тебя dll-файл.
Dll заблокированы, но это не мешает  :)
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 12-10-2017, 14:53:34
Подозреваю, что ресурсные DLL, создаваемые в современных версиях Visual Studio требуют наличия на ПК современных версий C++ Redistributable и .NET Framework. Т.к. в С++ совсем не силён, то могу только предполагать.
Нет. Это не так. В ресурсной DLL только ресурсы и наличие C++ Redistributable и .NET Framework не требуется совсем.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 12-10-2017, 15:50:45
Меня на эту мысль навело то, что мы же задаём параметр Platform Toolset:
(https://s1.postimg.org/10bro9gwkb/Toolset.png) (https://postimg.org/image/10bro9gwkb/)
Он ведь как-то влияет на получаемую dll?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 12-10-2017, 15:52:10
Он ведь как-то влияет на получаемую dll?
Нет. Для ресурсной никак не влияет. А вот для обычных влияет.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 12-10-2017, 16:00:49
Нет. Для ресурсной никак не влияет.
И Бушман Андрей то же самое пишет (http://bushman-andrey.blogspot.ru/2013/08/dll-partial-cui.html):
Цитировать
Однако, когда речь заходит о создании DLL файл ресурсов, то тут всё гораздо проще: достаточно скомпилировать файл один раз (используя любую версию инструментов), с конфигурацией Release Win32, и затем использовать его на платформах x86\x64 (я компилировал DLL x86 и при этом в Windows 7 x64 мой CUI файл успешно извлекал из него изображения).
А я уж хотел его упрекнуть в том, что он в статье писал о том, что нужно задавать этот параметр. Оказывается - нет. Лучше бы вообще не расписывал тонкости работы с Toolset (в рамках именно этой статьи), а то только с толку сбил :)
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 13-10-2017, 05:31:15
SupportPath здесь роли не играет. dll-файл смотрится в том же каталоге, что одноимённый cuix-файл.
Играет, это мы где-то на этом же форуме ещё раньше выяснили.
Дело в том что cuix грузится не из папки bundle а сначала зачем-то копируется в C:\Users\*****\AppData\Roaming\Autodesk\****\***\Support при этом dll с собой не копирует.  И так как он не находит dllрядом ищет её в путях поиска.
И вот тут какая-то проблема возникает, я уже и в ручную добавляю этот путь, но после перезагрузки AutoCAD в списке путей он пропадает :-( Была как то в 2015 версии похожая проблема, но там из-за кириллицы в путях, что ему не нравится сейчас не пойму :-(
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 13-10-2017, 12:58:04
Остаётся порекомендовать тебе:
1) Убедится, что в путях доступа нет dll-файла с таким же именем, но другим содержимым.
2) Скопировать этот dll-файл (а точнее два файла) в каталог рядом с cuix-файлом.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Debalance от 13-10-2017, 19:58:46
Off-Topic: показать
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F370378%2F105409719.8%2F0_178010_ea129247_orig.png&hash=1aee600b2e949d578eb7f5cf75475f0d)

Знаковый пост!
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 13-11-2017, 05:42:04
Остаётся порекомендовать тебе:
1) Убедится, что в путях доступа нет dll-файла с таким же именем, но другим содержимым.
2) Скопировать этот dll-файл (а точнее два файла) в каталог рядом с cuix-файлом.
В общем есть таки ограничение  на количество записей в "пути поиска" получается их там не может быть больше 34, и в последних версиях Autodesk умудрился забить весь этот список своими путями, для пользователей особо места не осталось. В ручном режиме я конечно обхитрил его, удалил пару путей явно мною не используемых и добавил свои но не в конце а середину списка.
Но как быть с boundle технологией и нашими ресурсными dll ?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 13-11-2017, 07:51:06
Скопировать этот dll-файл (а точнее два файла) в каталог рядом с cuix-файлом.
В общем скопировать не проблема, надо подумать ещё как потом обновлять...
Код - Auto/Visual Lisp [Выбрать]
  1. (defun dll_near_cuix (name         bundle_name  /
  2.                       name_cuix    name_dll     name_dll_light
  3.                       R            supp_dir      prog_dir
  4.                      )
  5. ;;;  (dll_near_cuix  "Geo_dev"  "BearDyugin Deviations.bundle")
  6.   (if (>= (atoi (getvar 'ACADVER)) 20)
  7.     (setq
  8.       name_cuix      (strcat name ".cuix")
  9.       name_dll       (strcat name ".dll")
  10.       name_dll_light (strcat name "_light.dll")
  11.       R              "\\R20"
  12.     )
  13.     (setq
  14.       name_cuix (strcat name "_19.cuix")
  15.       name_dll  (strcat name "_19.dll")
  16.       R         "\\R19"
  17.     )
  18.   )
  19.   (if (and
  20.         (not (findfile name_dll))
  21.         (setq supp_dir (findfile name_cuix))
  22.       )
  23.     (progn
  24.       (setq supp_dir (vl-filename-directory supp_dir)
  25.             prog_dir (getenv "programdata")
  26.             prog_dir (strcat
  27.                        prog_dir
  28.                        "\\Autodesk\\ApplicationPlugins\\"
  29.                        bundle_name
  30.                        "\\Contents\\Resources"
  31.                        R
  32.                       )
  33.       )
  34.       (if (setq temp (findfile (strcat prog_dir "\\" name_dll)))
  35.         (vl-file-copy temp (strcat supp_dir "\\" name_dll))
  36.       )
  37.       (if
  38.         (and
  39.           name_dll_light
  40.           (setq temp (findfile (strcat prog_dir "\\" name_dll_light)))
  41.         )
  42.          (vl-file-copy temp (strcat supp_dir "\\" name_dll_light))
  43.       )
  44.     )
  45.   )
  46. )
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 13-11-2017, 08:57:29
Ну, теоретически надо выгружать меню, и заменять файлы.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 13-11-2017, 09:23:47
Ну, теоретически надо выгружать меню, и заменять файлы.
Это кстати неплохо бы делать и при первом добавлении, а то в противном случае иконки появляются только после перезагрузки AutoCAD.
Есть не командный метод перезагрузки меню?
Твой код читал но так и не понял http://autolisp.ru/wp-content/uploads/2013/11/kpblc-menu-update.lsp
Опять же, тогда можно и dll ни куда не копировать? выгрузить меню то что из support, и загрузить то что из boundle :-) Очень я сомневаюсь, что на одном ПК будут работать разные пользователи и при этом ещё полезут в адаптацию...
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 13-11-2017, 10:09:23
Если выполняется загрузка частичного меню, то я предпочитаю сейчас использовать именно командный метод: в противном случае меню может быть загружено, но ни лента, ни выпадающее меню не отображаются.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 13-11-2017, 10:34:24
Есть не командный метод перезагрузки меню?
MenuGroups.Load для загрузки меню и MenuGroup.Unload для выгрузки.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 06-01-2018, 06:06:24
Ребята, кто-нибудь может по-русски объяснить чего мне там в ответе написали...
https://forums.autodesk.com/t5/autocad-forum/cuix-file-and-icons-in-the-resource-dll/td-p/7565485#M451
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Debalance от 06-01-2018, 10:12:46
чего мне там в ответе написали...
Похоже чувак ушел от ответа. Сам понимаешь, "EXPERT ELITE" у таких язык подвешен...
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 02-04-2018, 12:45:54
В общем выгружаю командно меню которое загружено из папки support, и загружаю его же командно из папки bundle
перезагружаю AutoCAD и оно опять загружено из support
Как быть? нужно рабочее пространство ещё сохранять?
Нашёл код у Алексея
Код - Auto/Visual Lisp [Выбрать]
  1.  (if (setq wscurrent (getvar "wscurrent"))
  2.         (command "_.wssave" wscurrent "_y")
  3.         )
Вроде сделал так, но эффекта 0
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 02-04-2018, 13:11:37
А после загрузки меню точно загружено из bundle? И не срабатывает ли какой-то код, меняющий меню?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 02-04-2018, 13:14:20
Вот такой простенький лиспик выдаст перечень загруженных меню и их путей
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-load-com)
  2.  
  3. (defun tt (/ lst)
  4.   (vlax-for item (vla-get-menugroups (vlax-get-acad-object))
  5.     (setq lst (cons (cons (vla-get-name item) (vla-get-menufilename item)) lst))
  6.     ) ;_ end of vlax-for
  7.   (vl-sort lst '(lambda (a b) (< (car a) (car b))))
  8.   ) ;_ end of defun

Да, кстати! Посмотри, нет ли у тебя "необработанных" меню - иногда они такие бяки порождают!
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 02-04-2018, 15:00:05
Примерно так и делаю
Код - Auto/Visual Lisp [Выбрать]
  1. (defun Geo_reload_cuix
  2.        (name bundle_name / name_cuix R supp_dir prog_dir pas)
  3.  
  4.   (vlax-for item
  5.                  (vla-get-MenuGroups
  6.                    (vlax-get-acad-object)
  7.                  )
  8.     (if (eq (vla-get-Name item) name)
  9.       (setq pas (vla-get-menuFileName item))
  10.     )
  11.   )
  12.   (setq R         (if (>= (atoi (getvar 'ACADVER)) 20)
  13.                     "\\R20"
  14.                     "\\R19"
  15.                   )
  16.         prog_dir  (getenv "programdata")
  17.         name_cuix (strcat name ".cuix")
  18.   )
  19.   (if (and
  20.         pas
  21.         (not (wcmatch pas "*ProgramData*"))
  22.         (setq supp_dir (findfile name_cuix))
  23.         (setq temp (findfile (strcat (strcat
  24.                                        prog_dir
  25.                                        "\\Autodesk\\ApplicationPlugins\\"
  26.                                        bundle_name
  27.                                        "\\Contents\\Resources"
  28.                                        R
  29.                                       )
  30.                                      "\\"
  31.                                      name_cuix
  32.                              )
  33.                    )
  34.         )
  35.       )
  36.     (progn
  37.       (command "_.menuunload" name)
  38.       (command "_.menuload" temp)
  39.       (if (setq wscurrent (getvar "wscurrent"))
  40.         (command "_.wssave" wscurrent "_y")
  41.       )
  42.     )
  43.   )
  44. )
Меню загружается то что нужно, т.к. начинают отображаться иконки кнопок, потому что рядом с cuix в bundle лежит ресурсная dll, а рядом с cuix в support нет

Но всё равно это всё полумеры...

Раньше я копировал dll из bundle в suport и всё работало, но потом подумал над обновлением, и решил перезагружать cuix, но когда опять столкнулся с проблемой теперь думаю просто проверять дату dll если она в bundle свежее то обновлять dll в support.

Но эти функции я вешаю проверять при запуске команд, а до того там нет иконок :-(
Пробовал в конце файла сразу вызов функции делать, чтоб типа в момент загрузки, но фиг, она загружается так рано, что AutoCAD ещё не готов ни чего выполнять, в итоге ни чего и не выполняется :-(

При этом когда вручную делаю перезагрузку меню, то всё сохраняется, и перезапуск AutoCAD уже ничего назад не возвращает.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 02-04-2018, 15:22:35
Возможно, не срабатывает (findfile name_cuix). Я бы добавил удаление старых файлов меню, по принципу:
Код - Auto/Visual Lisp [Выбрать]
  1. (defun geo_reload_cuix (name bundle_name / name_cuix r supp_dir prog_dir pas)
  2.   (setq pas       (menugroup name)
  3.         r         (strcat "\\R" (itoa (atoi (getvar "acadver"))))
  4.         prog_dir  (getenv "programdata")
  5.         name_cuix (strcat name ".cuix")
  6.         ) ;_ end of setq
  7.   (if (and pas
  8.            (not (wcmatch pas "*ProgramData*"))
  9.            (setq supp_dir (findfile name_cuix))
  10.            (setq temp (findfile
  11.                         (strcat (strcat prog_dir "\\Autodesk\\ApplicationPlugins\\" bundle_name "\\Contents\\Resources" r)
  12.                                 "\\"
  13.                                 name_cuix
  14.                                 ) ;_ end of strcat
  15.                         ) ;_ end of findfile
  16.                  ) ;_ end of setq
  17.            ) ;_ end of and
  18.     (progn (command "_.menuunload" name)
  19.            (foreach file (vl-directory-files (vl-filename-directory name) (strcat (vl-filename-base name) ".*") 1)
  20.              (vl-file-delete file)
  21.              ) ;_ end of foreach
  22.            (foreach file (vl-directory-files (vl-filename-directory temp) (strcat (vl-filename-base temp) ".*") 1)
  23.              (if (and (vl-filename-extension file)
  24.                       (wcmatch (vl-string-trim "." (strcase (vl-filename-extension file))) "MN[RC]")
  25.                       ) ;_ end of and
  26.                (vl-file-delete file)
  27.                ) ;_ end of if
  28.              ) ;_ end of foreach
  29.            (command "_.menuload" temp)
  30.            (if (setq wscurrent (getvar "wscurrent"))
  31.              (command "_.wssave" wscurrent "_y")
  32.              ) ;_ end of if
  33.            ) ;_ end of progn
  34.     ) ;_ end of if
  35.   ) ;_ end of defun
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 02-04-2018, 15:24:09
Пока не забыл: для обновления ресурсной dll необходимо будет выгружать cuix, удалять файлы mn[rc], и только потом выполнять обновление файлов и загрузку меню.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 02-04-2018, 15:36:16
Я бы добавил удаление старых файлов меню
Пока не проверял, но я думаю AutoCAD их опять туда вернёт.
Не совсем понятно как эта bundle технология работает, запускается AutoCAD, заглядывает в C:\ProgramData\Autodesk\ApplicationPlugins читает там все PackageContents.xml во всех bundle, и если не находит cuix в support, то копирует его туда, и уже от туда загружает в AutoCAD
Так что вернусь к копированию dll, и при этом перезагрузкой cuix, как ты позже заметил.

Вопрос, как это сделать без вмешательства пользователя? Ну т.е. сегодня, он у меня должен сначала увидеть, вопросики вместо иконок, догадаться нажать на одну из них, тогда при запуске команды я проверяю, как дела с Cuix и при необходимости копирую\обновляю их...
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 02-04-2018, 16:38:09
Если у тебя лисповое приложение, то прямо при загрузке его и выполняй проверку меню, достаточно сделать самовызов функции. Ну а для .NET, наверное, потребуется уже другая технология (хотя она тоже описывалась).
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 02-04-2018, 18:00:37
Если у тебя лисповое приложение, то прямо при загрузке его и выполняй проверку меню, достаточно сделать самовызов функции.
Я так делал, ни чего не вышло. То ли из-за использование командного метода, то ли ещё что-то. Они загружаются один за одним из этих Bundle, и не ждут их выполнение.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 02-04-2018, 18:15:00
Попробуй:
1. Выгружать через vla-unload
2. Использовать command-s вместо command
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 03-04-2018, 06:55:29
В общем командный метод не работетет
При использовании command выдаёт вот это:
Цитировать
; ошибка: Команда AutoCAD отвергнута: "_.menuunload"
; ошибка: Команда AutoCAD отвергнута: "_.menuunload"
; ошибка: Команда AutoCAD отвергнута: "_.menuunload"
; ошибка: Команда AutoCAD отвергнута: "_.menuunload"
; ошибка: Команда AutoCAD отвергнута: "_.menuunload"
Причём почему-то вместо одного раза, аж 5 раз.

При использовании command-s получаем вот это:
Цитировать
; ошибка: Неизвестная ошибка (command-s).

С Vla всё получилось, нашёл ещё статью, там узнал как не только выгружать но и загружать http://adn-cis.org/basemenu-autocad.html
Но почему-то вот на такое ругается, говорит нет у документа такого параметра как МенюГруппс
Код - Auto/Visual Lisp [Выбрать]
  1.  (vla-load (vla-get-menugroups
  2.                           (vla-get-activedocument (vlax-get-acad-object))
  3.                           ) ;_ end of vla-get-menugroups
  4.                        "бла-бла-бла-меню"
  5.                         :vlax-false
  6.                         )
А вот так вполне работает
Код - Auto/Visual Lisp [Выбрать]
  1. (vla-load (vla-get-menugroups
  2.                            (vlax-get-acad-object))                          
  3.                         "бла-бла-бла-меню"
  4.                         :vlax-false
  5.                         )
Не совсем понял про третий параметр  :vlax-false из статьи предположил что для основного меню он  :vlax-true, для частичного  :vlax-false правильно?

Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 03-04-2018, 08:01:44
Проблема в том, что при программной загрузке меню лента не появляется. А с лентой лиспом работать невозможно (насколько я знаю). Поэтому пришлось использовать именно командные методы.
За command-s приношу извинения, я просто не помню, с какой версии оно появилось.
То, что срабатывает "аж 5 раз", надо смотреть, что и откуда вызывается. Я бы проходил пошагово по всему приложению и выяснял, почему так все срабатывает.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 03-04-2018, 09:06:07
За command-s приношу извинения, я просто не помню, с какой версии оно появилось.
Да не, я в 2018 проверяю, это какой-то прикол с этой bundle технологией.
т.е. vla - работает, а vl-cmdf\command\command-s - нет.
Я всё таки склоняюсь к тому, что загрузка происходит слишком рано, и AutoCAD ещё либо не готов к командным методам, либо специально их отвергает на этом этапе.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 03-04-2018, 12:32:00
В общем получилось вот так:
Код - Auto/Visual Lisp [Выбрать]
  1. (defun copy_dll_to_cuix (name         bundle_name     /
  2.                       get_dat         name_cuix       name_dll
  3.                       name_dll_light  R               file_cuix
  4.                       supp_dir        prog_dir
  5.                       dll_light_file_prog             dll_file_prog
  6.                       dll_file_supp
  7.                      )
  8.   (defun get_dat (file /)
  9.     (setq dat (vl-file-systime file))
  10.     (+ (* (car dat) 365) (* (cadr dat) 30) (cadddr dat))
  11.   )
  12.   (setq
  13.     name_cuix      (strcat name ".cuix")
  14.     name_dll       (strcat name ".dll")
  15.     name_dll_light (strcat name "_light.dll")
  16.     R              (if (>= (atoi (getvar 'ACADVER)) 20)
  17.                      "\\R20"
  18.                      "\\R19"
  19.                    )
  20.   )
  21.   (if
  22.     (and
  23.       (setq
  24.         file_cuix (findfile name_cuix)
  25.       )
  26.       (setq supp_dir (vl-filename-directory file_cuix)
  27.             prog_dir (getenv "programdata")
  28.             prog_dir (strcat
  29.                        prog_dir
  30.                        "\\Autodesk\\ApplicationPlugins\\"
  31.                        bundle_name
  32.                        "\\Contents\\Resources"
  33.                        R
  34.                       )
  35.             dll_light_file_prog
  36.              (findfile
  37.                (strcat prog_dir "\\" name_dll_light)
  38.              )
  39.             dll_file_prog
  40.              (findfile (strcat prog_dir "\\" name_dll))
  41.       )
  42.       (or
  43.         (not (setq dll_file_supp
  44.                     (findfile (strcat supp_dir "\\" name_dll))
  45.              )
  46.         )
  47.         (< (get_dat dll_file_supp) (get_dat dll_file_prog))
  48.       )
  49.     )
  50.      (progn
  51.        (vl-file-copy dll_file_prog (strcat supp_dir "\\" name_dll))
  52.        (if
  53.          dll_light_file_prog
  54.           (vl-file-copy
  55.             dll_light_file_prog
  56.             (strcat supp_dir "\\" name_dll_light)
  57.           )
  58.        )
  59.        (vla-unload
  60.          (vla-item (vla-get-MenuGroups (vlax-get-acad-object)) name)
  61.        )
  62.        (vla-load (vla-get-menugroups
  63.                    (vlax-get-acad-object)
  64.                  )
  65.                  file_cuix
  66.                  :vlax-false
  67.        )
  68.      )
  69.   )
  70. )
Конечно очень мало вероятно, что найдётся ещё кто-нибудь использующий Lisp, технологию bundle, и ресурсные dll с иконками для файлов адаптации одновременно  :D

Всем спасибо!
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 06-04-2018, 15:02:24
В общем есть таки ограничение  на количество записей в "пути поиска" получается их там не может быть больше 34
А откуда такая информация?

(https://s9.postimg.org/46gnax82j/Support_Paths_Count.png) (https://postimg.org/image/46gnax82j/)

(https://s9.postimg.org/ku85djd5n/Last_Support_Path.png) (https://postimg.org/image/ku85djd5n/)

Команда: (findfile "SupFoldTest.lsp")
"D:\\acadsupport\\новая папка (15)\\SupFoldTest.lsp"
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 06-04-2018, 15:05:09
Цитата: BearDyugin от 13-11-2017, 05:42:04

    В общем есть таки ограничение  на количество записей в "пути поиска" получается их там не может быть больше 34

А откуда такая информация?
Мне тоже кажется, что это ерунда. Скорее есть ограничение на суммарную длину "пути поиска".
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 06-04-2018, 15:23:16
Скорее есть ограничение на суммарную длину "пути поиска".
Добавил ещё 35 путей подлиннее (всего теперь их 71):

(https://s9.postimg.org/yqlfmikuz/Support_Paths_Count1.png) (https://postimg.org/image/yqlfmikuz/)

Закрыл-открыл AutoCAD, проверил - работают:
Команда: (findfile "SupFoldTest.lsp")
"D:\\very long folder name for test\\very long folder name for test level 1\\very long folder name for test level 2\\very long folder name for test level 3\\very long folder name for test level 4\\новая папка (35)\\SupFoldTest.lsp"
Дальше вручную проверять уже неинтересно. Надо уже программу писать, чтобы она создавала новые пути, пока не случится какой-нибудь фатал.
В общем, если и есть какой-то лимит на записи, то его достигнуть непросто.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 06-04-2018, 15:33:54
В общем, если и есть какой-то лимит на записи, то его достигнуть непросто.
Это может зависеть от версии, локализации, наличия установленных обновлений AutoCAD (или вертикального приложения), ну и от приложений сторонних разработчиков...
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 06-04-2018, 15:35:20
ну и от приложений сторонних разработчиков...
А это как может повлиять?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 06-04-2018, 15:41:34
Если я правильно помню, то пути поиска хранятся в реестре, в переменной окружения "ACAD" (разделенные символом ";"). Соответственно какую длину строки выдержит реестр - такую и выдержит. Ограничение не в количестве путей, а в их суммарной длине.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Debalance от 06-04-2018, 15:46:08
Соответственно какую длину строки выдержит реестр - такую и выдержит.
Там, по-моему, ограничение в 1 МБ...
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 06-04-2018, 15:50:46
Есть такое. В реестре хранится в переменной типа REG_EXPAND_SZ. Из ограничений на размер я нашёл только это: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724872(v=vs.85).aspx
То есть, как я понимаю, в последних версиях размер ограничен только размером доступной памяти.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 06-04-2018, 16:02:01
Там, по-моему, ограничение в 1 МБ...
Даже если 1 Мб. Это 1048576 байт. Погуглил маленько на тему того, сколько байт занимает один строковый символ. Вроде как, самое большое значение, которое нашёл - 6 байт. Максимально допустимый путь - 255 символов. Итого, разделив, получаем 685 с копейками. Мне кажется, такого количества путей более чем достаточно :)
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 06-04-2018, 18:07:15
ну и от приложений сторонних разработчиков...
А это как может повлиять?
Приложение считывает значение переменной в буфер недостаточной длины, манипулирует с ним, а затем пишет обратно. В результате обрезанный путь. Или как в Civil 3D 2015 - перекодирует кириллицу в абракадабру...
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 06-04-2018, 18:37:50
А откуда такая информация?
Инфа из опыта.
В общем сначала стали жаловаться пользователи, что в 2018 Сивиле не отображаются иконки у моих приложений.
Хотя в PackageContents.xml написано
Код - XML [Выбрать]
  1.  SupportPath="./Contents/Resources/R20"
собственно там изначально и лежит cuix со своими dll
В Civil 3D 2018 заглядываю в "Пути поиска" нет там этих путей...
Добавляю их вручную
(https://s14.postimg.org/9kmlzpkw1/2018-04-06_222122.jpg)
Перезагружаю AutoCAD Civil 3D 2018 опять заглядываю в "Пути поиска" и их опять там нет
(https://s14.postimg.org/c1yd71x3l/2018-04-06_222619.jpg)

Итак на всех моих ПК и у всех моих знакомых... Может это баг  Сивила 2018?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 06-04-2018, 18:40:01
Может это баг  Сивила 2018?
Так ведь я как раз в 2018 и проверял, это же видно на скриншоте: http://adn-cis.org/forum/index.php?topic=3138.msg31427#msg31427
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 06-04-2018, 18:44:04
А если новый путь поместить выше пути SPDSExtension? Пропадёт путь SPDSExtension?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Алексей Кулик от 06-04-2018, 18:47:06
В качестве оффтопа :) Обычно я под один проект делаю максимум один путь поддержки, вся остальная информация - в реестре, откуда она и считывается.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 06-04-2018, 18:49:40
BearDyugin,
А если SPDS Extension вообще выкинуть (от слова "совсем")???
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 06-04-2018, 19:22:11
А если SPDS Extension вообще выкинуть (от слова "совсем")
То тогда, после перезагрузки, всё добавленное сохраняется, а SPDS Extension появляется снова уже в конце списка.

В общем это он SPDS виноват получается? Он мне ни когда не нравился :-)
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Дмитрий Загорулькин от 06-04-2018, 19:32:13
В общем это он SPDS виноват получается?
Похоже на то.
ну и от приложений сторонних разработчиков...
В яблочко, Александр Наумович! :)
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 06-04-2018, 19:41:00
В яблочко, Александр Наумович! :)
Я даже знаю одного человека на нашем форуме, которому можно предъявить претензии. Я его называть не буду, но ссылку на эту тему кину.
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: Александр Ривилис от 06-04-2018, 19:57:22
А если SPDS Extension вообще выкинуть (от слова "совсем")
То тогда, после перезагрузки, всё добавленное сохраняется, а SPDS Extension появляется снова уже в конце списка.

В общем это он SPDS виноват получается? Он мне ни когда не нравился :-)
Давай уточним. Если деинсталлировать SPDS Extension (так, чтобы AutoCAD его не мог найти и загрузить), то проблема с ограничением количества путей путей доступа остается или нет?
Название: Re: Cuix созданный в AutoCAD 2016 не хочет открываться в AutoCAD 2014
Отправлено: BearDyugin от 06-04-2018, 20:03:07
Если деинсталлировать SPDS Extension (так, чтобы AutoCAD его не мог найти и загрузить), то проблема с ограничением количества путей путей доступа остается или нет?
Удалил его, и всё наладилось, в списке сразу появились новые пути, которые раньше туда кто-то не пускал...