API/VBA: Steuerung einer Stücklistentabelle

Hallo

Gibt es eine Möglichkeit, einer Nomenklaturtabelle mitzuteilen, an welche Konfiguration sie angehängt ist?

Ich habe die Konfiguration bereits in einer Variablen."vNameConf"

Ich habe versucht: 


Dim swBomTable als SldWorks.BomTableAnnotation oder Dim swBomTable als SldWorks.IBomTable

(') Tabelle der Nomenklatur
            boolstatus = Part.Extension.SelectByID2("Nomenclature2", "DRAWINGVIEW", 0.195997909234212, 0.164382166839605, 0, False, 0, Nichts, 0)
            Set swBomTable = swSelMgr.GetSelectedObject6(1, 0)
            swBomTable.ReferencedConfiguration = vNameConf(i)

 

Herzliche Grüße

Hallo

Probieren Sie die SetConfigurations-Methode  aus

Beispiel1 Beispiel2

1 „Gefällt mir“

 Danke Jerome,

Nicht einfach mit ihrem Beispiel, das manchmal halbwegs übersetzt wird.

Ich habe versucht, dies zu codieren:

  
    Stückliste-Funktion 
    GetConfigurations (falsch, sichtbar)
    Sichtbar (0) = Wahr
    SetConfigurations (wahr, sichtbar, vNameConf(i))

 

aber ich verstehe nicht viel

In meiner Logik muss man das Array identifizieren und ihm dann die Konfiguration zuweisen

 

Dim swBomFeat As SldWorks.BomFeature
 

 swBomFeat ="Nomenklatur2"
boolstatus = swBomFeat. SetConfigurations (Wahr, Sichtbar, vNameConf(i))

Schade, dass es nicht so einfach ist.

Der Rest alles pünktlich 

Ersetzt "test" durch den Namen der zu verwendenden Konfiguration.

Option Explicit
Sub main()

    Call NomenclatureConfig("test")

End Sub
Sub NomenclatureConfig(ByVal ConfigName As String)
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swDraw As SldWorks.DrawingDoc
    Dim swView As SldWorks.View
    Dim swTableAnn As SldWorks.TableAnnotation
    Dim swBomFeat As SldWorks.BomFeature
    Dim vTables As Variant
    Dim vTable As Variant
    Dim ConfigNames As Variant
    Dim ConfigVis As Variant
    Dim i As Integer
    
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swDraw = swModel
    Set swView = swDraw.GetFirstView
    If swView.GetTableAnnotationCount > 0 Then
        vTables = swView.GetTableAnnotations
        For Each vTable In vTables
            Set swTableAnn = vTable
            If swTableAnn.Type = swTableAnnotationType_e.swTableAnnotation_BillOfMaterials Then
                Set swBomFeat = swTableAnn.BomFeature
                ConfigNames = swBomFeat.GetConfigurations(False, ConfigVis)
                For i = 0 To UBound(ConfigNames)
                    'Debug.Print "configuration indice: " & i & ", Nom: " & ConfigNames(i) & ", Visible: " & ConfigVis(i) '
                    If ConfigNames(i) = ConfigName Then
                        ConfigVis(i) = True
                    Else
                        ConfigVis(i) = False
                    End If
                Next
                swBomFeat.SetConfigurations False, ConfigVis, ConfigNames
            End If
        Next
    End If
    swDraw.ClearSelection2 True
End Sub

 

1 „Gefällt mir“

Hallo Jerome,

Vielen Dank für Ihre Zeit.

Ich habe diesen Code verwendet, aber er bekommt nichts auf dem Plan.

 Ich bin seit 7 Uhr morgens dabei, aber es gibt viele Variablen.

 Für einen Anfänger wie mich ohne die Anmerkungen "Ich habe Schwierigkeiten.

Bis bald

 

 

Was schreibt es im Direktfenster, wenn Sie die Zeile aktivieren:

Debug.Print "Konfigurationsindex....

Können Sie eine Testdatei anhängen? Vielen Dank

Jerome

Vielen Dank für diese neuen Infos. Ich habe die Nützlichkeit dieser Zeile und die Kosten des Ausführungsfensters nicht verstanden. Ich habe erst vor einem Monat angefangen

Hier ist das Ergebnis:

- Hinweiskonfiguration: 0, Name: Standard, Sichtbar: Falsch
- Hinweiskonfiguration: 1, Name: ODCA1001, Sichtbar: Wahr
- Index: 2, Name: ODCA1001SP, Sichtbar: Falsch
- Hinweiskonfiguration: 3, Name: ODCA1001VR, Sichtbar: Falsch
- Index: 4, Name: ODCA1001VRSP, Sichtbar: Falsch
- Index konfigurieren: 5, Name: ODCA1002, Sichtbar: Falsch
- Hinweiskonfiguration: 6, Name: ODCA2001, Sichtbar: Falsch
- Hinweiskonfiguration: 7, Name: ODCA2002, Sichtbar: Falsch

Die Tabelle wird nicht geändert, sie bleibt in ihrer ursprünglichen Konfiguration

Herzliche Grüße

Hoppla

Ich habe gerade gemerkt, dass es meine Bitte ist, die nicht klar ist.

Ich habe eine Nomenklaturtabelle in einem Plan mit einer bestimmten Konfiguration und möchte ihr sagen, dass sie eine andere (Konfiguration) verwenden soll.

Herzliche Grüße

Hallo

 Wenn ich wechsle 

Rufen Sie NomenclatureConfig("odca1001SP") auf.

Das Ergebnis ist das gleiche

- Hinweiskonfiguration: 0, Name: Standard, Sichtbar: Falsch
- Hinweiskonfiguration: 1, Name: ODCA1001, Sichtbar: Wahr
- Index: 2, Name: ODCA1001SP, Sichtbar: Falsch
- Hinweiskonfiguration: 3, Name: ODCA1001VR, Sichtbar: Falsch
- Index: 4, Name: ODCA1001VRSP, Sichtbar: Falsch
- Index konfigurieren: 5, Name: ODCA1002, Sichtbar: Falsch
- Hinweiskonfiguration: 6, Name: ODCA2001, Sichtbar: Falsch
- Hinweiskonfiguration: 7, Name: ODCA2002, Sichtbar: Falsch

 

Jerome

Ich finde dieses S seltsam, aber wenn ich es entferne, ändert es nichts (das unterstrichene)

swBomFeat.SetConfigurations False, ConfigVis, ConfigNames

Herzliche Grüße

Jerome

Die heiße Wäsche antwortet mir auf ein eigenes Makro

Die Konfigurationsänderungen an der Stücklistenfunktion:

    Set swBomFeat = swBomAnn.BomFeature

    swBomFeat.Configuration = "ODCA1001"

Ich habe versucht, diese Zeile in meinem Code ohne Ergebnis zu verwenden.

 

Dim swApp As Object
Dim swModel As SldWorks.ModelDoc2
Dim swSheet As SldWorks.Sheet
Dim swSelMgr As SldWorks.SelectionMgr
Dim swView As SldWorks.View
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Dim vNameConf As Variant

' V BOM
Dim swBomAnn As BomTableAnnotation
Dim swBomFeat As SldWorks.BomFeature

Sub main()
    
    ' bibliothec SW
    Set swApp = Application.SldWorks
    ' model actif de SW
    Set swModel = swApp.ActiveDoc
    ' selection de ce model
    Set swSelMgr = swModel.SelectionManager
    'mémorisé l'objet6(1,0)?
    Set swBomAnn = swSelMgr.GetSelectedObject6(1, 0)
    ' On affect la config
    vNameConf = "ODCA1001"
    
    'La configuration se change au niveau de la bom feature :

    Set swBomFeat = swBomAnn.BomFeature

    swBomFeat.Configuration = vNameConf
    
End Sub

 


tabelle1.swp

Versuchen Sie Folgendes:

Option Explicit
Sub main()

    Call NomenclatureConfig("ODCA1001SP")

End Sub
Sub NomenclatureConfig(ByVal ConfigName As String)
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swDraw As SldWorks.DrawingDoc
    Dim swView As SldWorks.View
    Dim swTableAnn As SldWorks.TableAnnotation
    Dim swBomFeat As SldWorks.BomFeature
    Dim vTables As Variant
    Dim vTable As Variant
    Dim ConfigNames As Variant
    Dim ConfigVis As Variant
    Dim i As Integer
    Debug.Print "Configuration à activée: " & ConfigName
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swDraw = swModel
    Set swView = swDraw.GetFirstView
    If swView.GetTableAnnotationCount > 0 Then
        vTables = swView.GetTableAnnotations
        For Each vTable In vTables
            Set swTableAnn = vTable
            If swTableAnn.Type = swTableAnnotationType_e.swTableAnnotation_BillOfMaterials Then
                Set swBomFeat = swTableAnn.BomFeature
                ConfigNames = swBomFeat.GetConfigurations(False, ConfigVis)
                For i = 0 To UBound(ConfigNames)
                    Debug.Print "configuration indice: " & i & ", Nom: " & ConfigNames(i) & ", Visible: " & ConfigVis(i) '
                    If LCase(ConfigNames(i)) = LCase(ConfigName) Then
                        ConfigVis(i) = True
                        Debug.Print "Configuration activé: " & ConfigNames(i)
                    Else
                        ConfigVis(i) = False
                    End If
                Next
                swBomFeat.SetConfigurations False, ConfigVis, ConfigNames
            End If
        Next
    End If
    swDraw.ClearSelection2 True
End Sub

 

1 „Gefällt mir“

Hallo Jérôme,

Vielen Dank

Ich bezweifle, dass ich Ihnen eines Tages helfen kann, angesichts Ihres Niveaus und Ihres Tätigkeitsbereichs, aber ich weiß nie, meine Stärke sind die linken Formen (Design, Oberfläche)

Nochmals vielen Dank,

Herzliche Grüße

 

1 „Gefällt mir“