При переходе с одной САПР-системы на другую требуется перенести в новую систему разработанные приложения и меню. В этой статье представлена процедура адаптации ленты, меню и панелей инструментов в формате CUIX для использования на платформе nanoCAD.

Возможны два основных варианта перехода: создать меню заново или адаптировать существующее. Для миграции может использоваться CUIX-файл (например, MyMenu.cuix), который представляет собой архив, содержащий параметры меню, ленты и панели инструментов, иконки кнопок.

Консольная утилита Cuix2Cfg (работает без установки в командной строке Windows) позволяет извлечь из CUIX-файла панель инструментов (toolbar), меню и иконки – и создает новый CFG-файл, адаптированный под nanoCAD. Лента (ribbon) остается в исходном CUIX-файле и читается платформой при загрузке.

При использовании утилиты Cuix2Cfg все иконки из исходного CUIX-файла извлекаются в отдельную папку, а также формируется шаблон Visual Studio для дальнейшего создания файла ресурсной библиотеки DLL с иконками. В качестве иконок утилита использует изображения в формате ICO, BMP или PNG.

Миграция в nanoCAD ленты, меню и панели инструментов может включать в себя следующие шаги:

  • извлечение данных из CUIX;

  • подключение меню, ленты и панели инструментов;

  • подключение иконок.

Извлечение данных из CUIX

1. Скачать новую версию утилиты Cuix2Cfg.

Cuix2Cfg входит в поставку SDK: SDK\samples\Menu\Cuix2Cfg.

2. Подготовить входные данные – например, разместить имеющийся CUIX-файл в отдельной папке: C:\Import\MyMenu.cuix.

Примечание. При ручном редактировании архива CUIX нужно использовать только стандартные архиваторы ZIP, без дополнительного сжатия и других параметров.

3. Извлечь данные из CUIX-файла.

Листинг командной строки Windows:

C:\SDK\samples\Menu\Cuix2Cfg>Cuix2Cfg.exe C:\Import\MyMenu.cuix
Nanosoft (R) CUIx to CFG converter v1.2
Copyright (C) Nanosoft 2021
Done: MyMenu.cfg

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

C:\Import\MyMenu.cfg – частичный конфигурационный файл меню, который следует подключить к nanoCAD.

Примечание. В старых версиях утилиты результирующий частичный конфигурационный файл имеет расширение .cfg, в новых версиях – расширение .cfgx.

C:\Import\MyMenu_IconLib\*.ico – файлы с иконками;

C:\Import\MyMenu_IconLib\resource.h – файл проекта Visual Studio;

C:\Import\MyMenu_IconLib\IconCollection.rc – файл проекта Visual Studio;

C:\Import\MyMenu_IconLib\IconCollection.vcxproj – файл проекта Visual Studio;

C:\Import\MyMenu_IconLib\IconCollection.sln – файл проекта Visual Studio;

C:\SDK\samples\Menu\Cuix2Cfg\Cuix2Cfg_YYYY-MM-DD_HH-mm-ss.txt – log-файл, содержащий информацию о процессе обработки.

Файл IconCollection.sln содержит готовый проект для ресурсной DLL с иконками.

Примечание. В новых версиях утилиты для создания проекта Visual Studio нужно использовать ключ '-l'.

Утилита поддерживает работу ключей. При возникновении сложностей (например, если не удается подключить ленту, меню или панели инструментов) следует использовать соответствующие ключи и повторить процедуру.

Ключи:

'-l' – заменяет в CFG ссылки на отдельные иконки ссылками на ресурсную DLL. Для MyMenu.cuix в CFG прописывается путь к MyMenuIconCollection.dll. Ресурсную DLL-библиотеку иконок можно подготовить средствами Visual Studio. Начиная с версии 1.3 этот ключ требуется при создании проекта ресурсной DLL для Visual Studio.

Листинг командной строки Windows:

C:\SDK\samples\Menu\Cuix2Cfg>Cuix2Cfg.exe C:\Import\MyMenu.cuix -l
Nanosoft (R) CUIx to CFG converter v1.2
Copyright (C) Nanosoft 2021
Done: MyMenu.cfg

