Как получить координатные данные объектов в SolidWorks с помощью API

Я хочу знать, как получить доступ к координатам различных объектов в дереве функций SolidWorks через API, который использует VBA. Лично для меня проблема заключается в том, чтобы найти правильный оператор для извлечения позиционных данных, которые варьируются в зависимости от выбранного объекта. Мои объекты описываются через их собственную систему координат и исходную точку.

заранее спасибо


person Pancookie    schedule 26.01.2020    source источник
comment
На тот случай, если никто здесь не сможет вам помочь из-за ограниченных знаний о SolidWorks, найдите время, чтобы изучить форумы, найденные здесь: cadtutor.net/forum/forum/57-net-objectarx-amp-vba   -  person braX    schedule 26.01.2020


Ответы (1)


Для компонентов можно использовать свойство .Transform2. Это вернет объект MathTransform, который содержит данные матрицы преобразования для компонента. Вы можете получить доступ к данным объекта MathTransform с помощью свойства .ArrayData. Это вернет массив из 16 двойников. Первые 9 элементов определяют матрицу вращения 3x3, а следующие 3 элемента определяют компонент перемещения (точка начала координат xyz компонента). В справке по API вы можете найти подробную информацию.

В справке по API приведен пример получения преобразований компонентов сборки: >http://help.solidworks.com/2019/English/api/sldworksapi/Get_Transforms_of_Assembly_Components_Example_VB.htm

Мои объекты описываются через собственную систему координат и исходную точку

Если вы используете справочную геометрию «систему координат» в качестве пользовательского источника, вы можете получить доступ к MathTransform через .Transform его объекта CoordinateSystemFeatureData.

Чтобы получить объект CoordinateSystemFeatureData, вы должны сначала получить объект Feature вашей системы координат, а затем вызвать .GetDefinition.

Пример:

Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.ModelDoc2
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("FEATURE NAME OF COORDINATE SYSTEM", "COORDSYS", 0, 0, 0, False, 0, Nothing, 0)

Dim swSelMgr As SelectionMgr
Set swSelMgr = Part.SelectionManager

Dim swFeat As Feature
Set swFeat = swSelMgr.GetSelectedObject6(1, -1)

Dim swFeatData As CoordinateSystemFeatureData
Set swFeatData = swFeat.GetDefinition

End Sub
person Sinue    schedule 27.01.2020