Pour gagner du temps, il m’arrive régulièrement de faire des Pack&Go, des copies de mise en plans, des copies de feuille, des copie de table de nomenclature…
Il y a cependant un point bloquant pour moi: la table de nomenclature et le bullage associé, qui perd tout « automatisme ».
Est il possible de visualiser et/ou modifier vers quel fichier pointe une table de nomenclature?
Option Explicit
Sub Main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swFeat As SldWorks.Feature
Dim swBomFeat As SldWorks.BomFeature
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Set swFeat = swModel.FirstFeature
Do While Not swFeat Is Nothing
If (swFeat.GetTypeName = "BomFeat") Then
Debug.Print "******************************"
Debug.Print "Feature Name = " & swFeat.Name
Set swBomFeat = swFeat.GetSpecificFeature2
If (swFeat.Name = "Bill of Materials1") Or (swFeat.Name = "Nomenclature1") Then
ProcessBomFeature swApp, swModel, swBomFeat
End If
End If
Set swFeat = swFeat.GetNextFeature
Loop
Debug.Print "End"
End Sub
Sub ProcessBomFeature(swApp As SldWorks.SldWorks, swModel As SldWorks.ModelDoc2, swBomFeat As SldWorks.BomFeature)
GetPathNames swApp, swBomFeat
End Sub
Sub GetPathNames(swApp As SldWorks.SldWorks, ByVal swBomFeature As SldWorks.BomFeature)
Dim vConfigurations As Variant
Dim strConfiguration As String
Dim vVisibility As Variant
Dim lIdx As Long
Dim lNumConfigurations As Long
Dim lNumRow As Long
Dim lNumColumn As Long
Dim lRow As Long
Dim swBOMTableAnnotation As SldWorks.BomTableAnnotation
Dim swTableAnnotation As SldWorks.TableAnnotation
Dim swDocument As SldWorks.ModelDoc2
Dim swAssembly As SldWorks.AssemblyDoc
Dim strDocumentName As String
Dim lStartRow As Long
Dim bGetVisible As Boolean
Dim vModelPathNames As Variant
Dim strItemNumber As String
Dim strPartNumber As String
Dim vModelPathName As Variant
Dim strModelPathName As String
strDocumentName = swBomFeature.GetReferencedModelName
Set swDocument = swApp.GetOpenDocumentByName(strDocumentName)
Debug.Print "Referenced model = " & strDocumentName
Set swAssembly = swDocument
' For now assume we have only 1 table annotation.
Set swBOMTableAnnotation = swBomFeature.GetTableAnnotations(0)
Set swTableAnnotation = swBOMTableAnnotation
lNumRow = swTableAnnotation.RowCount
lNumColumn = swTableAnnotation.ColumnCount
lStartRow = 1
If (Not (swTableAnnotation.TitleVisible = False)) Then
lStartRow = 2
End If
bGetVisible = False
Debug.Print "# configurations = " & swBomFeature.GetConfigurationCount(bGetVisible)
vConfigurations = swBomFeature.GetConfigurations(bGetVisible, vVisibility)
If (Not IsEmpty(vConfigurations)) Then
lNumConfigurations = UBound(vConfigurations) - LBound(vConfigurations) + 1
For lIdx = 0 To (lNumConfigurations - 1)
strConfiguration = vConfigurations(lIdx)
Debug.Print ""
Debug.Print "Configuration: " & strConfiguration
For lRow = lStartRow To (lNumRow - 1)
Debug.Print " row = " & (lRow - lStartRow + 1)
vModelPathNames = swTableAnnotation.GetModelPathNames(lRow, strItemNumber, strPartNumber)
Debug.Print " item number = " & strItemNumber
Debug.Print " part number = " & strPartNumber
If (Not IsEmpty(vModelPathNames)) Then
Debug.Print " # models contributing to row = " & swTableAnnotation.GetModelPathNamesCount(lRow)
For Each vModelPathName In vModelPathNames
strModelPathName = vModelPathName
Debug.Print " " & strModelPathName
Next vModelPathName
Else
Debug.Print " # models contributing to row = 0"
Debug.Assert (False)
End If
Next lRow
Next lIdx
End If
End Sub
Le plus simple sans macro c’est de la supprimer et réinsérer.
Car pas de visibilité sur la vue vers laquelle pointe la nomenclature et pas de trace (lien) à ma connaissance.
J’utilise rarement le Pack and Go.
Pour ma part je fais un copier coller des pièces et mises en plans, ensuite je renomme en passant bien par l’utilitaire SOLIDWORKS qui vous propose renommer déplacer etc…
Ensuite avant d’ouvrir les MEP je recale les références et le tour est joué, les nomenclature suivent à tous les coups.