Как загрузить файл dll в автокад

Обновлено: 04.07.2024

Каждый раз, как мне надо собрать новую ресурсную dll, я судорожно начинаю искать нужную информацию. Надоело! Все, что посчитаю важным, закину сюда.

С любезного разрешения Андрея Бушмана почти полностью дублирую его статью. Скрины, взятые у Андрея, дополню (ну просто для себя) скринами с VS2015 CommunityEdition. Собственные комментарии и уточнения буду писать курсивом.
Статья написана для AutoCAD 2009, но прекрасно срабатывает и на других версиях AutoCAD.

Графические изображения, которые используются в CUI файлах, могут браться как из внешних BMP файлов, так и из неуправляемого DLL файла ресурсов, в который эти изображения помещены. Второй способ более удобен в использовании. Здесь рассматривается, как создавать такие DLL файлы и как их использовать в CUI файлах.

AutoCAD давно (начиная с версии 2010) использует формат CUIX в качестве частичных файлов меню, представляющий собой обычный архив, расширение которого переименовано с ZIP на CUIX. Однако в нашей компании используется AutoCAD 2009 SP3, который не умеет работать с CUIX, но использует более старый формат - CUI файлы, содержимое которых представлено в формате XML.

Кроме того, начиная с версии 2015, если не ошибаюсь, в AutoCAD введены два варианта оформления - темная тема и светлая тема. Сделать иконку, которая будет видна и там, и там, очень сложно. А имя картинки менять "на лету" не самое лучшее решение. Подробнее - ниже.

Создание DLL файла ресурсов

В MS Visual Studio 2012 создаём новый проект, на основе шаблона Empty Project и назначаем ему нужное имя:

Первым делом сразу устанавливаем конфигурацию в Release Win32:

Теперь в окне Solution Explorer нажимаем правой кнопкой мыши на имени проекта и в появившемся контекстном меню выбираем пункт Properties . Назначаем нужные значения свойствам Target Extension и Configuration Type :

Кроме этого, в настройках проекта нужно изменить ещё одну опцию - No Entry Point:

Произведя обозначенные выше изменения, жмём кнопку Применить и ОК . Теперь свойства нашего, пока ещё пустого проекта настроены должным образом. На вкладке Solution Explorer , из контекстного меню проекта, выбираем пункт Add -> New Item. и в появившемся диалоговом окне выбираем шаблон файла ресурсов:

Имя файлу можно назначить любое, в нашем примере оставляем Resource.rc . Жмём кнопку Add . Добавленный нами файл будет содержать в себе перечень изображений, которые будут использоваться в наших CUI(x) файлах.

Андрей рекомендует картинки, которые будут "загоняться" в dll, помещать в подкаталог \images. Вполне разумная рекомендация, хотя и не критична. Другой вопрос, что настоятельно рекомендую все же помещать ресурсы так, чтобы для них можно было "вычислить" относительный путь. Очень помогает, если разработка ведется не на одном рабочем месте.

В качестве эксперимента добавим BMP файлы разных размеров: 16x16, 24x24, 32x32, 48x48, 64x64 и 128x128. Кнопки на палитрах инструментов должны содержать изображения размером 16x16, а кнопки, размещённые на палитрах Ribbon, имеют размеры поболее. В нашем тестовом CUI файле разместим кнопки с указанными выше разрешениями и там и там, дабы посмотреть результат использования различных размеров.

Можно было бы копировать и файлы в формате PNG, однако AutoCAD 2009 не умеет в CUI файлах использовать изображения такого формата.

Уточнение: можно попытаться подключать не *.bmp, а *.ico-файлы. Потребуется, конечно, некоторая дополнительная работа, но это возможно.
В старых версиях для обеспечения "прозрачности" фона следует использовать цвет RGB 192,192,192. Старые версии AutoCAD обрабатывают его как прозрачный.
И вот еще - AutoCAD2018 уже не "понимает" bmp, и требует как раз png

