Zapewne wielu użytkowników SOLIDWORKS oraz PDM spotkało się z problemem braku wyświetlania na kartach danych takich właściwości jak masa, materiał itp. Sytuacja ta może zdarzyć się dla plików otrzymanych z zewnątrz lub plików zrobionych w oparciu o inne szablony.
Jeżeli przykładowe mapowanie zmiennej ‘Materiał’ w PDM wygląda następująco:

To znaczy, że zmienna ta będzie „połączona” z właściwością o nazwie ‘Material’ dla części, złożeń i rysunków SOLIDWORKS.
Aby teraz na karcie danych w PDM pojawiła się nazwa wybranego w SOLIDWORKS materiału w samym pliku właściwość ta musi mieć przypisane wyrażenie, które pobierze materiał:

Właściwości wraz z wyrażeniami powinny być utworzone w szablonach plików, z których korzystają wszyscy użytkownicy. Dla plików powstałych w ten sposób materiał wybrany w SOLIDWORKS zawsze będzie wyświetlany na karcie danych w PDM.
Co jeśli pliki nie mają utworzonych właściwości? Materiał, pomimo iż został wybrany w SOLIDWORKS nie będzie wyświetlony na karcie danych w PDM. Należało by takie właściwości utworzyć. Ale jak to zrobić hurtowo dla dużej ilości zaimportowanych plików? Rozwiązaniem może być uruchomienie zadania w PDM!
Dzięki standardowemu dodatkowi SWTaskAddIn mamy możliwość konwersji oraz drukowania plików SOLIDWORKS.

System PDM uruchamia jedną instancję SOLIDWORKS, a następnie dla każdego zaznaczonego pliku wykonuje makro, które jest zapisane w ustawieniach zadania.
Makro zapisane w zadaniu można zmodyfikować. Wykorzystałem tą możliwość do zrobienia zadania, które pozwoli utworzyć brakujące właściwości w plikach.
Jak przygotować takie zadanie? Na początek wchodzimy do administracji przechowalnią plików oraz tworzymy nowe zadanie (klikamy prawym przyciskiem myszy na Zadania -> Nowe zadanie…)

W pierwszym oknie kreatora wybieramy dodatek SOLIDWORKS Task Add-in

W drugim oknie wybieramy metodę wykonania -> ‘Wykonaj na komputerze, na którym zadanie jest zainicjowane’ oraz wybieramy komputery obsługujące zadanie. Na liście powinien być widoczny nasz komputer.

Jeżeli komputer nie jest widoczny należy zezwolić na wykonanie dodatku SOLIDWORKS Task Add-in w tzw. konfiguracji hosta zadania:

W kolejnym oknie podajemy nazwę zadania, jaka będzie się wyświetlała w menu kontekstowym przy zaznaczeniu plików.

W oknie Skrypt musimy wprowadzić skrypt makra, które ma się wykonać w SOLIDWORKS

Poniżej załączam skrypt makra, które tworzy właściwości dostosowanie ‘Weight’, ‘Material’, ‘Grubość’ (opcjonalnie jeżeli części jest arkuszem blachy) oraz nadaje im wyrażenia, które pobiorą dane fizyczne modelu. Jeżeli nasze właściwości nazywają się inaczej, makro należy zmodyfikować.
' Dodawanie właściwości dostosowanych SOLIDWORKS - ZADANIE PDM
'-----------------------------------------------
Dim swApp As Object
Dim swModel As SldWorks.ModelDoc2
Dim CusPropMgr As SldWorks.CustomPropertyManager
Dim AddStatus As Long
Dim swDocSpecification As SldWorks.DocumentSpecification
Dim FileSystemObj As Object
Dim errors As Long
Dim warnings As Long
#If VBA7 Then
Private Declare PtrSafe Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long
Private Declare PtrSafe Function PathIsRelative Lib "shlwapi.dll" Alias "PathIsRelativeA" (ByVal pszPath As String) As Long
#Else
'Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long
'Private Declare Function PathIsRelative Lib "shlwapi.dll" Alias "PathIsRelativeA" (ByVal pszPath As String) As Long
#End If
Sub main()
On Error GoTo Koniec:
Set FileSystemObj = CreateObject("Scripting.FileSystemObject")
docFileName = "<Filepath>"
' Pobieranie interfejsu SOLIDWORKS
Set swApp = Application.SldWorks
swApp.Visible = True 'SPR 682792, 538578, 651998
Set swDocSpecification = swApp.GetOpenDocSpec(docFileName)
' Sprawdzanie typu dokumentu (tylko części i złożenia)
If LCase(Right(docFileName, 7)) = ".sldprt" Or LCase(Right(docFileName, 4)) = ".prt" Then
swDocSpecification.DocumentType = swDocPART
ElseIf LCase(Right(docFileName, 7)) = ".sldasm" Or LCase(Right(docFileName, 4)) = ".asm" Then
swDocSpecification.DocumentType = swDocASSEMBLY
Else
GoTo Koniec:
End If
swDocSpecification.ReadOnly = False
swDocSpecification.Silent = False
swDocSpecification.ConfigurationName = ""
swDocSpecification.DisplayState = ""
swDocSpecification.IgnoreHiddenComponents = True 'SPR 682792, 538578, 651998
Set swModel = swApp.OpenDoc7(swDocSpecification)
errors = swDocSpecification.Error
' Dodawanie wlaściwości (property- nazwa właściwości, propValue - wartość)
Set CusPropMgr = swModel.Extension.CustomPropertyManager("")
' Masa
property = "Weight"
propValue = """SW-Mass@" + swModel.GetTitle + """"
AddStatus = CusPropMgr.Add2(property, swCustomInfoText, propValue)
AddStatus = CusPropMgr.Set(property, propValue)
' Materiał
If (swDocSpecification.DocumentType = swDocPART) Then
property = "Material"
propValue = """SW-Material@" + swModel.GetTitle + """"
AddStatus = CusPropMgr.Add2(property, swCustomInfoText, propValue)
AddStatus = CusPropMgr.Set(property, propValue)
End If
' Grubość
property = "Grubość"
propValue = """Grubość@" + swModel.GetTitle + """"
propGrubDef = propValue
AddStatus = CusPropMgr.Add2(property, swCustomInfoText, propValue)
AddStatus = CusPropMgr.Set(property, propValue)
' Przebudowa modelu
swModel.Rebuild (8)
' Sprawdzenie czy grubość się przeliczyła (arkusz blachy), jeżeli nie to usunięcie
Dim propVal As String
Dim propEval As String
CusPropMgr.Get2 "Grubość", propVal, propEval
If (propEval = propGrubDef) Then
CusPropMgr.Delete2 ("Grubość")
End If
' Zapis
swModel.Save2 (True)
' Zamknięcie dokumentu
swApp.CloseDoc (swModel.GetTitle)
Exit Sub
Koniec:
End Sub
Na koniec ustawiamy uprawnienia do wykonania zadania.

Po utworzeniu zadania możemy przejść do widoku lokalnego i folderu z plikami. Należy pamiętać, aby pliki były wyewidencjonowane, dlatego, iż zostaną zapisane w SOLIDWORKS.
Po zaznaczeniu plików klikamy prawym przyciskiem myszy i wybieramy nazwę zadania.

Za chwilę w tle uruchomi się SOLIDWORKS i utworzy brakujące właściwości dostosowane. Po takiej operacji dane masy, materiału oraz grubości pojawią się w zakładce „@” na karcie danych pliku.





