• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Вызов api функций из exe приложений

Автор safonoval, 24.08.14, 12:48:12

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

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

safonoval

Здравствуйте.
Можно ли из exe приложения осуществить вызов АПИ компас,
если да то дайте ссылку на материалы или пример.

c:\Program Files\ASCON\KOMPAS-3D V15\SDK\Pascal\DELPHIAUTO\ksContrl\
+ Благодарностей: 1

safonoval



safonoval

т.е.
автоматизация, с префиксом ks -это и есть специально для вызова команд из др. приложений?
а API 5   API7, с префиксом I, - для создания библиотек?


Так я понимаю??


safonoval

А можно попроще объяснить в чем разница этих интерфейсов?


safonoval

API 7 посвежее?
есть преимущества?
exe приложение может осуществить вызов на API 7 компас?

Api7 новее, получаете интерфейс KompasApi:=GetActiveOleObject('Kompas.Application.7') as IApplication; и работаете с Компасом через его Api.

safonoval

Пытаюсь переделать запуск компаса под другой интерфейс (с 5 на 7)

KompasObject kompas(NULL);
if ( !kompas.m_lpDispatch )
    {
        kompas.CreateDispatch( _T("KOMPAS.Application.5") );
        
        if ( kompas.m_lpDispatch )
      {
         kompas.SetVisible( true );
      }
}


получается


IKompasAPIObject kompas7(NULL);
if ( !kompas7.m_lpDispatch )
    {
        kompas7.CreateDispatch( _T("KOMPAS.Application.7") );
        
        if ( kompas7.m_lpDispatch )
      {
         ////////kompas7.SetVisible( true );
      }
}


Компас запускается, но невидим,
метода SetVisible для данного объекта нет.
как сделать видимым?

или может по другому как?
Спасибо

safonoval

вопрос снимаю, разобрался с этим, нужен объект IAplication.

такой код вообще удовлетворителен?

Дмитрий Юрьевич

Добрый день. Начинаю осваивать kompas api.
Начинаю с этого
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Kompas6Constants;
using KAPITypes;
using Kompas6API5;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public KompasObject kompas;
       

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (kompas == null)
            {
                Type t = Type.GetTypeFromProgID("KOMPAS.Application.7");
                kompas = (KompasObject)Activator.CreateInstance(t);
            }

            if (kompas != null)
            {
                kompas.Visible = true;
                kompas.ActivateControllerAPI();
            }
        }
    }
}

Получаю это (см.вложение)
"Необработанное исключение типа "System.ArgumentNullException" в mscorlib.dll

Дополнительные сведения: Значение не может быть неопределенным."