Add Equation to selected part

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