使用SOLIDWORKS API获取物体上的极值点的宏
通常使用极值点来找到指定方向上最远的点。可以使用SOLIDWORKS API的IBody2::GetExtremePoint
函数来找到这些点。
该函数需要方向向量作为输入,并将X、Y、Z坐标作为输出参数返回该方向上的极值点。
在定义方向时,不需要指定向量上的点。 通常在找到体的边界尺寸时使用此函数,特别是当体的方向与全局XYZ坐标不对齐时,不需要重新定位体以找到其最佳匹配边界框。
与通过IBody2::GetBodyBox
或任何其他边界框函数返回的边界框不同,极值点是精确的,这意味着可以将这些数据用于比较和计算。
下图演示了模型在多个方向上的典型极值点。
{ width=400 }
以下代码示例将在所选物体的XYZ方向上找到极值点,并创建一个草图点。
{ width=320 height=217 }
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If Not swModel Is Nothing Then
Set swSelMgr = swModel.SelectionManager
If swSelMgr.GetSelectedObjectType3(1, -1) = swSelectType_e.swSelSOLIDBODIES Then
Dim swBody As SldWorks.Body2
Set swBody = swSelMgr.GetSelectedObject6(1, -1)
swModel.ClearSelection2 True
swModel.SketchManager.Insert3DSketch True
swModel.SketchManager.AddToDB = True
Dim vDirs(5) As Variant
vDirs(0) = Array(1, 0, 0)
vDirs(1) = Array(0, 1, 0)
vDirs(2) = Array(0, 0, 1)
vDirs(3) = Array(-1, 0, 0)
vDirs(4) = Array(0, -1, 0)
vDirs(5) = Array(0, 0, -1)
Dim i As Integer
For i = 0 To UBound(vDirs)
Dim x As Double
Dim y As Double
Dim z As Double
swBody.GetExtremePoint vDirs(i)(0), vDirs(i)(1), vDirs(i)(2), x, y, z
swModel.SketchManager.CreatePoint x, y, z
Next
swModel.SketchManager.AddToDB = False
swModel.SketchManager.Insert3DSketch True
Else
MsgBox "请选择实体体"
End If
Else
MsgBox "请打开零件或装配体"
End If
End Sub