Ik had een stukje code gemaakt om aangepaste eigenschappen in Excel op te halen en bij te werken zonder de bestanden te openen met de volgende code:
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModelDoc As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swPackAndGo As SldWorks.PackAndGo
Dim openFile As String
Dim myFileName As String
Dim pgFileNames As Variant
Dim pgFileStatus As Variant
Dim pgSetFileNames() As String
Dim pgGetFileNames As Variant
Dim pgDocumentStatus As Variant
Dim status As Boolean
Dim warnings As Long
Dim errors As Long
Dim i As Long
Dim j As Long
Dim namesCount As Long
Dim myPath As String
Dim statuses As Variant
Public Chemin, OldFile As String
Public Ligne1, DernligneASM
Sub ListerOldFichiers()
Dim Fichier As String
Range("A2:B1000") = "" 'Vidage des cellules
Chemin = CheminUser
OldFile = Dir(Chemin & "*.sldasm")
'Appel de la progressbar
UserForm1.Show vbModeless
UserForm1.ProgressBar1.Value = 0
Dim ProgressBar, barre
UserForm1.ProgressBar1.Value = 10
'Ecrire les noms de fichiers dans colone A
Ligne1 = 2 'Départ pour rentrer les noms de fichiers
Do While OldFile <> ""
Cells(Ligne1, 1) = OldFile
OldFile = Dir()
Ligne1 = Ligne1 + 1
Loop
DernligneASM = Range("a65536").End(xlUp).Row
Dim Dernligne2
Dernligne2 = Range("a65536").End(xlUp).Row + 1
OldFile = Dir(Chemin & "*.sldprt")
Do While OldFile <> ""
Cells(Dernligne2, 1) = OldFile
OldFile = Dir()
Dernligne2 = Dernligne2 + 1
Loop
UserForm1.ProgressBar1.Value = 50
Dim Dernligne3
Dernligne3 = Range("a65536").End(xlUp).Row
Ligne1 = 2
For Ligne1 = Ligne1 To Dernligne3
Dim DSO As DSOFile.OleDocumentProperties
Dim File1, OldDes, k, PropName, Compteur
File1 = Cells(Ligne1, 1).Value
Set DSO = New DSOFile.OleDocumentProperties
DSO.Open sfilename:=Chemin & File1
Compteur = DSO.CustomProperties.Count
If Compteur <> 0 Then
For k = 1 To Compteur - 1
PropName = DSO.CustomProperties.Item(k).Name
If PropName = "Designation-1" Then
OldDes = DSO.CustomProperties.Item("Designation-1").Value
Cells(Ligne1, 2) = OldDes
End If
Next k
End If
DSO.Save
DSO.Close
Next
'Fini de remplir et Decharger l'userform
barre = 100
UserForm1.ProgressBar1.Value = barre
Unload UserForm1
ProgressBar = 0 'Réinitialisation
MsgBox "Remplissez la colonne des Nouveaux noms a attribuer puis cliquez sur ''Renommer''"
End Sub
Mijn zorg is dat we sinds SW2015 deze stappen niet meer kunnen uitvoeren omdat de DSO-methode niet meer werkt.
Mijn vraag is: Hoe kan ik doen wat ik deed met DSO met SW2016 (of SW2015)?
Met macro weet ik niet dat een ander je zeker zal begeleiden, maar als je de mycad-tool hebt, kun je het ook doen met smartbom die je een nomenclatuur exporteert met de gekozen eigenschappen en dit zonder te weten geprogrammeerd in vba of andere.
Om per macro aangepaste eigenschappen in Excel op te halen en bij te werken zonder de bestanden te openen, moet u "spelen" met de "Document Manager API" (zie hier), waarvoor u een licentienummer moet verkrijgen (zie hier). Dan vind je hier een voorbeeld van code (in C#) om aan te passen.
De sbadenis-oplossing lijkt mij veel eenvoudiger en sneller te implementeren en maakt gebruik van tools die in de loop van de tijd zullen worden onderhouden.
Het punt is dat ik niet alleen gegevens herstel om ze in Excel te zetten... Ik hernoem al mijn bestanden, terwijl ik hun eigenschappen bijwerk en ik geef de links terug aan de leden van het Europees Parlement.
Voor zover ik weet, doen de MyCad-tools dat niet en SW Explorer geeft de link niet terug naar de Europarlementariërs, dus het is niet super praktisch...
Het voordeel van deze methode was dat de leesbaarheid in Excel perfect is voor dit soort bewerkingen. Zie in plaats daarvan de afbeelding in de bijlage.
Met projectmanager kunt u in dit geval in bulk hernoemen volgens bepaalde regels en ook bepaalde eigenschappen wijzigen volgens bepaalde regels. En natuurlijk krijg je de Europarlementariërs.
En als u niet kunt doen wat u wilt, de combinatie van projectmanager om massaal te kopiëren, te hernoemen en vervolgens batcheigenschappen om de eigenschappen te wijzigen.
Het testen kost je maar wat tijd en indien nodig leggen we uit hoe je het moet doen.
Ik wil eigenlijk niet hernoemen volgens de regels.
Laten we ons voorstellen dat mijn klant traag is met het verstrekken van plannummers volgens zijn gegevensbeheersysteem. Dus ik ga mijn studie beginnen (of zelfs afmaken) met bestandsnamen die namen zullen hebben als: Axe, Inf Housing, Upper Rankcase, enz...
Zodra het me vertelt dat mijn bestanden (PRT, ASM en DRW) bijvoorbeeld moeten worden genoemd: 2543-40001; 2543-40002; 2543-40003; 2543-40004; enz... Ik moet in staat zijn om de bestanden te hernoemen met behoud van de links en met respect voor de nummering.
Dat is wat mijn EXCEL-macro me toestond om te doen, die de bestandsnamen opsomde door de eigenschappen voor elk onderdeel te plaatsen en dan hoefde ik alleen maar te zeggen welk nummer voor dit of dat onderdeel kwam ... Hetzelfde geldt voor de eigendommen... en dat alles ZONDER SW te openen!
De enige keer dat ik SW nodig had, was om de links van de Europarlementariër te herstellen.
Met een projectmanager denk ik niet dat ik zo flexibel kan zijn!