Использование методов в уже открытом документе

Автор Dayforce, 17.02.21, 17:39:41

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

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

Dayforce

Добрый день. Я могу как то использовать методы по типу RebuildDocument() в уже открытой модели? Без открытия файла через VBA у меня ничего не получается. Пробовал сразу получить документ через ActiveDocument3D, в итоге выдает ошибку. Если кто то может скинуть пример, буду благодарен.

Показывать нужно, что Вы делаете.
PS. В ЛС, писать ненужно - это для ЛС, когда всем читать, ненужно и касается лично меня, а не консультации.

Dayforce

Цитата: Sabahs от 17.02.21, 19:03:25Показывать нужно, что Вы делаете.
PS. В ЛС, писать ненужно - это для ЛС, когда всем читать, ненужно и касается лично меня, а не консультации.


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

Такой вот код выдаёт ошибку. Как переписать код, чтобы перестраивался открытый чертёж?

Чертеж - kompas.ActiveDocument2D.
PS. По правильному, IApplication.ActiveDocument - Получить текущий активный документ, далее, смотрим IKompasDocument.DocumentType - Тип документа и только, тогда приводим к соответствующему виду.

Dayforce

Цитата: Sabahs от 17.02.21, 20:18:07Чертеж - kompas.ActiveDocument2D.
PS. По правильному, IApplication.ActiveDocument - Получить текущий активный документ, далее, смотрим IKompasDocument.DocumentType - Тип документа и только, тогда приводим к соответствующему виду.

Опечатался, перестроить надо открытую модель. Я как понял это делается только через API7. Увидел вложенность методов, но тем не менее не получилось сделать правильно. Можете написать пример на VBA, как перестроить открытую в компасе модель? Там всего несколько строк, как я понимаю. После этого будет понятнее, как вызывать остальные методы.

Vi2

Цитата: 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")

Dayforce

Цитата: Vi2 от 18.02.21, 16:02:30Этот код говорит, что нужно создать новый экземпляр Компаса. Я не знаю, запустится новый Компас или просто откроется новый документ. Но получение текущего Компаса это использование функции VB GetObject:
    Set kompas = GetObject(, "Kompas.Application.5")
Если нужно создать новый Компас, то или как у тебя, или:
    Set kompas = CreateObject("Kompas.Application.5")
С открытием компаса у меня проблем нет. Я запускал уже скрипт и проделывал все то же самое с чертежом, только я указывал путь к чертежу, а сейчас я хочу чтобы все происходило в открытом чертеже

p3452

Ну вам же Sabahs уже все объяснил:
- На открытом чертеже делаете
Set doc = kompas.ActiveDocument2D
doc - это ваш "открытый" чертеж.

Dayforce

Цитата: Vi2 от 18.02.21, 16:02:30Этот код говорит, что нужно создать новый экземпляр Компаса. Я не знаю, запустится новый Компас или просто откроется новый документ. Но получение текущего Компаса это использование функции VB GetObject:
    Set kompas = GetObject(, "Kompas.Application.5")
Если нужно создать новый Компас, то или как у тебя, или:
    Set kompas = CreateObject("Kompas.Application.5")

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