Set Tolerances and Compare Geometry (VBA)
'----------------------------------------------------------------------------------------
' This example shows how to set the tolerances and then
compare the volume and geometry
' of two versions of the same part and save the volume
comparison results as a solid part
' using the SOLIDWORKS Utilities API.
'
' Preconditions:
'
' 1. Add the SOLIDWORKS Utilities as an add-in
' (in
SOLIDWORKS, click Tools > Add-Ins
> SOLIDWORKS Utilities).
' 2. Add the SOLIDWORKS Utilities type library as a reference
' (in
the IDE, click Tools > References
> SOLIDWORKS
' Utilities
version type library).
' 3. The specified files exist.
' 4. C:\test\
exists.
'
' Postconditions:
'
' 1. Geometry comparison report, C:\test\Report\gtReportIndex.htm,
is created.
' 2. Position and angular tolerance statuses display in
the Immediate Window.
' 3. Face and volume comparison statuses display in the
Immediate Window.
' 4. Volume comparison part, C:\test\volumeComparison.sldprt,
is created.
'
' NOTE: Do not save the parts as they are used in a SOLIDWORKS
tutorial.
'---------------------------------------------------------
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.PartDoc
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Dim swUtil As
SWUtilities.gtcocswUtilities
Dim swUtilCompGeom As
SWUtilities.gtcocswCompareGeometry
Dim OUtils As SWUtilities.gtcocswUtilOptions
Dim file1 As String
Dim file2 As String
Dim reportname As String
Dim savevol As String
Dim errorcode As gtError_e
Dim longStatus As
gtError_e
Dim posTol As Double
Dim angTol As Double
Dim AddToDesignBinder As Boolean
Dim OverwriteReport As Boolean
savevol = "C:\test\volumeComparison"
reportname = "C:\test\Report"
AddToDesignBinder = False
OverwriteReport = True
' Get pointer to SOLIDWORKS Utilities interface
Set swUtil = swApp.GetAddInObject("Utilities.UtilitiesApp")
' Get pointer to SOLIDWORKS Utilities Compare Geometry
tool
Set swUtilCompGeom = swUtil.GetToolInterface(gtSwToolGeomDiff,
errorcode)
' Get SOLIDWORKS Utilities options
Set OUtils = swUtil.Options
posTol = 0.0001 ' Meters
angTol = 0.000001 ' Radians
' Set position tolerance
errorcode = OUtils.SetPositionTolerance(posTol)
Debug.Print "Position tolerance set." &
" gtError_e: " & errorcode
' Set angular tolerance
errorcode = OUtils.SetAngularTolerance(angTol)
Debug.Print "Angular tolerance set." & "
gtError_e: " & errorcode
Debug.Print ""
Dim volDiffStatus As gtVolDiffStatusOptionType_e
Dim faceDiffStatus As gtVolDiffStatusOptionType_e
file1 = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\samples\tutorial\swutilities\bracket_a.sldprt"
file2 = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\samples\tutorial\swutilities\bracket_b.sldprt"
' Compare the geometry of the faces and volumes and save
results to a report
errorcode = swUtilCompGeom.CompareGeometry3(file1,
"", file2, "", gtGdfFaceAndVolumeCompare, gtResultSaveReport,
reportname, AddToDesignBinder, OverwriteReport, volDiffStatus, faceDiffStatus)
If
Not longStatus = gtNOErr Then
Debug.Print
"Error comparing geometries. Inspect gtError_e = " & longStatus
& " in the API help."
End
If
Call
diffStatus("Volume comparison", volDiffStatus)
Call
diffStatus("Face comparison", faceDiffStatus)
' Save volume comparison results as a solid part
errorcode = swUtilCompGeom.SaveCompareVolumeResults(savevol)
' Perform any necessary cleanup
errorcode = swUtilCompGeom.Close()
End Sub
Sub diffStatus(ByVal name As String, ByVal diffCode As
gtVolDiffStatusOptionType_e)
Debug.Print
name
Select
Case diffCode
Case
gtSuccess
Debug.Print
"Succeeded"
Case
gtNotPerformed
Debug.Print
"Not performed"
Case
gtCanceled
Debug.Print
"Canceled"
Case
gtFailed
Debug.Print
"Failed"
Case
gtIdenticalParts
Debug.Print
"Identical parts"
Case
gtDifferentParts
Debug.Print
"Different parts"
Case
gtNoSolidBody
Debug.Print
"No solid body found"
Case
gtAlreadySaved
Debug.Print
"Already saved"
End
Select
Debug.Print
""
End Sub