SOLIDWORKS PDM sistemoje makro komandos yra naudojamos sukuriant darbų automatizavimo užduotį (angl. task). Kad turimos SOLIDWORKS makro komandos veiktų ir PDM sistemoje, į jas reikia įtraukti keletą papildomų kodo eilučių
Tipiniu atveju užtenka sukurti tuščią PDM užduotį ir ją papildyti savo SOLIDWORKS makro komandomis su keletu papildomų kodo eilučių. Atidarykite PDM Administravimo įrankį (Programs > SOLIDWORKS PDM > Administration), prisijunkite prie saugyklos administratoriaus teisėmis ir, pažymėję Tasks skiltį, paspauskite dešinį pelės klavišą, o tada pasirinkite New Task.
Atsidariusiame lange, viršutiniame kairiajame kampe, galite įrašyti norimą užduoties pavadinimą, o ties Add-in pasirinkite SOLIDWORKS Task Add-in:
Atidarykite Script skiltį ir ten pamatysite SOLIDWORKS skripto įvedimo tekstiniu formatu langą, o jame yra pateikiamos vos kelios eilutės kodo, kurios, iš esmės, nieko nedaro, yra kaip makro komandų šablonas, bet tuo pačiu čia yra vieta, kur galite „copy-paste“ principu įdėti nukopijuotą savo SOLIDWORKS makro komandų tekstą iš makro (*.swp) failo:
Paprastai „copy-paste“ principu įdėtos SOLIDWORKS makro komandos PDM sistemoje neveiks ir tipiniu atveju reikės žemiau pateiktą šabloninį skriptą papildyti jūsų SOLIDWORKS makro komandomis:
Option Explicit
Dim swApp As Object
Dim swModel As SldWorks.ModelDoc2
Dim filePath As String
Dim docType As Long
Dim swDocSpecification As SldWorks.DocumentSpecification
Dim errors As Long
'Cia taip pat turite prideti kitus kintamuosius
'is jusu SOLIDWORKS macro kodo
Sub main()
Set swApp = Application.SldWorks
'Papildomas kodas skirtas PDM sistemai automatiniam
'failo atidarymui SolidWorks aplinkoje
'---------------------------------------
swApp.Visible = True 'SPR 682792, 538578, 651998
filePath = "<Filepath>"
' Determine type of SolidWorks file based on file extension
If LCase(Right(filePath, 7)) = ".sldprt" Or LCase(Right(filePath, 4)) = ".prt" Then
docType = swDocPART
ElseIf LCase(Right(filePath, 7)) = ".sldasm" Or LCase(Right(filePath, 4)) = ".asm"
Then
docType = swDocASSEMBLY
ElseIf LCase(Right(filePath, 7)) = ".slddrw" Or LCase(Right(filePath, 4)) = ".drw"
Then
docType = swDocDRAWING
End If
Set swDocSpecification = swApp.GetOpenDocSpec(filePath)
swDocSpecification.DocumentType = docType
swDocSpecification.ReadOnly = True
swDocSpecification.Silent = True
swDocSpecification.ConfigurationName = ""
swDocSpecification.DisplayState = ""
swDocSpecification.IgnoreHiddenComponents = True 'SPR 682792, 538578, 651998
Set swModel = swApp.OpenDoc7(swDocSpecification)
errors = swDocSpecification.Error
swApp.ActivateDoc2 filePath, True, errors
'---------------------------------------
Set swModel = swApp.ActiveDoc
'Cia turi buti idedamas likes reikalingas jusu
'SOLIDWORKS macro kodas is "Sub main()" proceduros
End Sub
'Cia turetu buti iterptos kitos proceduros/funkcijos
'naudojamos jusu SOLIDWORKS macro faile
Sutvarkę kodą, galite keisti likusius PDM užduoties nustatymus: Execution Method, Menu Command, Permissions, Success Notification ir Error Notification. Plačiau apie PDM užduočių kūrimą ir nustatymus galima pasižiūrėti čia.