Solidworks CSV-Export

Hallo

Seit geraumer Zeit habe ich ein Problem mit dem .cvs-Export meiner Nomenklaturen. Lassen Sie mich das erklären: Es scheint, dass Solidworks im Grunde genommen Kommas als Trennzeichen verwendet, und ich hätte lieber Semikolons. Also muss ich in .xls speichern, dann mit Excel, um in .csv zu speichern (Excel verwendet die richtigen Trennzeichen), was jedem Export einen mühsamen Schritt hinzufügt. 

Haben Sie eine Lösung? Ich bin nicht auf dem neuesten Stand mit Makros, denken Sie, dass ich diesen Weg gehen sollte? 
Ich habe nach einer Suche keine Lösung  gefunden.

Vielen Dank!

Hallo

Abgesehen von der Behandlung mit dem Windows-Notizblock und der Ersetzungsfunktion.

Schauen Sie sich das trotzdem https://www.lynkoa.com/forum/3d/export-nomenclature-solidworks-par-vb

Jerome

2 „Gefällt mir“

Ich weiß nicht, ob sie verwandt sind, aber zögern Sie nicht, den Test durchzuführen, indem Sie das Listentrennzeichen in den regionalen Optionen ändern ...

Manchmal geht es schneller =)

 

Hallo an euch beide,

Leider funktioniert die   Lösung von Macros227 nicht:(

Was Makros angeht, so beherrsche ich sie überhaupt nicht. Ich denke, es ist überhaupt nicht kompliziert, eine Tabelle mit Semikolons als Trennzeichen zu exportieren, oder riskiere ich, Zeit damit zu verbringen?

Hallo

Es sollte nicht viel länger als 5 Minuten dauern, du nimmst das Makro, das in der Frage des von Todesco angegebenen Links steht, und ersetzst darin die Zeile:

sRowStr = sRowStr & swTable.Text(i, j) & " | "

Von ihm:

sRowStr = sRowStr & swTable.Text(i, j) & "; "

Und so müssen Sie eine CSV-Datei mit einem; als Trennzeichen. Dieser wird im selben Ordner wie Ihr Plan gespeichert.

Herzliche Grüße

3 „Gefällt mir“

Vielen Dank, es funktioniert tatsächlich!
Gibt es jedoch eine Möglichkeit, nur die "aktive" Nomenklatur zu exportieren? Ich habe manchmal mehrere Stücklisten pro Seite und möchte auswählen können, welche davon exportiert werden soll. Mit diesem, Makro, ist es die letzte gefundene Nomenklatur, die aufgezeichnet wird, wenn ich es richtig verstehe.

Vielen Dank im Voraus 

Hallo

Mit dem betreffenden Makro können Sie alle Stücklisten im Plan auswählen und in die CSV-Datei schreiben (vorbehaltlich der von .PL in der ursprünglichen Diskussion erläuterten Änderung , um zu vermeiden, dass jeder Stücklistenexport den vorherigen Stücklistenexport überschreibt).

Wenn Sie nur eine Stückliste extrahieren möchten, die Sie im Baum ausgewählt haben, sollte dies durch Ersetzen der Zeilen möglich sein:

    Set swFeat = swModel.FirstFeature

    Tun Sie es nicht, obwohl es nicht ist, ist nichts
        Wenn "BomFeat" = swFeat.GetTypeName, dann
            Set swBomFeat = swFeat.GetSpecificFeature2
            ProcessBomFeature swBomFeat
        Ende, wenn
        Set swFeat = swFeat.GetNextFeature
    Schleife   
    vTableArr = swBomFeat.GetTableAnnotations

Mit der Funktion "GetSelectedObject6", die Sie hier finden. Vergessen Sie nicht, die Funktion "ProcessBomFeature" nach der Auswahlfunktion zu verwenden.

Herzliche Grüße

Vielen Dank für die Antwort. 
Ich kenne die Syntax nicht, aber das funktioniert nicht:

  set swFeat = GetSelectedObject6
  Set swBomFeat = swFeat.GetSpecificFeature2
  ProcessBomFeature swBomFeat

Hallo

Sie ersetzen die Zeilen:

   Set swFeat = swModel.FirstFeature
    Do While Not swFeat Is Nothing
        If "BomFeat" = swFeat.GetTypeName Then
            Set swBomFeat = swFeat.GetSpecificFeature2
            ProcessBomFeature swBomFeat
        End If
        Set swFeat = swFeat.GetNextFeature
    Loop
    
    vTableArr = swBomFeat.GetTableAnnotations

Bis:

    Set SelMgr = swModel.SelectionManager
    Set swBomFeat = SelMgr.GetSelectedObject6(1, 0)
    
    ProcessBomFeature swBomFeat

Herzliche Grüße

Vielen Dank!

Es funktioniert. Mein Fehler bestand darin, zu denken, dass die Nomenklatur diejenige ist, die in der zentralen Benutzeroberfläche ausgewählt ist, und nicht im Baum auf der linken Seite des Bildschirms. 
Gibt es eine Funktion zum Exportieren der "aktiven" Nomenklatur, im Sinne des Wortes, die in der zentralen Schnittstelle ausgewählt wurde?

Ja, das ist möglich, aber indem man auch die Stücklistenexportfunktion ändert, denn plötzlich wird kein "BomFeature"-Element mehr übertragen:

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
    
Sub main()

    Dim swFeat As SldWorks.Feature
    Dim swBomFeat As SldWorks.BomFeature
    
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc

    Set selmgr = swModel.SelectionManager
    Set vTable = selmgr.GetSelectedObject6(1, -1)
    ProcessBomSelect vTable

    MsgBox "Export de la BOM terminé."
End Sub

Sub ProcessBomSelect(vTable As Variant)
    Dim swTable As SldWorks.TableAnnotation
    Dim swAnn As SldWorks.Annotation
    Dim nNumCol As Long
    Dim nNumRow As Long
    Dim sRowStr As String
    Dim I As Long
    Dim J As Long

    Set swTable = vTable
    Set swAnn = swTable.GetAnnotation

    nNumCol = swTable.ColumnCount
    nNumRow = swTable.RowCount

    Dim xlsPath As String
    xlsPath = Mid(swModel.GetPathName, 1, InStrRev(swModel.GetPathName, "\"))

    Dim xlsName As String
    If InStrRev(swModel.GetTitle, ".") > 0 Then
        xlsName = Mid(swModel.GetTitle, 1, InStrRev(swModel.GetTitle, ".") - 1) & ".csv"
    Else
        xlsName = swModel.GetTitle & ".csv"
    End If

    For I = 0 To nNumRow - 1
        sRowStr = ""
        For J = 0 To nNumCol - 1
            sRowStr = sRowStr & swTable.Text(I, J) & ";"
        Next J
    Next I

    swTable.SaveAsText xlsPath & xlsName, ";"
End Sub

Herzliche Grüße

Es ist wirklich ausgezeichnet und genau das, was ich wollte, danke für Ihre wertvolle Hilfe!