Теперь возвращаемся к нашей IDE: переключаемся на вкладку Resource View .

Из контекстного меню элемента Resource.rc вызываем пункт Add Resource.

add_images2012
add_resouce2015

items2012

В диалоговом окне Add Resource в списке Resource type выбираем элемент Bitmap , жмём кнопку Import. и указываем BMP файлы из созданного нами ранее подкаталога \images. Получаем такой результат (вид абсолютно одинаков что для 2012, что для 2015)

items_2_2012

Теперь для каждого элемента значение свойства ID нужно обособить двойными кавычками, чтобы их можно было успешно использовать в наших CUI(x) файлах:

Всё, теперь компилируем наш DLL файл (клавиша F6 или через меню Build -> Build Solution ).

Конец цитирования, дальнейшие действия по использованию DLL пропишу потом, если вдруг понадобится.

Теперь кое-что из собственного (и не только собственного) опыта.

Подобная технология прекрасно работает при использовании частичных файлов адаптации. Если попробовать собрать такую dll для корпоративного файла адаптации, то заменить уже имеющуюся dll не получится: сначала все пользователи должны выключить AutoCAD.

Имя dll должно совпадать с именем cui(x) файла. Крайне желательно положить dll рядом с cui(x) файлом. Теоретически можно ее просто закинуть в пути поддержки, но лично я подобным никогда не занимался - потом замучаешься искать.

По поводу тем оформления, как было обещано, на основе информации на форуме ADN-CIS и справки Autodesk:

  1. В версиях AutoCAD без темы оформления ресурсы забирались из dll, имеющей то же имя, что и файл cui(x)
  2. В версиях AutoCAD с темами оформления необходимо создать отдельный ресурс DLL для каждой темы: светлой и темной. Соответствующий DLL ресурса используется на основе того, какая тема в настоящий момент применена к пользовательскому интерфейсу. По соглашению об именовании файлов DLL требуется использовать то же имя, что и имя файла адаптации, но также необходимо добавить суффикс "_light" для файла DLL, который будет использоваться в качестве светлой темы. Например, если загружен файл CUIx под именем mymenu.cuix , AutoCAD выполняет поиск файла библиотеки ресурсов mymenu_light.dll , если используется светлая тема, и файла mymenu.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++ проекта.

К вопросу об использовании ico-файлов. Тут все просто - читаем статью Использование ресурсной dll для CUIx с прозрачными растрами. Скажу честно - я пока подобным не игрался, но поверю Диме.
===
Добавлено:
Цитата из статьи по поводу подключения ico-файлов:

Достаточно просто добавить новый ico-ресурс при помощи редактора Visual Studio и отредактировать свойства “ICO” ресурса в “RCDATA” как показано ниже:

Т.о. результат может выглядеть, к примеру, либо так:



Имена файлов, зависящих от версии AutoCAD, так же содержат в виде суффикса версию ядра приложения, а так же, в случае необходимости, разрядность целевой платформы. Например, согласно обозначенному выше скрину, в подкаталоге .\R17.2x64 будет находиться файл RegionTools.17.2x64.dll , а в подкаталоге .\R20.0 - файл RegionTools.20.0.dll .

Я использую версию ядра AutoCAD, а не год (2009, 2010, 2011 и т.д.), обозначенный в имени САПР, т.к. программно нужную версию DLL файла удобней находить именно по версии ядра AutoCAD - это наиболее надёжная и точная информация.

Конечно, при такой системе наименований рядовому пользователю может быть сложно понять, какой именно DLL файл из набора имеющихся подкаталогов, ему следует загружать в установленную у него версию AutoCAD. Как вариант: можно в файле readme.txt разместить текстовую информацию о том, для какой версии AutoCAD какой DLL файл следует загружать.

Однако можно эту задачу решить иначе: непосредственно в подкаталоге .\bin создавать единственный DLL файл, который предназначен для загрузки в любую версию AutoCAD. Предназначение этого файла заключается в том, чтобы загрузить в AutoCAD наиболее подходящую версию плагина, найдя её либо в текущем каталоге сборки, либо в соответствующих подкаталогах. На скрине показанном выше эта роль возложена на файл RegionTools.dll .

