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!