Как получить координатные данные объектов в SolidWorks с помощью API - PullRequest
2 голосов
/ 26 января 2020

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

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

1 Ответ

2 голосов
/ 27 января 2020

Для компонентов вы можете использовать свойство .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
...