如何使用API获取SolidWorks中对象的坐标数据

How to get coordinate data of objects in SolidWorks using API

我想知道如何通过使用 VBA 的 API 访问 SolidWorks 特征树中不同对象的坐标。对我个人而言,问题是找到正确的语句来提取根据所选对象而变化的位置数据。我的对象是通过它们自己的坐标系和原点来描述的。

提前致谢

对于组件,您可以使用 .Transform2 属性。这将 return 一个包含组件转换矩阵数据的 MathTransform 对象。您可以使用 .ArrayData 属性 访问 MathTransform 对象的数据。这将 return 一个包含 16 个双精度值的数组。前 9 个元素定义 3x3 旋转矩阵,接下来的 3 个元素定义平移分量(分量的 xyz 原点)。在 API 帮助中,您可以找到详细信息。

在 API 帮助中有一个关于如何获取组件组件转换的示例:http://help.solidworks.com/2019/English/api/sldworksapi/Get_Transforms_of_Assembly_Components_Example_VB.htm

My objects are described through their own coordinate system and an origin point

如果您使用参考几何 "coordinate system" 作为自定义原点,您可以通过其 CoordinateSystemFeatureData[=29] 的 .Transform 访问 MathTransform =]对象。

要获取 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