Experts,
I am performing interference detection with API on SOLIDWORKS 2016 with the code implemented with VB.NET. I move a component then I detect the interference.
I have a problem on the increment: For now, I choose the increment as the minimum edge of the bounding box of each moving component,
but this method does not generate accurate results.
I thought about thickness analysis implementation so I take as an increment the minimum thickness within the moving component so I guarantee that my component can collide with each eventual component in its direction and here is the code :
Private Function Min_Thikness_Calculation(ByRef swmodel3 As ModelDoc2) As Double
Dim swModel As ModelDoc2
Dim utAddIn As gtcocswUtilities
Dim utThicknessAnalysis As gtcocswThicknessAnalysis
Dim nOption As gtResultOptions_e
Dim nResolution As gttckResolutionOptions_e
Dim strReportName As String
Dim lStatus As Long
Dim bAddToBinder As Boolean
Dim bSaveToEdwg As Boolean
Dim bOverWrite As Boolean
Dim dThicknessLimit As Double
Dim errorCode As Long
Dim name As String
'-------------------------'
swModel = iSwApp.ActivateDoc3(name, False, swRebuildOnActivation_e.swRebuildActiveDoc, longstatus)
'-------------------------'
' Load the SOLIDWORKS Utilities add-in
utAddIn = iSwApp.GetAddInObject("Utilities.UtilitiesApp")
' Get the thickness analysis tool
utThicknessAnalysis = utAddIn.ThicknessAnalysis
' Initialize the thickness analysis tool
lStatus = utThicknessAnalysis.Init()
'If Not errorCode = gtError_e.gtNOErr Then
' Save the report
nOption = gtResultOptions_e.gtResultSaveReport
' Use high resolution
nResolution = gttckResolutionOptions_e.gttckHighResolution
' Save the report to this folder
strReportName = "c:\test\report"
' Add the report to the Design Binder
bAddToBinder = True
' Do not save the report to eDrawings
bSaveToEdwg = False
' Allow the report to be overwritten, both in Design Binder and
' on disk, so that you can rerun the analysis
bOverWrite = True
' Set the thickness threshold
dThicknessLimit = 0.5
' Run the analysis
lStatus = utThicknessAnalysis.RunThinAnalysis2(dThicknessLimit, nResolution, nOption, strReportName, bAddToBinder, bSaveToEdwg, bOverWrite)
' Check the result
' Close the thickness analysis tool
lStatus = utThicknessAnalysis.Close()
' Release
utThicknessAnalysis = Nothing
utAddIn = Nothing
Dim Min As Double = CDbl(utThicknessAnalysis.GetMinTckOnAnalArea(lStatus))
' Close the thickness analysis tool
lStatus = utThicknessAnalysis.Close()
' Release
utThicknessAnalysis = Nothing
utAddIn = Nothing
' Done
Min_Thikness_Calculation = Min * 1000
iSwApp.CloseDoc(swmodel3.GetTitle)
Exit Function
End Function
But This code do not give me the increment that I want:
For example for this part I want the thickness (A) as an increment but the result of the minimum thickness by the previous code is : 0.0264368104020076 mm and in the picture as you see there is a thickness equal to 0.6147 mm.
Can anyone help to choose the right increment whether by thickness analysis implementation or an other method and thank you in advance.