【问题标题】:How to get coordinate data of objects in SolidWorks using API如何使用 API 在 SolidWorks 中获取对象的坐标数据
【发布时间】:2020-01-27 17:17:40
【问题描述】:

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

提前致谢

【问题讨论】:

标签: vba solidworks


【解决方案1】:

对于组件,您可以使用 .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

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 2016-11-19
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多