вставка и перестроение фрагмента по переменным чертежа

Автор lua, 07.06.22, 11:16:15

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

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

lua

Добрый день всем! Изучаю как создавать приложения на API КОМПАС. В примерах не нашел как можно выполнить следующее - вставить в чертеж параметризованный фрагмент. Это самая простая задача. Далее - как перестроить его по заданным в чертеже переменным. Можете привести пример, как это делается? Лучше на С++. Заранее благодарен.

graphdark


Михаил88

#2
Цитата: 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

lua

Цитата: Михаил88 от 07.06.22, 17:55:05В результате работы происходит вставка параметрического фрагмент. Переменной r в фрагменте присваивается значение переменной R из чертежа куда вставляется фрагмент. Написано с помощью API7.
Михаил, спасибо большое :)

lua

Вставить получилось. Но переменные фрагмента потерялись. Это по какой причине?

Михаил88

Screenshot_1.bmp
Они ни куда не пропали. Если 2 раза щелкнуть ЛКМ по фрагменту вы их увидите.