'-x' – добавляет в библиотеку только иконки из CUIX. Ключ нужен на случай, если в папке с иконками располагаются и другие иконки. По умолчанию все иконки, которые находятся в папке, созданной по результатам конвертации, будут добавлены в проект ресурсной DLL-библиотеки.

Листинг командной строки Windows:

C:\SDK\samples\Menu\Cuix2Cfg>Cuix2Cfg.exe C:\Import\MyMenu.cuix -x
Nanosoft (R) CUIx to CFG converter v1.2
Copyright (C) Nanosoft 2021
Done: MyMenu.cfg

'-b' – выполняет бикубическое масштабирование иконок (более мягкое изображение). По умолчанию используется более контрастный алгоритм – квантизация. В общем случае разница будет минимальной.

Листинг командной строки Windows:

  C:\SDK\samples\Menu\Cuix2Cfg>Cuix2Cfg.exe C:\Import\MyMenu.cuix -b
  Nanosoft (R) CUIx to CFG converter v1.2
  Copyright (C) Nanosoft 2021
  Done: C:\Import\MyMenu.cfg

'-c' – создает новый CUIX-файл, который содержит ленту, совместимую с nanoCAD. Лента создается в качестве образца для последующей доработки.

Листинг командной строки Windows:

  C:\SDK\samples\Menu\Cuix2Cfg>Cuix2Cfg.exe C:\Import\MyMenu.cuix -c
  Nanosoft (R) CUIx to CFG converter v1.2
  Copyright (C) Nanosoft 2021
  Done: C:\Import\MyMenu.cfg

В папке рядом с файлом MyMenu.cfg будет создан MyMenu_new.cuix.

'-m' – добавляет простое меню, если его нет в импортируемом CUIX. Меню создается в качестве образца для последующей доработки.

Листинг командной строки Windows:

C:\SDK\samples\Menu\Cuix2Cfg>Cuix2Cfg.exe C:\Import\MyMenu.cuix -m
  Nanosoft (R) CUIx to CFG converter v1.2
  Copyright (C) Nanosoft 2021
  Done: C:\Import\MyMenu.cfg

'-t' – добавляет простую панель инструментов, если ее нет в импортируемом CUIX. Панель инструментов создается в качестве образца для последующей доработки.

Листинг командной строки Windows:

C:\SDK\samples\Menu\Cuix2Cfg>Cuix2Cfg.exe C:\Import\MyMenu.cuix -t
  Nanosoft (R) CUIx to CFG converter v1.2
  Copyright (C) Nanosoft 2021
  Done: C:\Import\MyMenu.cfg

Примечание. CFG перезаписывается при каждом перезапуске утилиты и, соответственно, учитывается последний набор ключей.

Подключение меню, ленты и панели инструментов

Для подключения CFG-файлов меню следует использовать стандартную процедуру подключения частичного меню, представленную в статье «Создание пользовательского меню, панели инструментов и ленты в nanoCAD».

Подключение иконок

Файлы с иконками можно подключить двумя способами:

  • способ 1: использовать иконки в формате ICO, BMP или PNG.

  • способ 2: использовать ресурсную DLL-библиотеку с иконками.

Для способа 1

Скопировать полученную папку с иконками в C:\Users\nanoUser\AppData\Roaming\Nanosoft\nanoCAD x64 22.0\Config, после чего убедиться, что иконки загрузились и подключены в интерфейс платформы.

Результат должен быть таким:

dir C:\Users\nanoUser\AppData\Roaming\Nanosoft\nanoCAD x64 22.0\Config\
...
MyMenu.cfg
MyMenu.cuix
MyMenu_IconLib\
...

Перейти в настройки пользовательского интерфейса (НПИ): СервисИнтерфейсНастройки интерфейса либо использовать команду INTERFACE в командной строке nanoCAD.

Указать путь к иконке (ICO/BMP/PNG) для каждой команды в поле Ресурсная DLL (рис. 1).

Рис. 1
Рис. 1

Далее в этом же окне Настройка пользовательского интерфейса выбрать ФайлСохранить.

Для способа 2

Загрузить в Visual Studio проект IconCollection.sln, полученный по результатам работы утилиты, и выполнить сборку (Build/Rebuild). Пример показан на рис. 2.

Рис. 2
Рис. 2

Примечание. DLL-библиотека, получаемая в результате сборки, может располагаться в другой папке – это зависит от настроек Visual Studio.

