API/VBA: controle van een stuklijstlijst tabel

Hallo

Is er een manier om een nomenclatuurtabel te vertellen aan welke configuratie deze is gekoppeld?

Ik heb de configuratie al in een variabele."vNameConf"

Ik heb het geprobeerd: 


Dim swBomTable als SldWorks.BomTableAnnotation of dim swBomTable als SldWorks.IBomTable

" Tabel van de nomenclatuur
            boolstatus = Part.Extension.SelectByID2("Nomenclatuur2", "DRAWINGVIEW", 0.195997909234212, 0.164382166839605, 0, Onwaar, 0, Niets, 0)
            Stel swBomTable in = swSelMgr.GetSelectedObject6(1, 0)
            swBomTable.ReferencedConfiguration = vNameConf(i)

 

Vriendelijke groeten

Hallo

Probeer de methode SetConfigurations 

Voorbeeld1 Voorbeeld2

1 like

Dank je wel Jerome,

Niet makkelijk met hun voorbeeld, dat zich soms half vertaalt.

Ik heb geprobeerd dit te coderen:

  
    BomFunctie 
    GetConfigurations (onwaar, zichtbaar)
    Zichtbaar (0) = Echte
    SetConfigurations (Waar, Zichtbaar, vNameConf(i))

 

maar ik begrijp er niet veel van

In mijn logica moet je de array identificeren en er vervolgens de configuratie aan toewijzen

 

Dim swBomFeat als SldWorks.BomFeature
 

 swBomFeat ="Nomenclatuur2"
boolstatus = swBomFeat. SetConfigurations (True, Visible, vNameConf(i))

Jammer dat het niet zo eenvoudig is.

De rest van alles op tijd 

Vervangt "test" door de naam van de te gebruiken configuratie

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 like

Hallo Hiëronymus,

Dank u voor uw tijd.

Ik heb deze code gebruikt, maar er staat niets op het plan.

 Ik ben er al sinds 7 uur 's ochtends mee bezig, maar er zijn veel variabelen.

 Voor een beginneling als ik zonder de annotaties 'heb ik het moeilijk.

Tot gauw

 

 

Wat schrijft het in het onmiddellijke venster als u de regel activeert:

Debug.Print "configuratie-index....

Kunt u een testbestand bijvoegen. Bedankt

Jerome

Bedankt voor deze nieuwe info. Ik begreep het nut van deze regel en de kosten van het uitvoeringsvenster niet. Ik ben pas een maand geleden begonnen

Hier is het resultaat:

- Hint configuratie: 0, Naam: Standaard, Zichtbaar: Onwaar
- Hint configuratie: 1, Naam: ODCA1001, Zichtbaar: Waar
- Inhoudsopgave: 2, Naam: ODCA1001SP, Zichtbaar: Onwaar
- Hint configuratie: 3, Naam: ODCA1001VR, Zichtbaar: Onwaar
- Inhoudsopgave: 4, Naam: ODCA1001VRSP, Zichtbaar: Onwaar
- Index configureren: 5, Naam: ODCA1002, Zichtbaar: Onwaar
- Hint configuratie: 6, Naam: ODCA2001, Zichtbaar: Onwaar
- Hint configuratie: 7, Naam: ODCA2002, Zichtbaar: Onwaar

De tabel wordt niet gewijzigd, maar blijft in de oorspronkelijke configuratie

Vriendelijke groeten

Oeps

Ik realiseer me net dat het mijn verzoek is dat niet duidelijk is.

Ik heb een nomenclatuurtabel op een plan met een bepaalde configuratie, en ik wil het vertellen om een andere (configuratie) te gebruiken.

Vriendelijke groeten

Hallo

 Als ik verander 

Oproep NomenclatuurConfig("odca1001SP")

Het resultaat is hetzelfde

- Hint configuratie: 0, Naam: Standaard, Zichtbaar: Onwaar
- Hint configuratie: 1, Naam: ODCA1001, Zichtbaar: Waar
- Inhoudsopgave: 2, Naam: ODCA1001SP, Zichtbaar: Onwaar
- Hint configuratie: 3, Naam: ODCA1001VR, Zichtbaar: Onwaar
- Inhoudsopgave: 4, Naam: ODCA1001VRSP, Zichtbaar: Onwaar
- Index configureren: 5, Naam: ODCA1002, Zichtbaar: Onwaar
- Hint configuratie: 6, Naam: ODCA2001, Zichtbaar: Onwaar
- Hint configuratie: 7, Naam: ODCA2002, Zichtbaar: Onwaar

 

Jerome

Ik vind deze S raar, maar als ik hem verwijder, verandert er niets aan (de onderstreepte)

swBomFeat.SetConfigurations False, ConfigVis, ConfigNames

Vriendelijke groeten

Jerome

De hete was antwoordt me op een macro van mijn eigen

De configuratie verandert bij de BOM-functie:

    Stel swBomFeat in = swBomAnn.BomFeature

    swBomFeat.Configuration = "ODCA1001"

Ik heb geprobeerd deze regel in mijn code te gebruiken zonder resultaat.

 

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

 


tabel1.swp

Probeer het volgende:

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 like

Hallo Jérôme,

Bedankt

Ik betwijfel of ik je op een dag zal helpen, gezien je niveau en je werkterrein, maar weet dat je nooit iets weet, mijn sterke punt zijn de linkervormen (ontwerp, oppervlak)

Nogmaals bedankt,

Vriendelijke groeten

 

1 like