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

Профессиональные вопросы => Программирование приложений => Тема начата: lua от 07.06.22, 11:16:15

Название: вставка и перестроение фрагмента по переменным чертежа
Отправлено: lua от 07.06.22, 11:16:15
Добрый день всем! Изучаю как создавать приложения на API КОМПАС. В примерах не нашел как можно выполнить следующее - вставить в чертеж параметризованный фрагмент. Это самая простая задача. Далее - как перестроить его по заданным в чертеже переменным. Можете привести пример, как это делается? Лучше на С++. Заранее благодарен.
Название: Re: вставка и перестроение фрагмента по переменным чертежа
Отправлено: graphdark от 07.06.22, 17:41:59
Вот с 2D работал в delphi. Скидываю весь проект.2D.zip
Название: Re: вставка и перестроение фрагмента по переменным чертежа
Отправлено: Михаил88 от 07.06.22, 17:55:05
Цитата: 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
Название: Re: вставка и перестроение фрагмента по переменным чертежа
Отправлено: lua от 09.06.22, 11:07:46
Цитата: Михаил88 от 07.06.22, 17:55:05В результате работы происходит вставка параметрического фрагмент. Переменной r в фрагменте присваивается значение переменной R из чертежа куда вставляется фрагмент. Написано с помощью API7.
Михаил, спасибо большое :)
Название: Re: вставка и перестроение фрагмента по переменным чертежа
Отправлено: lua от 13.06.22, 12:55:21
Вставить получилось. Но переменные фрагмента потерялись. Это по какой причине?
Название: Re: вставка и перестроение фрагмента по переменным чертежа
Отправлено: Михаил88 от 13.06.22, 14:41:40
Screenshot_1.bmp
Они ни куда не пропали. Если 2 раза щелкнуть ЛКМ по фрагменту вы их увидите.