API om attributen op te slaan

Hallo
Beginnend met een assemblage, wil ik de attributen van de onderdelen en samenstellingen in een array opslaan, zodat ik er verschillende kwaliteitscontroleprocessen op kan uitvoeren.

Ik weet het maximale aantal kolommen in mijn nomenclatuur (nb van attribut ~12), maar ik weet niet het aantal rijen aan het begin. Ik kan stuklijsten hebben van meer dan 300 regels.

Wetende dat je in het begin de afmetingen van het board moet definiëren, wat zou voor jou de beste methode zijn (snelheid, stabiliteit, enz.)?

Ik dacht eraan om alle nomenclatuur te scannen om het aantal rijen te kennen en vervolgens de grootte van de tabel te definiëren (is het mogelijk?) ... Misschien zijn er betere methoden?

Bedankt.

A+

Hallo;

Als ik het goed begrijp, wil je al je stuklijsten van een assemblage in Excel verzamelen ... Een Save Under van de gedetailleerde stuklijst van uw hoofdassemblage zal het moeten doen.
En waarom moet je het aantal regels weten... het lijkt me niet nodig, als je meerdere stuklijsten hebt (ik zie niet in waarom) is het gemakkelijk om in Excel een hoeveelheid gegevens op "De volgende lege regel" te "plakken":

De VBA (excel) commando's om de coördinaten van de volgende lege regel te halen zijn: (Bijvoorbeeld):

'Retourne sur " derligne " le numéro de la prochaine ligne non vide (CTRL+ flèche bas)
derligne = Range("C1").End(xlDown).Row


derligne = Sheets("DATA").Range("E1048576").End(xlUp).Row
'Retourne sur " derligne " le numéro de DERNIERE ligne non vide


'Compte le nombre de lignes jusqu’à la dernière vide de la colonne
derligne = range("A" & rows.count).end(xlup).row


Vriendelijke groeten.

2 likes

Hallo

Bedankt dat je de tijd hebt genomen om me te antwoorden.

Nee, ik werk in een hoofdassemblage met subassemblages en onderdelen, met een enkele nomenclatuur van het type "tabbed list", of een macro die de assemblages kruist.

Ik wil dus de attributen opslaan in een 2-dimensionale tabel, zodat ik dan direct kan ingrijpen op de onderdelen in SW zonder via Excel te gaan.

A+

Hallo

Buiten Excel is het dus niet mogelijk om in VBA de grootte van een multidimensionale tabel dynamisch te wijzigen.

U moet dus vanaf het begin de grootte weten door het aantal rijen te scannen en vervolgens de gevonden waarde toe te passen op de array-variabele.

Anders moet je spelen met twee eendimensionale array-variabelen en de vulling ervan synchroniseren.

1 like

Hallo;

Als u het aantal kolommen en het aantal rijen wilt hebben,

nNumCol = swTable.ColumnCount
nNumRow = swTable.RowCount

    Dim swView As SldWorks.View
    Dim swTable As SldWorks.TableAnnotation
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swDraw As SldWorks.DrawingDoc

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Set swView = swDraw.GetFirstView

    Do While Not swView Is Nothing
        ' Show the name of the view
        '        Debug.Print "  " & swView.Name

        ' Get the first table annotation for this view
        Set swTable = swView.GetFirstTableAnnotation
        Do While Not swTable Is Nothing
            ProcessTable swApp, swModel, swTable
            ' Get next table annotation for this view
            Set swTable = swTable.GetNext
        Loop
        ' Get the next view
        Set swView = swView.GetNextView
    Loop

Set swAnn = swTable.GetAnnotation
    nNumCol = swTable.ColumnCount
    nNumRow = swTable.RowCount

Vriendelijke groeten.