对于组件,您可以使用 .Transform2 属性。这将返回一个 MathTransform 对象,其中包含组件的变换矩阵数据。您可以使用 .ArrayData 属性访问 MathTransform 对象的数据。这将返回一个包含 16 个双精度数的数组。前 9 个元素定义 3x3 旋转矩阵,接下来的 3 个元素定义平移分量(分量的 xyz 原点)。在 API 帮助中,您可以找到详细信息。
API 帮助中有一个如何获取组件转换的示例:http://help.solidworks.com/2019/English/api/sldworksapi/Get_Transforms_of_Assembly_Components_Example_VB.htm
我的对象是通过它们自己的坐标系和一个原点来描述的
如果您使用参考几何“坐标系”作为自定义原点,您可以通过其 CoordinateSystemFeatureData 对象的 .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