Comment récupérer la valeur N° de pièce affichée ... dans une nomenclature

Bonjour à tous,

Dans un assemblage, je cherche à récupérer la valeur "N° de pièce affichée lorsqu'utilisé dans une nomenclature:" du composant que j'ai sélectionné. Je récupère déjà le nom de la config du composant sélectionné avec le code ci-dessous mais je sèche un peu pour le N° de pièce affiché dans la nomenclature. Est-ce que quelqu'un aurait la solution?

Dim swApp As SldWorks.SldWorks
Dim swSelMgr As SldWorks.selectionMgr
Dim swModel As SldWorks.ModelDoc
Dim ConfigMgr As ConfigurationManager
Dim Component As SldWorks.Component2

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set ConfigMgr = swModel.ConfigurationManager
    
    'Select component
    Debug.Print "Selection Type  = " & swSelMgr.GetSelectedObjectType2(1)
    Set Component = swSelMgr.GetSelectedObjectsComponent4(1, -1)

    ' Show Config1 and make it the active configuration
    Debug.Print "ConfigName SelectedComponent = " & Component.ReferencedConfiguration
    Debug.Print "ConfigName SelectedComponent = " & ConfigMgr.ActiveConfiguration.UseAlternateNameInBOM
    

End Sub

Si c'est le numéro de pièce créer via les bulles dans une nomenclature comme repérage de piece

je pense ( je suis sur ) que cela n'est pas possible

si ce numéro est créer via la propriété personnaliser de la pièce donc sa ref de pièce 

la c'est possible

Bonjour,

Dans l'aide de l'API, rechercher : Get Components in Each BOM Table Row Example (VBA)

Normalement ça répond au besoin, après faut adapter.

1 « J'aime »

Merci pour vos réponses.

J'ai trouvé la solution avec GetConfigurationParams.

Exemple:

Dim ActiveConfig                As String
Dim bRet                        As Boolean
Dim ConfigMgr                   As ConfigurationManager
Dim Component                   As SldWorks.Component2
Dim ParamConfigValue            As Variant
Dim swApp                       As SldWorks.SldWorks
Dim swSelMgr                    As SldWorks.selectionMgr
Dim swModel                     As SldWorks.ModelDoc

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set ConfigMgr = swModel.ConfigurationManager
    
' Récupération ID et nom de la configuration active
    'IDconfig = swModel.ConfigurationManager.ActiveConfiguration.GetID
    ActiveConfig = swModel.ConfigurationManager.ActiveConfiguration.Name
    bRet = ConfigMgr.GetConfigurationParams(ActiveConfig, "$NUMERO DE PIECE", ParamConfigValue)
    'Debug.Print "ID Config active à l'ouverture : " & IDconfig
    Debug.Print "Nom Config active à l'ouverture : " & ActiveConfig
    Debug.Print "N° utilisé dans les nomenclatures : " & ParamConfigValue(1)      'ParamConfigValue N°1 correspond à N° pièce utilisé in BOM

End Sub

Merci pour vos réponses.

J'ai trouvé la solution avec GetConfigurationParams.

Exemple:

Dim ActiveConfig                As String
Dim bRet                        As Boolean
Dim ConfigMgr                   As ConfigurationManager
Dim Component                   As SldWorks.Component2
Dim ParamConfigValue            As Variant
Dim swApp                       As SldWorks.SldWorks
Dim swSelMgr                    As SldWorks.selectionMgr
Dim swModel                     As SldWorks.ModelDoc

Sub main()

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set ConfigMgr = swModel.ConfigurationManager
    
' Récupération ID et nom de la configuration active
    'IDconfig = swModel.ConfigurationManager.ActiveConfiguration.GetID
    ActiveConfig = swModel.ConfigurationManager.ActiveConfiguration.Name
    bRet = ConfigMgr.GetConfigurationParams(ActiveConfig, "$NUMERO DE PIECE", ParamConfigValue)
    'Debug.Print "ID Config active à l'ouverture : " & IDconfig
    Debug.Print "Nom Config active à l'ouverture : " & ActiveConfig
    Debug.Print "N° utilisé dans les nomenclatures : " & ParamConfigValue(1)      'ParamConfigValue N°1 correspond à N° pièce utilisé in BOM

End Sub