nanocad файл cfg.ini и работа с ним
Ковыряясь с примерами приложений, поставляемых вместе с SDK nanoCAD (господи, ну когда ж наконец SDK сделают общедоступным и слегка подправят пользовательское соглашение?!), обнаружил, что даже там для обеспечения загрузки используется cfg.ini. Буду пробовать разобраться, как с ним можно поработать и что получить в результате.
Если коротко, то именно в этом файле прописываются (помимо всего прочего) приложения, которые надо загружать внутрь nanoCAD. Это-то как раз меня и интересует, и основной упор буду на это делать. Штатного механизма программной работы с файлом нет, так что попробую создать свой
На машине установлен nanoCAD 23.1 + Механика + СПДС. В каждый профиль был прописан в автозагрузку один и тот же код. Сначала - в чистый НК, потом СПДС (туда специально засунул аж два приложения), и, наконец, в Механику. Получил cfg.ini примерно следующего вида:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | [\] @=e [\IncCfgDirs] C:/Users/kpblc/AppData/Roaming/Nanosoft/nanoCAD x64 23.1/Config/=i0 [\Configuration] CfgFile=snanoCAD.cfg PgpFile=snCad.pgp nPlat=snPlatComp [\Configuration\SPDS] CfgFile=snanoCAD.cfg PgpFile=snCad.pgp nPlat=snSPDSComp [\Configuration\SPDS\Appload] [\Configuration\SPDS\Appload\Startup] [\Configuration\SPDS\Appload\Startup\app0] Loader=sC:\Users\kpblc\Desktop\Новая папка\Код.lsp Type=sLISP Enabled=i1 [\Configuration\SPDS\Appload\Startup\app1] Loader=sC:\Users\kpblc\Desktop\Новая папка\Код — копия.lsp Type=sLISP Enabled=i1 [\Configuration\<<Default>>] [\Configuration\<<Default>>\Appload] [\Configuration\<<Default>>\Appload\Startup] [\Configuration\<<Default>>\Appload\Startup\app0] Loader=sC:\Users\kpblc\Desktop\Новая папка\Код.lsp Type=sLISP Enabled=i1 [\Configuration\Mech] nPlat=snMechComp CfgFile=sMech.cfg PgpFile=sMech.pgp [\Configuration\Mech\Appload] [\Configuration\Mech\Appload\Startup] [\Configuration\Mech\Appload\Startup\app0] Loader=sC:\Users\kpblc\Desktop\Новая папка\Код.lsp Type=sLISP Enabled=i1 |
Я не знаю, что случилось, но после примерно 20 попытки создать статью (а в это время мне сайт радостно сообщает, что все изменения отправились погулять), я психанул и сделал тупо репозиторий на github: https://github.com/kpblc2000/KpblcNCadCfgIni.git
Там два проекта - один болтается "в корне", собственно это и есть та библиотека, ради которой все затевалось. Вторая, в подкаталоге \Tests - Nunit-тесты.
Как использовать "основную" библиотеку в любом NET-проекте под нанокад:
- чтение всех существующих автозагружаемых приложений - NCadConfig config = new NCadConfig(<полный путь к cfg.ini>). Получить, и в поле Configurations будут все конфигурации. Внутри каждой конфигурации - список экземпляров StartupApplication (собственно приложения в автозагрузке)
- добавление (пример в тесте AddStartupApplication) : получить конфигурацию, с которой собствнно и надо играться, и добавить к ее списку StartupApplication новый элемент. После этого сохранить cfg, вызвав метод .Save()
Чисто теоретически, потратив примерно полчаса-час, можно создать команды / lisp-функции для нанокада, куда передавать имя приложения, куда его помещать (в самое начало или в самый конец), и таким образом добиваться "прописывания" приложений в автозагрузке. Но времени уже почти полвторого ночи, и я уже мало что соображаю.
Для обсуждения - либо сюда в комментарии, либо в неофициальный канал по программрованию под NC, либо в официальный. Но реально, сил прописывать одно и то же в стотыщпиццотый раз у меня уже нет (