Т.о. Какую бы версию AutoCAD пользователь не имел на своей машине, ему всегда нужно загружать только файл RegionTools.dll .

Поскольку данный подход удобно применять во всех плагинах, то его можно оформить в виде шаблона проекта:


6 комментариев:

В исходный код внесены изменения: теперь его можно использовать для автоматического поиска и загрузки нужной версии не только файлов DLL, но и ARX, DVB.

Спасибо за интересные и полезные сведения. Хотелось бы ещё узнать, как компилируются все эти файлы dll для разных версий: "вручную" или этот процесс как-то автоматизирован тоже?

Я не понял, что подразумевается под "вручную". В IDE я жму кнопку пересборки решения и на выходе получаю скомпилированные версии плагина под все интересующие меня версии AutoCAD. Автоматом формируется нужная структура каталогов (при необходимости). Т.е. всё делается одним кликом мышки.

Например, "с нуля" делаю так:

1. Создаю пустое решение (solution).

2. В решение добавляю новый проект (project) для создания расширения под AutoCAD 2009 SP3 и выполняю настройку всех его [решения] свойств, для всех нужных мне конфигураций (Release|Debug)) и платформ (AnyCPU или x86|x64).

3. В проекте подключаю все нужные мне ссылки (references) на библиотеки AutoCAD 2009 и, при необходимости, правлю их свойства: например, для некоторых устанавливаю "Copy Local" в значение "False".

4. Пишу программный код добавляя в проект, по мере необходимости, файлы *.CS, *.RESX и т.п.

5. Когда код написан и оттестирован под AutoCAD 2009, я выполняю пункты 2 и 3, но уже для другой версии AutoCAD, например для AutoCAD 2010. Важно[!] в текущем solution создавать и настраивать новые проекты именно "с нуля", т.е. на основе шаблона, а не копировать и переименовывать первый, ранее созданный нами (в этом решении) проект.

6. Подключаю в проект, созданный в п.5 все исходные файлы проекта, созданного в п.2. Важный момент[!]: подключение исходных файлов первого проекта следует выполнять в виде ссылок, т.е. выбирая вариант ADD AS LINK. Добавленные таким способом файлы будут иметь особые иконки в Solution Explorer.

8. По аналогии выполняю действия для AutoCAD версий 2011-2015.

Т.о. в составе решения определён один проект, в котором находятся непосредственно файлы исходного кода, а так же набор дополнительных проектов (CSPROJ-файлов), каждый из которых настроен под свою версию AutoCAD. Но эти проекты не содержат файлов исходного кода, а вместо этого ссылаются на файлы исходного кода первого проекта. Т.о. изменения, выполненные в файлах одного проекта, автоматом применяются ко всем проектам. Если в проектах открывать файлы исходников двойным кликом по их ссылкам, то высвечивается код именно тех директив, которые специфичны для проекта, в составе которого находится ссылка - это очень удобно.

Затем, одним кликом мышки запуская процесс построения решения (solution), на выходе получаем откомпилированные версии расширений под каждую интересующую нас версию AutoCAD.

