Hi Guys,
I'm trying to add an equation to a part.
If I run my code when ModelDoc is swapp.activeDoc then everything work fine, my equations are added without any problem.
If I try to add my equation from an assembly through the selectionManager it's not working.
I get my modelDoc in an assembly through this way : swcomp2 = swSelMgr.GetSelectedObjectsComponent2(i)
then convert to modelDoc2 by modelDoc = swcomp2.getmodeldoc2
i get the swEquationMgr.GetCount to work so the equationMgr is correctly connected.
but when i Try to add the equation I get -1 which mean equation was not added...
is it possible that you cannot add an equation from else where that the activeDoc??
thanks for your time
Yannick
@
Function link_equation(modeldoc As SldWorks.ModelDoc2, dimensionName As String, propertyName As String) As Boolean
Debug.Print(modeldoc.GetPathName)
Dim swEquationMgr As SldWorks.EquationMgr = modeldoc.GetEquationMgr
Dim EquationStr As String = """" & dimensionName & """ = """ & propertyName & """"
If swEquationMgr Is Nothing Then
MsgBox("impossible d'atteindre le EquationMgr de la pièce " & modeldoc.GetPathName)
Return False
End If
Dim equationResult As Integer = 0
Dim I As Integer
Debug.Print("Equation Count : " & swEquationMgr.GetCount) '<------------------ work fine here I get the Equation count
For i = 0 To swEquationMgr.GetCount - 1
If UCase(swEquationMgr.Equation(I)) = UCase(EquationStr) Then
Return True 'equation already exist
End If
Next
Debug.Print(EquationStr)
If swEquationMgr.GetCount = 0 Then
If swEquationMgr.Add2(0, EquationStr, False) = -1 Then '<-------------------return 0 (ok) when modelDoc = activedoc and return -1 in assy
Debug.Print("equation not added")
Return False
End If
Else
If swEquationMgr.Add2(-1, EquationStr, False) = -1 Then
Debug.Print("equation not added")
Return False
End If
End If
Return True
End Function
SolidworksApi macros