Export der Solidworks-Stückliste nach VB

Hallo ihr alle!

Ich habe ein kleines Makro in der Solidworks-API, um die Stückliste einer geöffneten Zeichnung nach Excel in zu exportieren. CSV-Datei

Was ich möchte, ist, dass diese Excel-Datei einen festen Namen hat und jedes Mal, wenn ich mein Makro ausführe, die exportierte Stücklistentabelle aus Solidworks direkt unter der anderen geschrieben wird. Ich weiß nicht genug über den Code, den ich erhalten habe, was er derzeit tut, ist ein einzelnes Array zu erstellen. Ich kann die Anweisung "schreibe nur ab dem Moment, in dem es leer ist" nicht einbauen, nur um meine Nomenklaturen zu haben, die aufeinander folgen, während ich das Makro auf meinen verschiedenen Ebenen ausführe.

Wenn jemand eine Codezeile hat, die mir helfen würde, bin ich dafür!!

Schönen Tag.

 


20158271458773_export_bom.swp
1 „Gefällt mir“

Hallo

Wenn wir beispielsweise in einer CSV-Datei das Semikolon als Trennzeichen verwenden und die Buchstaben A, B und die Variable C in die erste Zeile und die Buchstaben D, F und die Variable F in die erste Zeile schreiben möchten, sollten wir schreiben:

f = Freie Datei
Öffnen Sie "C:\TEST.csv" zum Anfügen als #f
Drucken Sie #f, "A; B; " & C
Drucken Sie #f, "E; F; " & G

Schließen #f
 

Mit einem konkreten Beispiel (aus der Implementierung von Anhängen in unserem ERP):

f = Freie Datei

Öffnen Sie "\\dimecox3\PLANBE$\Import_plans.csv" zum Anhängen als #f Öffnen einer CSV- oder TXT-Datei
    Schreiben in die Eigenschaftendatei
                Print #f, "ITM; 2; " & CODE & ";; 001; " & docNamePDF & "; " & "PDF"
                Print #f, "ITM; 2; " & CODE & ";; 002; " & docNameDWG & "; " & "DWG"
Schließen #f

2 „Gefällt mir“

Au! Ich habe nicht das Gefühl, dass es die Lösung für mein Problem ist, ich bin ein wenig verloren... Haben Sie den Code als Anhang geöffnet, um das Ergebnis zu sehen (Sie benötigen eine Zeichnung mit einer Stückliste  , damit es funktioniert).

Makro funktioniert sehr gut! aber ich möchte nur, dass bei jedem RUN des Makros die in SOLIDWORKS aktive Nomenklatur in derselben CSV-Datei beginnt, aber darunter erscheint, was möglicherweise geschrieben wurde. Auf diese Weise würde ich, indem ich meine Pläne durchgehe und das Makro ausführe, am Ende ein Excel erhalten, das alle meine Teile globalisiert.

Ganz klar, ich bin schlecht, ich fange gerade erst an! Ich bin Cartoonist und entdecke die Leistungsfähigkeit dieser APIs:)

 

1 „Gefällt mir“

Meine Antwort beantwortet dieses Problem gut, aber ich habe die SWP-Datei nicht geöffnet, weil ich SolidWorks nicht zur Hand habe.

Können Sie das Makro bitte in einer Textdatei oder direkt in einer Antwort posten?

1 „Gefällt mir“

Sub ProcessBomFeature(swBomFeat As SldWorks.BomFeature)

    Dim vTableArr als Variante
    Dim vTable als Variante
    Dim swTable als SldWorks.TableAnnotation
    Dim swAnn As SldWorks.Annotation
    Dim nNumCol so lange
    Dim nNumRow As Long
    Dim sRowStr As String
    Sonne i So lang
    Sonne j So lang
    
    'Abrufen von Anmerkungstabellen
    vTableArr = swBomFeat.GetTableAnnotations
    
    'Durchlaufen von Anmerkungstabellen
    Für jeden vTable in vTableArr
    
        "Abrufen eines Tisches
        Legen Sie swTable = vTable fest

 "Wiederherstellung von Inhalten
        Set swAnn = swTable.GetAnnotation
    
        "Anzahl der Spalten und Zeilen
        nNumCol = swTable.ColumnCount
        nNumRow = swTable.RowCount
    
        "Name und Typ der Tabelle
        Debug.Print "    Table : " & swAnn.GetName & " Type : " & swTable.Type
    
        "Verlauf der Strecken
        Für i = 0 bis nNumRow - 1
    
            sRowStr = "      "
    
            "Route der Kolonne
            Für j = 0 bis nNumCol - 1
            
                sRowStr = sRowStr & swTable.Text(i, j) & " | "
                
            Weiter j
            
        ' Anzeigen von Inhalten
        Debug.Print Links(sRowStr, Len(sRowStr) - 1)
    
        Weiter i
        


        'Ordner verlassen
        Dim xlsPath als Zeichenfolge
        xlsPath = Mitte(swModel.GetPathName, 1, InStrRev(swModel.GetPathName, "\"))
        
        "Name des XLS
        Dim xlsName als Zeichenfolge
        Wenn InStrRev(swModel.GetTitle, ".") > 0, dann
            xlsName = Mid(swModel.GetTitle, 1, InStrRev(swModel.GetTitle, ".") - 1) & ".csv"
        Oder
            xlsName = swModel.GetTitle & ".csv"
        Ende, wenn
        
        Debug.Print "Ausgabe: " & xlsPath & xlsName
        
        Excel exportieren
        swTable.SaveAsText xlsPath & xlsName, "; "
        
    Nächste vTable
    
    MsgBox "Export abgeschlossen"

Ende Sub

 

Also funktioniert dieses Stück nikel, wenn ich nur eine Nomenklatur zum Exportieren hätte. Das; da Trenner ihre Arbeit erledigen und alles.

Das habe ich mir also gedacht: Die verwendete SaveAsText-Funktion erlaubt es Ihnen nicht, Zeilen hinzuzufügen, wenn die Datei bereits existiert, wird sie überschrieben: 


Wenn eine Datei mit dem angegebenen Namen im angegebenen Pfad...   Existiert    

Dann ist es soweit...  Überschrieben

Quelle: http://goo.gl/odfZb9

Es ist notwendig, die in meiner ersten Botschaft vorgeschlagene Lösung durchzugehen.

 
1 „Gefällt mir“

Ein großes Dankeschön an euch .PL!!

1 „Gefällt mir“

Mit Vergnügen. Wenn Sie Ihr Makro mit dem Code veröffentlichen können, der für Personen geändert wurde, die das gleiche Problem haben, und in einer Textdatei, umso besser!

1 „Gefällt mir“