Последнее обновление: 07/01/2021 [Необходимое время для чтения:

Файлы Autodesk component, такие как acadres.dll, считаются разновидностью файла Win32 DLL (Библиотека динамической компоновки). Они соотносятся с расширением DLL, разработанным компанией Autodesk, Inc. для AutoCAD 2019.

Файл acadres.dll изначально был выпущен с AutoCAD 2019 10/24/2018 для ОС Windows 10. По нашим данным, это самая последняя дата выпуска от компании Autodesk, Inc..




Совместимость с Windows 10, 8, 7, Vista, XP и 2000

Средняя оценка пользователей

Сведения о разработчике и ПО
Разработчик ПО: Autodesk, Inc.
Программа: AutoCAD 2019
Авторское право: Copyright 2019 Autodesk, Inc. All rights reserved.
Сведения о файле
Набор символов: Unicode
Код языка: English (U.S.)
Флаги файлов: (none)
Маска флагов файлов: 0x003f
Точка входа: 0x0000
Информация о файле Описание
Размер файла: 2.8 MB
Дата и время изменения файла: 2019:10:24 05:28:41+00:00
Тип файла: Win32 DLL
Тип MIME: application/octet-stream
Тип компьютера: Intel 386 or later, and compatibles
Метка времени: 2019:01:30 07:57:36+00:00
Тип PE: PE32
Версия компоновщика: 14.14
Размер кода: 0
Размер инициализированных данных: 2900480
Размер неинициализированных данных: 0
Точка входа: 0x0000
Версия ОС: 6.0
Версия образа: 0.0
Версия подсистемы: 6.0
Подсистема: Windows GUI
Номер версии файла: 23.1.47.0
Номер версии продукта: 23.1.47.0
Маска флагов файлов: 0x003f
Флаги файлов: (none)
Файловая ОС: Win32
Тип объектного файла: Dynamic link library
Подтип файла: 0
Код языка: English (U.S.)
Набор символов: Unicode
Наименование компании: Autodesk, Inc.
Описание файла: Autodesk component
Версия файла: 23.1.47.0.0
Авторское право: Copyright 2019 Autodesk, Inc. All rights reserved.
Версия продукта: 23.1.47.0.0

✻ Фрагменты данных файлов предоставлены участником Exiftool (Phil Harvey) и распространяются под лицензией Perl Artistic.

Ошибки библиотеки динамической компоновки acadres.dll

Файл acadres.dll считается разновидностью DLL-файла. DLL-файлы, такие как acadres.dll, по сути являются справочником, хранящим информацию и инструкции для исполняемых файлов (EXE-файлов), например Setup.exe. Данные файлы были созданы для того, чтобы различные программы (например, AutoCAD) имели общий доступ к файлу acadres.dll для более эффективного распределения памяти, что в свою очередь способствует повышению быстродействия компьютера.

  • Нарушение прав доступа по адресу — acadres.dll.
  • Не удается найти acadres.dll.
  • Не удается найти C:\Autodesk\WI\Autodesk AutoCAD 2020\x64\en-US\acad\AcadLP\PF\ADSK\Root\en-US\acadres.dll.
  • Не удается зарегистрировать acadres.dll.
  • Не удается запустить AutoCAD. Отсутствует требуемый компонент: acadres.dll. Повторите установку AutoCAD.
  • Не удалось загрузить acadres.dll.
  • Не удалось запустить приложение, потому что не найден acadres.dll.
  • Файл acadres.dll отсутствует или поврежден.
  • Не удалось запустить это приложение, потому что не найден acadres.dll. Попробуйте переустановить программу, чтобы устранить эту проблему.

Файл acadres.dll может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с AutoCAD) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла acadres.dll может быть вызвано отключением питания при загрузке AutoCAD, сбоем системы при загрузке acadres.dll, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или, как нередко бывает, заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.


Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.

Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):

Если на этапе 1 не удается устранить ошибку acadres.dll, перейдите к шагу 2 ниже.


Шаг 2. Если вы недавно установили приложение AutoCAD (или схожее программное обеспечение), удалите его, затем попробуйте переустановить AutoCAD.

Чтобы удалить программное обеспечение AutoCAD, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):

После полного удаления приложения следует перезагрузить ПК и заново установить AutoCAD.

Если на этапе 2 также не удается устранить ошибку acadres.dll, перейдите к шагу 3 ниже.


Шаг 3. Выполните обновление Windows.


Если ни один из предыдущих трех шагов по устранению неполадок не разрешил проблему, можно попробовать более агрессивный подход (примечание: не рекомендуется пользователям ПК начального уровня), загрузив и заменив соответствующую версию файла acadres.dll. Мы храним полную базу данных файлов acadres.dll со 100%-ной гарантией отсутствия вредоносного программного обеспечения для любой применимой версии AutoCAD . Чтобы загрузить и правильно заменить файл, выполните следующие действия:

