Strona głównaPDMDodawanie właściwości dostosowanych za pomocą zadań PDM

Dodawanie właściwości dostosowanych za pomocą zadań PDM

Dodawanie właściwości

Dodawanie właściwości dostosowanych za pomocą zadań PDM

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:

zmień wartość material pdm

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ściwoci dostosowane solidworks

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.

SWTaskAddIn

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…)

Nowe zadanie pdm

W pierwszym oknie kreatora wybieramy dodatek SOLIDWORKS Task Add-in

utwórz właściwości

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.

tworzenie właściwości PDM

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

konfiguracja hosta zadan

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

polecenie menu

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

skrypt solidworks pdm

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.

Ustawienia pdm użytkownicy

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.

utwórz właściwości

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.

Podziel się:

Starszy Specjalista techniczny ds. SOLIDWORKS / Trener. Wyróżniony nagrodą SOLIDWORKS Award Elite w 2014 roku. Uwielbia testować nowe rozwiązania sprzętowe, a nowe technologie nie są mu obce. Smakosz whisky i dobrego jedzenia (sam dobrze gotuje).