Переключение на локальную базу данных через реестр

Здравствуйте Уважаемые специалисты nanoCAD!

Подскажите пожалуйста, как через внесение изменений в реестре (какие ключи?) задать локальный тип базы для NanoCAD - переключить на “Источник данных - локальная база”?

*Если задать значение параметру “SelectDbDlgLocalDb”= “C:\ProgramData\anosoft
anoCAD x64 24.0\DataRW\std.mdf” с помощью внесения изменений в реестре по пути: “HKCU\SOFTWARE\anosoft
anoCAD x64\24.0
CAD\McBrowser”, то все равно не меняется - не меняется “источник” на “локальная база”, добавляется лишь путь до mdf, т.е. получается как на рисунке ниже:

image.png

проще переключать базу чрез нанокомстроку

для локальной мдф

(vl-cmdf "spchangedb" "z:\\BD_SQL\ ana\\std.mdf")

не умеет пробелы в пути

результат в момент выполнения пишется в AppOptions.xml, оттуда жэж и читается при старте наны или при перезагрузке-изменении AppOptions.xml

для постгресс

(vl-cmdf "spchangedb" "pgsql:nspds240")

для большого sql

(vl-cmdf "spchangedb" "SQL:C-SQLSERVER:mc_spds9")

Команда spchangedb только в CПДС?

Нужно еще в чистом NanoCAD. Может через команду “params”?

Команда spchangedb только в CПДС?

Нужно еще в чистом NanoCAD. Может через команду “params”?

Да, spchangedb для СПДС, mcchangedb для механики

В чистом NanoCAD программно можно изменить источник (базу)?

В чистом NanoCAD программно можно изменить источник (базу)?

Я не знаю

В чистом NanoCAD программно можно изменить источник (базу)?

наверное возможно через Multicad.NET

McParamManager._GetParam (int)

internal Object _GetParam(int idParam);

McParamManager.SetParam (Object^, int)

public bool SetParam(ref Object param, int idParam);

idParam=9

А можете подсказать как сделать через редактирование xml:

  1. путь можно узнать например через реестр (HKEY_CURRENT_USER\SOFTWARE\anosoft
    anoCAD x64\24.0
    CAD\MCSParams, AppOptions_ru-RU)
  2. редактируем это xml (vbs):

Set objXMLDoc = CreateObject(“Microsoft.XMLDOM”)
objXMLDoc.async = False
objXMLDoc.load(“AppOptions.xml”)

Set ElemList = objXMLDoc.getElementsByTagName(“Источник данных??”)
plot = ElemList.item(0).Text

ElemList.item(0).text=“НОВОЕ ЗНАЧЕНИЕ”

objXMLDoc.save(“AppOptions.xml”)

Только как исправить, чтобы найти узел “” и заменить его на например “z:\BD_SQL
ana\std.mdf”?

Фрагмент из xml, где нужно "value=“pgsql:ncad_24_0” поменять на "value=“z:\BD_SQL
ana\std.mdf”:

' <section sid="2" name="Доступ к базам данных" icon="22" slide="-1">
' <param id="9" name="Источник данных" ctrl="button_string" value="pgsql:ncad_24_0"/>
' <param id="13153" name="Путь к внешним файлам проектов" ctrl="dialog_system_folder_browser" hidden="1" value="[DATA_ALL_RW]"/>
' <param id="12" ctrl="edit_int" hidden="1" name="Standards filter" value="1021"/>
' <param id="13" name="Фильтр стандартов" ctrl="button_string" hidden="1" value="ЕСКД, ISO, DIN, JUS, PN, GB, CSN, NF, IS"/>
' <param id="14" name="Фильтр номенклатуры" ctrl="button_string" hidden="1" value="Отключен"/>
' </section>

через редактирование хмл будет работать только если отредактировать перед нанозапуском, выше жэж написал, читает его только при старте

   /// <summary>

    /// переключалка нанобаз

    /// </summary>

    [Rtm.CommandMethod("drz_changedb", Rtm.CommandFlags.Session)]

    public void changedbMod()


    {

        string oldBd = Multicad.AplicationServices.McParamManager.GetStringParam(9);//получаем путь к базе текущего приложения


        string sMDF = "z:\\BD_SQL\\nana\\std.mdf";//local *.mdf

        bool bsetBD = Multicad.AplicationServices.McParamManager.SetParam(sMDF, 9);



        string sSQL = "SQL:C-SQLSERVER:mc_spds9";

        bsetBD = Multicad.AplicationServices.McParamManager.SetParam(sSQL, 9);


        string sPSQL = "pgsql:nspds240";

        bsetBD = Multicad.AplicationServices.McParamManager.SetParam(sPSQL, 9);


    }

уот так переключает

это тестовый код,

потом можно дооформить, чтобы передавать в класс параметром базу, или открывать файловый диалог..


PS переходи на светлую сторону .NET C#
значительно проще, возможностей и примеров больше чем на басик, питон или лисп

Вижу пользователя, который насоздавал своих таблиц и отредактировал под себя и тут добрый волшебник взял и сменил БД :frowning: без его ведома

библиотеки mapimgd.dll и mapibasetypes.dll можете выложить? Хотя они вроде есть в папке с nanoCAD

«Лицо без шрама» или первые шаги в Multicad.NET API 7 (для Nanocad 8.1)

Вижу пользователя, который насоздавал своих таблиц и отредактировал под себя и тут добрый волшебник взял и сменил БД :frowning: без его ведома

ну зачем жэж волшебник, для большинства пользователей базы темный лес, а где лежит и как подключить вообще космос…

поэтому так

image.png

или так

image.png

Счастье для всех, даром, и пусть никто не уйдёт обиженный!(с)

где лежат и как настроить, пользователю сложно объяснить, вот создать таблицу в Верхнем колонтитуле на 50 строк, сохранив в базу перезаписав с тем де именем - любимое занятие.

А потом - “куда пропали мои таблицы”

в сетевой базе перезапишет только свои объекты, в локальной все объекты его

Право пользователя, проблемы то же его)))

библиотеки mapimgd.dll и mapibasetypes.dll можете выложить? Хотя они вроде есть в папке с nanoCAD

«Лицо без шрама» или первые шаги в Multicad.NET API 7 (для Nanocad 8.1)

вступай в клуб разработчиков, там тебе и SDK со справкой и примерами и форум техподдержки

все необходимые библиотеки есть в нанокаде, единственное при добавлении в проект

копировать локально=false

вот быстрый старт от

Первое приложение NET для nanoCAD 23+ : AutoLISP / VisualLISP

мне показалось несправедливым, что пользователи голой платформы лишены радости переключать базы мультикад из ком строки..

исправляю это недоразумение

changedbmod-nc.zip (4,6 КБ)

загрузить сборку (загприл)

вызов drz_changedb

дальше подставляем путь к mdf (можно с пробелами) - z:\BD SQL
ana\std.mdf

либо базу postgreSQL - pgsql:nspds240

SQL - SQL:C-SQLSERVER:mc_spds9

в спдс и механике может быть излишне там есть (spchangedb, mcchangedb) но который год прошу, чтоб починили баг с пробелом… пришлось чинить самому)))

ссылочка на гит

GitHub - doctorRaz/ChangedbMod: Переключение базы данных MultiCAD

ChangedbMod_NC.zip Скажите пожалуйста работает во всех версиях NanoCAD 22-24?

ChangedbMod_NC.zip Скажите пожалуйста работает во всех версиях NanoCAD 22-24?

проверил

В 20, 22-24 работает

upd даже в нано20 работает.

Спасибо!