Solidworks CSV-uitvoer

Hallo

Al geruime tijd heb ik een probleem met de .cvs-export van mijn nomenclaturen. Laat het me uitleggen: het lijkt erop dat Solidworks in feite komma's als scheidingstekens gebruikt, en ik zou liever puntkomma's hebben. Dus ik moet opslaan in .xls, dan met Excel, om op te slaan in .csv (Excel gebruikt de juiste scheidingstekens), wat een vervelende stap toevoegt aan elke export. 

Heeft u een oplossing? Ik ben niet op de hoogte van macro's, denk je dat ik op deze manier door moet gaan? 
Ik heb na een zoektocht geen oplossing  gevonden.

Bedankt!

Hallo

Afgezien van het behandelen met het Windows-kladblok en de vervangfunctie.

Kijk hier toch eens naar https://www.lynkoa.com/forum/3d/export-nomenclature-solidworks-par-vb

Jerome

2 likes

Ik weet niet of ze verwant zijn, maar aarzel niet om de test uit te voeren door het lijstscheidingsteken in de regionale opties te wijzigen...

Soms is het sneller =)

 

Hallo aan jullie beiden,

Helaas werkt de oplossing van   Macros227 niet:(

Wat macro's betreft, ik beheers ze helemaal niet. Ik denk dat het helemaal niet ingewikkeld is om een tabel met puntkomma's als scheidingsteken te exporteren, of loop ik het risico er tijd aan te besteden?

Hallo

Het zou je niet veel meer dan 5 minuten moeten kosten, je neemt de macro die in de vraag staat van de link die door Todesco is gegeven en daarin vervang je de regel:

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

Door het:

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

En zo moet je een CSV-bestand krijgen met een; als scheidingsteken. Dit wordt opgeslagen in dezelfde map als uw abonnement.

Vriendelijke groeten

3 likes

Heel erg bedankt, het werkt inderdaad!
Zou er echter een manier zijn om alleen de "actieve" nomenclatuur te exporteren? Ik heb soms meerdere stuklijsten per pagina en ik zou graag willen kunnen kiezen welke daarvan wordt geëxporteerd. Met deze, macro, is het de laatst gevonden nomenclatuur die is vastgelegd als ik het goed begrijp.

Bij voorbaat dank

Hallo

Met de macro in kwestie kunt u alle stuklijsten in het plan selecteren en naar het csv-bestand schrijven (onder voorbehoud van de wijziging die door .PL in de oorspronkelijke discussie is uitgelegd om te voorkomen dat elke stuklijstexport de vorige stuklijstexport overschrijft).

Als u alleen een stuklijst wilt extraheren die u in de structuur hebt geselecteerd, moet dit mogelijk zijn door de rijen te vervangen:

    Stel swFeat in = swModel.FirstFeature

    Doen terwijl niet swFeat is niets
        Als "BomFeat" = swFeat.GetTypeName Dan
            Stel swBomFeat in = swFeat.GetSpecificFeature2
            ProcesBomFunctie swBomFeat
        Einde als
        Stel swFeat in = swFeat.GetNextFeature
    Strik   
    vTableArr = swBomFeat.GetTableAnnotations

Door gebruik te maken van de functie "GetSelectedObject6" die u hier kunt vinden. Vergeet niet om na de selectiefunctie de functie "ProcessBomFeature" te gebruiken.

Vriendelijke groeten

Dank u voor het antwoord. 
Ik weet de syntaxis niet, maar dit werkt niet:

  set swFeat = GetSelectedObject6
  Stel swBomFeat in = swFeat.GetSpecificFeature2
  ProcesBomFunctie swBomFeat

Hallo

Je vervangt de regels:

   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

Bij:

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

Vriendelijke groeten

Hartelijk dank!

Het werkt wel. Mijn fout was om te denken dat de nomenclatuur degene was die in de centrale interface was geselecteerd, en niet in de boom aan de linkerkant van het scherm. 
Is er een functie om de "actieve" nomenclatuur, in de zin van het woord, te exporteren die in de centrale interface is geselecteerd?

Ja, het is mogelijk, maar door ook de BOM-exportfunctie aan te passen omdat het plotseling geen "BomFeature"-element meer is dat wordt verzonden:

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

Vriendelijke groeten

Het is echt uitstekend en precies wat ik wilde, bedankt voor je kostbare hulp!