Ändern der Uhrenverknüpfung einer Stückliste

Hallo ihr alle

Um Zeit zu sparen, mache ich regelmäßig Pack&Go, Zeichnungskopien, Bogenkopien, Stücklistentabellenkopien...

Allerdings gibt es für mich einen Blockadepunkt: die Nomenklaturtabelle und die dazugehörige Blase, die jeden " Automatismus " verliert.

Ist es möglich, anzuzeigen und/oder zu ändern, auf welche Datei eine Stücklistentabelle zeigt?

Vielen Dank

Sie sollten in der Lage sein, es mit diesem Makro zu erhalten:
https://help.solidworks.com/2020/english/api/sldworksapi/get_model_path_names_in_bom_table_example_vb.htm
Mit der modifizierten Reihenfolge für eine Nomenklatur, die Nomenklatur1 genannt wird:

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

2 „Gefällt mir“

Danke, aber im Moment ist die Welt des Makros ein anderer Planet für mich!
Ich bin überrascht, dass die Linkbearbeitung nicht einfacher ist

Der einfachste Weg ohne Makro besteht darin, es zu löschen und wieder einzufügen.
Denn es gibt keine Sichtbarkeit auf der Ansicht, auf die die Nomenklatur hinweist, und keine Spur (Link) meines Wissens.

1 „Gefällt mir“

Leider ist das meine Methode.
Schade, dass es Zeitverschwendung ist

Ich benutze das Pack and Go selten.
Für meinen Teil kopiere ich Teile und Zeichnungen und füge sie ein, dann benenne ich sie mit dem SOLIDWORKS Dienstprogramm um, das Ihnen die Möglichkeit bietet, Teile und Zeichnungen umzubenennen, zu verschieben usw.
Bevor ich dann das MEP öffne, kalibriere ich die Referenzen neu und das war's, die Nomenklaturen folgen jedes Mal.