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

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

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

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

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

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

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

Вызов функции start3d()

Автор omgtustudent, 03.04.23, 13:53:19

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

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

omgtustudent

Часто скрипты на python содержат строку следующего вида: Kompas, doc3d = start3d()

Вот только эта строка дает ошибку NameError: name 'start3d' is not defined, что не удивительно. Логично, если бы здесь было что-то наподобие library.start3d(), но такой функции нет ни в одной библиотеке, в документации о ней также ни слова, в интернете можно найти скрипты, содержащие вызов start3d(), но нет контекста их выполнения. Мне известно, только что тот, что есть у меня, работающий скрипт с данной функцией был написан лет восемь назад и запускался на соответствующей версии Компаса

У меня же функция не работает как при запуске из-под IDE, так и из-под графического интерфейса Компаса на версиях 20, 21, 15, я пробовал и компас-макро, и py-kompas-makro

Вместо Kompas, doc3d = start3d(), я пишу
kompas_object = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6 _api5_module.KompasObject.CLSID, pythoncom.IID_IDispatch))
doc3d = kompas_object.ActiveDocument3D()
Казалось бы, тогда проблемы никакой и нет, однако мне все равно хотелось бы понять, что необходимо сделать для того, чтобы код ниже работал

import Kompas6API5, LDefin3D, LDefin2D
import pythoncom from win32com.client
import Dispatch
iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = Kompas6API5.KompasObject(iKompasObject)
import math
iDocument3D = iKompasObject.Document3D()
iDocument3D.Open("C:\filename.a3d", False)
Kompas, doc3d = start3d()
# NameError: name 'start3d' is not defined

Михаил88

#1
У вас в модуле просто нет функции start3d(). Если вы ее создадите то будет работать.

Для примера.

def start3d():
    kompas_object = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6 _api5_module.KompasObject.CLSID,
                                                                                                              pythoncom.IID_IDispatch))
    doc_3d = kompas_object.ActiveDocument3D()

    return kompas_object, doc_3d

Пишите в функцию то что вы хотите, чтобы она делала. Или функцию нужно импортировать из модуля, в котором она хранится у вас.
+ Благодарностей: 1