Добрый день всем! Изучаю как создавать приложения на API КОМПАС. В примерах не нашел как можно выполнить следующее - вставить в чертеж параметризованный фрагмент. Это самая простая задача. Далее - как перестроить его по заданным в чертеже переменным. Можете привести пример, как это делается? Лучше на С++. Заранее благодарен.
Вот с 2D работал в delphi. Скидываю весь проект.2D.zip
Цитата: lua от 07.06.22, 11:16:15Добрый день всем! Изучаю как создавать приложения на API КОМПАС. В примерах не нашел как можно выполнить следующее - вставить в чертеж параметризованный фрагмент. Это самая простая задача. Далее - как перестроить его по заданным в чертеже переменным. Можете привести пример, как это делается? Лучше на С++. Заранее благодарен.
kompas_document = application.ActiveDocument
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
print(kompas_document_2d)
kompas_document_2d_1 = kompas_api7_module.IKompasDocument2D1(kompas_document_2d)
print(kompas_document_2d_1)
# Получаем значение переменной R находящейся в документе
variable_doc = kompas_document_2d_1.Variable(False, 'R')
R = variable_doc.Value
print(R)
iInsertionsManager = kompas_api7_module.IInsertionsManager(kompas_document)
print(iInsertionsManager)
iViewsAndLayersManager = kompas_document_2d.ViewsAndLayersManager
print(iViewsAndLayersManager)
iViews = iViewsAndLayersManager.Views
print(iViews)
view = iViews.ActiveView
print(view)
iDrawingContainer = kompas_api7_module.IDrawingContainer(view)
print(iDrawingContainer)
insertionObjects = iDrawingContainer.InsertionObjects
print(insertionObjects)
'''
# ksTUnknown -1 Неизвестный
# ksTBodyFragment 0 Вставка внешнего фрагмента. Взять в документ
# ksTReferenceFragment 1 Вставка внешнего фрагмента. Внешней ссылкой
# ksTLocalFragment 3 Вставка локального фрагмента
# ksTBodyView 4 Вставка вида другого чертежа. Взять в документ
# ksTReferenceView 5 Вставка вида другого чертежа. Внешней ссылкой
'''
iInsertionDefinition = iInsertionsManager.AddDefinition(kompas6_constants.ksTBodyFragment, 'Фрагмент паз',
r'C:\Users\User\Desktop\Вставка фрагмента\Паз.frw')
print(iInsertionDefinition)
iInsertionObject = insertionObjects.Add(iInsertionDefinition)
iInsertionObject.SetPlacement(200.0, 100.0, 0.0, False)
insertionDefinition = iInsertionObject.InsertionDefinition
print(insertionDefinition)
insertionDefinition.FileName = r'C:\Users\User\Desktop\Вставка фрагмента\Паз.frw'
iInsertionFragment = kompas_api7_module.IInsertionFragment(iInsertionObject)
print(iInsertionFragment)
ivariable7 = iInsertionFragment.Variable('r')
name = ivariable7.Name
print(name)
# Вставляем значение переменной R в переменную вставленного фрагмента r
ivariable7.Value = R
iInsertionObject.Update()
kompas_document_2d_1.RebuildDocument()
В результате работы происходит вставка параметрического фрагмент. Переменной r в фрагменте присваивается значение переменной R из чертежа куда вставляется фрагмент. Написано с помощью API7.
Screenshot_1.bmpScreenshot_2.bmp
Цитата: Михаил88 от 07.06.22, 17:55:05В результате работы происходит вставка параметрического фрагмент. Переменной r в фрагменте присваивается значение переменной R из чертежа куда вставляется фрагмент. Написано с помощью API7.
Михаил, спасибо большое :)
Вставить получилось. Но переменные фрагмента потерялись. Это по какой причине?