Windows 10: C:\Autodesk\WI\Autodesk AutoCAD 2020\x64\en-US\acad\AcadLP\PF\ADSK\Root\en-US\
Windows 10: C:\Program Files\Autodesk\AutoCAD 2020\en-US\

Если этот последний шаг оказался безрезультативным и ошибка по-прежнему не устранена, единственно возможным вариантом остается выполнение чистой установки Windows 10.


Создание в AutoCAD панели инструментов с использованием библиотеки DLL

Статья взята с сайта AfraLISP
Перевод на русский: Евгений Калашников

Вы еще не устали от всех этих растровых файлов, в которых содержатся рисунки к кнопкам Вашего меню, и которые Вам приходится таскать вместе с файлом меню? Вам еще не надоело каждый раз пересаживаясь на новую машину, или посылая Ваше меню кому-нибудь, возится с этим обилием растровых файлов, занимающих, к тому же, не мало места на диске? (Не дай Бог забыть хоть один! "Смеющиеся рожицы" ждут своего часа. )

А не желаете попробовать сохранить все рисунки для кнопок Вашего меню в одном ActiveX DLL файле (Также, как это сделано в самом AutoCAD при создании его меню)?

Для этого Вам понадобится Visual Basic 6 и встроенный в него редактор ресурсов Visual Basic Resource Editor.

Во-первых, Вы должны создать Панель инструментов обычным способом с использованием файлов растровых рисунков в формате BMP, и проверить его в AutoCAD. В приложенном архиве находится пример файла меню, которое приведено ниже:

Панель инструментов, описанное в этом меню выглядит следующим образом:

Теперь, чтобы Вам было удобнее, сохраните файл меню и все используемые в меню файлы рисунков кнопок в отдельной папке, что в дальнейшем упростит Вам работу с этими файлами при подключении их к проекту VB и при создании библиотеки DLL.

Запустите VB6 и создайте новый проект ActiveX DLL. Затем откройте редактор ресурсов VB6 Resource Editor. Если он не загружен, то загрузите его с помощью Add-In Manager.

Загрузите каждый из Ваших рисунков в Resource Editor, нажимая для этого на кнопку Add Bitmap. , и переименовывая добавленные изображения согласно используемых в меню имен (т.е. заменя подставляемые редактором ресурсов цыфровые обозначения на имена загружаемых файлов). Для переименования достаточно нажать правой кнопкой мыши по имени рисунка, выбрать пункт всплывающего меню Properties (Свойства), а затем поменять содержимое поля Id на нужное Вам имя. Когда все рисунки будут добавлены сохраните проект. (Сохраните его под таким же именем, что и у файла Вашего меню. В заключении, выберите пункт меню "File -> Make YourMenuName.DLL", и в появившемся окне задайте папку и имя Вашего нового DLL ресурса. (Важно то, что DLL файл должен иметь то же имя, что и файл меню.) Теперь Вы можете выйти из VB6.

Ну, и наконец, последний шаг. Откройте файл с Вашем меню и удалите расширения .BMP из названий файлов рисунков кнопок. Это должно выглядеть следующим образом:

Затем скопируйте отредактированный файл меню и созданный файл DLL в один из каталогов поддержки AutoCAD, а испрользуемые рание файлы растровых рисунков наоборот перенесите куда-нибуть из каталога поддержки. Попробуюте перекомпилировать Ваше меню. Чтобы сделать это запустите AutoCAD и загрузите Ваш новый шаблон меню.

Если Вы все сделали правильно, то все должно получится. Никаких "Смеющихся лиц" Вы не обнаружите.

С этого времени, все, что Вы должны сделать для распространения меню - это сопроводить его одним единственным DLL файлом (ну, и, естественно, программами, запускаемыми с помощью этого мню). Прощайте Битмапы.

Читайте также: