Как программно добавить описание библиотеки

Автор dimaschig, 18.09.13, 08:52:41

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

dimaschig

Добрый день.
Необходимо написать программку, которая автоматически добавляет описание прикладной библиотеки в Компас без участия пользователя. Пробовал таким способом:

using System;
using System.Collections.Generic;
using System.Text;
using Kompas6API5;
using KAPITypes;
using Kompas6Constants;
using Kompas6Constants3D;
using KompasAPI7;
using System.Threading;
using KGAXLib;

using reference = System.Int32;


namespace Include_lib
{
    class Program
    {
       

        static void Main(string[] args)
        {
            KompasObject kompas;

            kompas = null;

            Type t = Type.GetTypeFromProgID("KOMPAS.Application.5");
            kompas = (KompasObject)Activator.CreateInstance(t);

            if (kompas != null)
            {
                kompas.Visible = false;
                string Filename = kompas.ksGetFullPathFromSystemPath("KMD_Tab.rtw", 1);
                try
                {
                   if( kompas.ksAttachKompasLibrary(Filename) != 0)
                       Console.WriteLine("Бибилиотека  'Таблицы КМД'  успешно зарегистрирована");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Не удалось зарегистрировать бибилиотеку : Таблицы КМД");
                }
                Thread.Sleep(1000);
            kompas.Quit();
            }
        }
    }
}

Но такой способ не работает. Точнее если сделать kompas.Visible = true; и задержку в несколько секунд, то видно, что запускается компас, подключается библиотека(появляется в корне менеджера библиотек в режиме работы "Меню") и даже замечательно работает. Однако после закрытия компаса и при последующем его ручном открытии данная библиотека отсутствует. Убирал kompas.Quit(); и закрывал компас вручную - эффект тотже.
Пробовал вместо команд запуска Компаса, получать интерфейс уже запущенного объекта компас командой :
kompas = (KompasObject)System.Runtime.InteropServices.Marshal.GetActiveObject("Kompas.Application.5");
итог: библиотека добавляется, работает, но при последующем открытии программы - отсутствует.

Прошу подсказать, как правильно программно добавлять описание прикладной библиотеки. Если это можно сделать через ILibrary, то как его получить и как с его помощью добавлять новую библиотеку?

Можно попробовать через ILibraryManager.AddFolder, но гарантии не даю, что подключит, нужно пробовать, скорее всего создаст закладку и всё.

dimaschig

Пробывал вот так
//---------------------------------------------------------------------------------------------------         
  if (kompas != null)
            {
                kompas.Visible = true;
                KompasAPI = (IApplication)kompas.ksGetApplication7();

                LibraryManager = (ILibraryManager)KompasAPI.LibraryManager;
                LibraryManager.AddFolder("Библиотеки САПР");
                LibraryManager.ActiveFolder = "Библиотеки САПР";
               
                string Filename = kompas.ksGetFullPathFromSystemPath("KMD_Tab.rtw", 1);
                try
                {
                   int id_newlib = 0;
                   id_newlib = kompas.ksAttachKompasLibrary(Filename);

                   if (id_newlib != 0)
                       Console.WriteLine("Бибилиотека  'Таблицы КМД'  успешно зарегистрирована");


                   for(int i = 0; i < LibraryManager.ProceduresLibraries.Count-1; i++)
                   {
                       if (LibraryManager.ProceduresLibraries.UniqueId == id_newlib)
                       {
                           ProceduresLibrary = LibraryManager.ProceduresLibraries;
                           ProceduresLibrary.Style = (ksLibraryStyleEnum)4;//панель
                           ProceduresLibrary.Attach = true;
                       }

                   }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Не удалось зарегистрировать бибилиотеку : Таблицы КМД");
                }
                Thread.Sleep(1000);

//-----------------------------------------------------------------------------------------
Получается найти в менеджере библиотек только что добавленную бибилиотеку, получается даже изменить стиль на "Панель". Но при этом биилиотека добавляется не в папку "Библиотеки САПР", хотя такая папка создается.
Итог : при следующем запуске Компаса -  ни библиотеки, ни папки в менеджере нет.

Значит не получится, так подключить. Какова цель программного подключения?

dimaschig

Можно было бы раскинуть эту программку в автозагрузку компьютеров домена и избавить себя от необходимости обходить всех пользователей и подключать библиотеки.

Скорее всего придётся обходить или обратится в СТП, может, что посоветуют.