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, либо в официальный. Но реально, сил прописывать одно и то же в стотыщпиццотый раз у меня уже нет (



Поделитесь своим мнением


Я не робот.