API - MEP - Recuperer le nom de la fonction/esquisse coté

Bonjour a tous,

J'aimerais recuperer le nom d'une esquisse ou d'une ligne d'esquisse que j'ai coté avec les API pour y ajouter automatiquement un commentaire sur la cote. 

En d'autre terme, J'aimerais mettre dans ma cote un nom predefini selon l'esquisse et je selectionne la cote avec son nom (sous la forme de "DX@EsquisseX@Vue-de-mise-en-plan-X") pour y ajouter mon annotation. Malheureusement cette cote n'a pas vraiment de correspondance avec la ligne d'esquisse que je dois annoter, elle est creer de facon un peu aleatoire ou en tout cas sans l'assurance que ce soit toujours la meme. 

Y'a-t-il une fonction dans l'API pour recuperer le nom de la fonction/esquisse sur laquelle s'accroche la dimension ?

 

Merci pour votre aide,

Cordialement,

1 « J'aime »

Peut tu mettre un visuel de ce que tu a au depart et de ce que tu veut a la fin ? 

Alors voila l'idée :

J'ai sur chaque côte des piquages avec une reference (voir 0° et 350°), ces cotes ont un nom dans solidworks mais je ne parviens pas a recuperer le nom de la fonction.

Ces noms de fonctions ont une correspondance dans un fichier excel. Je souhaiterais ajouter le nom des piquage sur chacunes des cotes ainsi que les diametres correspondants. 

J'espere que c'est plus clair. 

Merci


cuve_cotation_angulaire.jpg
1 « J'aime »

Le nom des cotes dans une mise en plan n'est pas figé sauf si vous copier toujours la meme mse en plan avec la meme piece

 

Sinon est que les info peuvent etre liées a la valeur de la cote ?

 

EDIT: Je pense que ce lien peut apporter un debut de solution car il boucle sur toute les cote http://help.solidworks.com/2016/english/api/sldworksapi/Get_Dimension_Values_in_Drawing_Example_VB.htm

Reste a appliquer une condition pour que la cote ayant une valeur XX ai une note pour XX et YY une note YY

Je pense que la modification effectue sur le lien precedement peu correspondre a ton besoin 

'This example shows how to get the values of the dimensions in a drawing.

'---------------------------------------------------------------------------
' Preconditions:
' 1. Open a drawing document.
' 2. Open the Immediate window.
'
' Postconditions: Inspect the Immediate window.
'---------------------------------------------------------------------------

Option Explicit

Sub main()

    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.ModelDoc2
    Dim swDraw                      As SldWorks.DrawingDoc
    Dim swView                      As SldWorks.View
    Dim swDispDim                   As SldWorks.DisplayDimension
    Dim swDim                       As SldWorks.Dimension
    Dim swAnn                       As SldWorks.Annotation
    
    Dim swModelDocExt As SldWorks.ModelDocExtension
    Dim boolstatus As Boolean
 

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swDraw = swModel

    'Debug.Print "File = " & swModel.GetPathName

    Set swView = swDraw.GetFirstView

    Do While Not swView Is Nothing
        'Debug.Print "  View = " & swView.Name

        Set swDispDim = swView.GetFirstDisplayDimension5

        Do While Not swDispDim Is Nothing
            Set swAnn = swDispDim.GetAnnotation
            Set swDim = swDispDim.GetDimension

            Debug.Print "      DimFullName                  = " & swDim.FullName
            Debug.Print "      Value                        = " & swDim.GetSystemValue2("")
            Debug.Print "      CalloutBelow                 = " & swDispDim.GetText(swDimensionTextCalloutBelow)

                Set swModelDocExt = swModel.Extension
                boolstatus = swModel.Extension.SelectByID2(swDim.FullName, "DIMENSION", 0, 0, 0, False, 0, Nothing, 0)
                boolstatus = swModelDocExt.EditDimensionProperties(0, 0, 0, "", "", True, 9, 2, True, 1, 1, "", "", True, "", "Texte à remplacer", "", True, swThisConfiguration, "")
                swModel.ClearSelection2 True
            
            Set swDispDim = swDispDim.GetNext3

        Loop

        Set swView = swView.GetNextView

    Loop

End Sub

 

à toi de mettre des condition pour mettre le texte correspondant

Pas de retour ?