Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Visual Basic (VB, VBA, VB.NET) => Тема начата: Dayforce от 17.02.21, 17:39:41

Название: Использование методов в уже открытом документе
Отправлено: Dayforce от 17.02.21, 17:39:41
Добрый день. Я могу как то использовать методы по типу RebuildDocument() в уже открытой модели? Без открытия файла через VBA у меня ничего не получается. Пробовал сразу получить документ через ActiveDocument3D, в итоге выдает ошибку. Если кто то может скинуть пример, буду благодарен.
Название: Re: Использование методов в уже открытом документе
Отправлено: Sabahs от 17.02.21, 19:03:25
Показывать нужно, что Вы делаете.
PS. В ЛС, писать ненужно - это для ЛС, когда всем читать, ненужно и касается лично меня, а не консультации.
Название: Re: Использование методов в уже открытом документе
Отправлено: Dayforce от 17.02.21, 20:13:41
Цитата: Sabahs от 17.02.21, 19:03:25Показывать нужно, что Вы делаете.
PS. В ЛС, писать ненужно - это для ЛС, когда всем читать, ненужно и касается лично меня, а не консультации.


Set kompas = New Kompas6API5.Application
Set doc = kompas.ActiveDocument3D
Set rebuild = doc.RebuildDocument()

Такой вот код выдаёт ошибку. Как переписать код, чтобы перестраивался открытый чертёж?
Название: Re: Использование методов в уже открытом документе
Отправлено: Sabahs от 17.02.21, 20:18:07
Чертеж - kompas.ActiveDocument2D.
PS. По правильному, IApplication.ActiveDocument - Получить текущий активный документ, далее, смотрим IKompasDocument.DocumentType - Тип документа и только, тогда приводим к соответствующему виду.
Название: Re: Использование методов в уже открытом документе
Отправлено: Dayforce от 18.02.21, 07:53:06
Цитата: Sabahs от 17.02.21, 20:18:07Чертеж - kompas.ActiveDocument2D.
PS. По правильному, IApplication.ActiveDocument - Получить текущий активный документ, далее, смотрим IKompasDocument.DocumentType - Тип документа и только, тогда приводим к соответствующему виду.

Опечатался, перестроить надо открытую модель. Я как понял это делается только через API7. Увидел вложенность методов, но тем не менее не получилось сделать правильно. Можете написать пример на VBA, как перестроить открытую в компасе модель? Там всего несколько строк, как я понимаю. После этого будет понятнее, как вызывать остальные методы.
Название: Re: Использование методов в уже открытом документе
Отправлено: Vi2 от 18.02.21, 16:02:30
Цитата: Dayforce от 17.02.21, 20:13:41Set kompas = New Kompas6API5.Application
Этот код говорит, что нужно создать новый экземпляр Компаса. Я не знаю, запустится новый Компас или просто откроется новый документ. Но получение текущего Компаса это использование функции VB GetObject:
    Set kompas = GetObject(, "Kompas.Application.5")
Если нужно создать новый Компас, то или как у тебя, или:
    Set kompas = CreateObject("Kompas.Application.5")
Название: Re: Использование методов в уже открытом документе
Отправлено: Dayforce от 18.02.21, 16:37:32
Цитата: Vi2 от 18.02.21, 16:02:30Этот код говорит, что нужно создать новый экземпляр Компаса. Я не знаю, запустится новый Компас или просто откроется новый документ. Но получение текущего Компаса это использование функции VB GetObject:
    Set kompas = GetObject(, "Kompas.Application.5")
Если нужно создать новый Компас, то или как у тебя, или:
    Set kompas = CreateObject("Kompas.Application.5")
С открытием компаса у меня проблем нет. Я запускал уже скрипт и проделывал все то же самое с чертежом, только я указывал путь к чертежу, а сейчас я хочу чтобы все происходило в открытом чертеже
Название: Re: Использование методов в уже открытом документе
Отправлено: p3452 от 18.02.21, 17:10:53
Ну вам же Sabahs уже все объяснил:
- На открытом чертеже делаете
Set doc = kompas.ActiveDocument2D
doc - это ваш "открытый" чертеж.
Название: Re: Использование методов в уже открытом документе
Отправлено: Dayforce от 18.02.21, 18:18:01
Цитата: Vi2 от 18.02.21, 16:02:30Этот код говорит, что нужно создать новый экземпляр Компаса. Я не знаю, запустится новый Компас или просто откроется новый документ. Но получение текущего Компаса это использование функции VB GetObject:
    Set kompas = GetObject(, "Kompas.Application.5")
Если нужно создать новый Компас, то или как у тебя, или:
    Set kompas = CreateObject("Kompas.Application.5")

Спасибо огромное! Сразу не понял, как переписать код, но сейчас все заработало. Очень вам благодарен