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

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

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

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

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

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

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

API метод для конвертирования документов

Автор Arid, 22.08.23, 08:17:05

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

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

Arid

Я начал изучать программирование приложений под Kompas3d и предложенный API. Версия Kompas3d 21 Home.
Возник вопрос касательно использования библиотеки IFC конвертера и его настроек. Возможно ли программным способом задавать параметры для работы конвертера, кроме как вызов визуального окна? Получаемый интерфейс "IIFCConverterParam" с параметрами не имеет публичных методов.

Дополнительно прикрепляю пример кода, как пока реализовано
static void Main(string[] args)
{
    try
    {
        Type type = Type.GetTypeFromProgID("KOMPAS.Application.7");
        if (type is null) return;
        object instance = Activator.CreateInstance(type);
        if (instance is null) return;
        _kompasApi = (IApplication)instance;
        _kompasApi.Visible = false;
        _kompasApi.Documents.Open(args[0]);
        if (_kompasApi.Documents.Count == 0) return;
        IConverter converter = _kompasApi.Converter[ConverterLib];
        Console.WriteLine($"{converter.GetFilter((int)_kompasApi.ActiveDocument.Type, true, out Command)} {Command}");

        Console.WriteLine(converter.Type);

        var convParams = converter.ConverterParameters(Command);
        Console.WriteLine($"Параметры: {convParams is null}");
        Console.WriteLine($"iS IFCConverter_LIBRARY.IIFCConverterParam {convParams is IFCConverter_LIBRARY.IIFCConverterParam}");
        if (convParams is IFCConverter_LIBRARY.IIFCConverterParam) {
            IFCConverter_LIBRARY.IIFCConverterParam d = (IFCConverter_LIBRARY.IIFCConverterParam)convParams;
        }

        //Console.WriteLine(converter.VisualEditConvertParam(_kompasApi.Reference, Command));

        int res = converter.Convert(null, args[1], Command, false);
        Console.WriteLine(res);
        _kompasApi.Quit();
    }
    catch (Exception kompasExpection){
        Console.WriteLine(kompasExpection.Message);
    }
}

Scull_


Arid

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

Добавив в IDE файл ".tlb", я получил интерфейс "IIFCConverterParam" используя рефлексию в отладочном режиме для данного типа объявленных методов. Но в приведенном мной примере кода, он и так был мне доступен и у него отсутствовали какие-либо публичные методы.

1.PNG