Полученный файл DLL скопировать в C:\Users\nanoUser\AppData\Roaming\Nanosoft\nanoCAD x64 22.0\Config.

Результат должен быть таким:

dir C:\Users\nanoUser\AppData\Roaming\Nanosoft\nanoCAD x64 22.0\Config\
...
MyMenu.cfg
MyMenu.cuix
MyMenuIconCollection.dll
...

Перейти в настройки пользовательского интерфейса (НПИ): СервисИнтерфейсНастройки интерфейса либо использовать команду INTERFACE в командной строке nanoCAD.

Указать путь к MyMenuIconCollection.dll для каждой команды в поле Ресурсная DLL (рис. 3).

Рис. 3
Рис. 3

И в поле Иконка указать нужную иконку из выпадающего списка. Список формируется из состава ресурсной DLL (рис. 4).

Рис. 4
Рис. 4

Далее в этом же окне Настройка пользовательского интерфейса выбрать Файл → Сохранить.

Сергей Евсеев,
специалист группы поддержки API
ООО «Нанософт разработка»

Комментарии (7)


  1. Shluzzz
    14.06.2022 23:18

    Крайне полезный функционал. Не особо слежу за вашим продуктом, не подскажете, как обстоят дела с запуском приложений на лиспе или vba, написанных для AutoCAD?


    1. starfair
      15.06.2022 09:53

      Как вы себе это представляете? На счёт LISP не знаю, а VBA, использует определённым образом подготовленную DLL с COM интерфейсами классов приложения, и является по сути скриптовой прослойкой по вызову API приложения из макроса. Иначе говоря, макросы написанные под AutoCAD не могут работать в в другом приложении, только если не создавать там какую-то хитрую прослойку по трансляции вызовов API AutoCAD в API nanoCAD. Да то, придётся придумать как подменять базовую библиотеку и потом транслировать вызовы к ней.


      1. Shluzzz
        15.06.2022 11:05

        Спасибо за ответ. Lisp заточен под команды аатокада, и если они совпадают с nanocad, то наверное не должно быть проблем. Однако, справедливости ради, очень много дополнительных инструментов для автокад заимствовано именно из nanocad, и возможно бОльшая часть инструментов и не потребуется


        1. starfair
          15.06.2022 11:56

          Интересное мнение, на счёт заимствований. Сильно в этом сомневаюсь, конечно. Но суть проблемы не в этом, а в том, что в любом случае, такого рода скрипты работают не с абстрактными объекта, типа деталь или сборка, а с конкретной реализацией таковых в конкретной CAD системе. Соответственно, и обращение в макросах идёт к конкретной реализации, а не к идеализируемому объекту. Иначе говоря, если был такой скриптовый язык для CAD систем, который бы скрывал реализацию в каждой конкретной системе, тогда можно было бы что то и сделать универсальное, сразу для нескольких программ. Но насколько я знаю, таких систем нет, и поэтому надо или писать конкретно под каждый продукт, или придумывать что то типа метамакроса, который бы потом транслировался в скрипт под каждый из продуктов.


          1. ISL
            15.06.2022 19:45

            Технология, скрывающая реализацию в каждой конкретной системе и позволяющая запустить одно и то же приложение в разных САПРах есть, называется MultiCAD.NET, см. нашу статью на эту тему: https://habr.com/ru/company/nanosoft/blog/242497/. Правда технология не скриптовая.


    1. ISL
      15.06.2022 19:39

      LISP в nanoCAD-е есть, загружается привычными способами, командой APPLOAD или по-лисповому (load "my.lsp"). А вот VBA в nanoCAD-е, к сожалению, нет — к появлению nanoCAD-а Microsoft уже не продавал движок VBA новым клиентам. Тем не менее ActiveX/COM API в nanoCAD-е есть, и VBA приложения можно портировать VB.NET. Код переезжает с минимальными исправлениями, а формы приходится перерисовывать, сохраняя названия контролов.


  1. 13werwolf13
    15.06.2022 06:25
    +1

    не по наслышке зная что происходит на заводах и предприятиях а так же зная некоторые аспекты внутренней кухни вашей конторы не могу не спросить: так когда же всё таки ждать нативную версию вашего CAD'а под linux?