SOLIDWORKS makri - snemanje, uporaba, prilagoditev

Odgovori
caddy
Prispevkov: 414
Pridružen: 03 Mar 2014, 12:55

SOLIDWORKS makri - snemanje, uporaba, prilagoditev

Odgovor Napisal/-a caddy » 06 Okt 2015, 13:54

Kako se v programu SOLIDWORKS posname makro, kako se ga uporabi in kako se ga prilagodi?
ssotlar
Prispevkov: 56
Pridružen: 16 Maj 2014, 11:59

Re: SOLIDWORKS makri - snemanje, uporaba, prilagoditev

Odgovor Napisal/-a ssotlar » 06 Okt 2015, 14:37

Orodja za snemanje in uporabo makrojev se v SOLIDWORKSu nahajajo v posebni orodni vrstici (View -> Toolbars -> Macro).

S snemanjem makrojev se v ozadju ustvari večina API klicev, kateri bodo potrebni za našo funckionalnost in si s tem olajšamo delo v fazi prilagoditve makra.

Preden snemanje makra zaženemo, moramo biti prepričani, da so vsi predpogoji, ki so za našo funkcijo makra pomembni, izpolnjeni. Če npr. želimo posneti makro, ki bo med izbranima ploskvama različnih kosov ustvaril "Distance Mate", moramo pred snemanjem makroja izbrati dve ploskvi.

Primer: makro, ki trenutno odprto risbo z istim imenom in na enako mesto shrani še v formata DWG in PDF. Najprej vključimo orodno vrstico za makre (View -> Toolbars -> Macro).

Naš predpogoj je odprta, že shranjena risba.
  1. Odpremo shranjeno risbo (npr. risba1.SLDDRW)
  2. Zaženemo snemanje makra.
  3. Risbo shranimo v format DWG (Save as, risba1.DWG)
  4. Risbo shranimo v format PDF (Save as, risba1.PDF)
  5. Snemanje makra zaključimo in makro shranimo na poljubno mesto na disku.
Ker smo med snemanjem makra že izvedli shranjevanje risbe v PDF in DWG format, se ti dve datoteki že nahajata v isti mapi. Sedaj odprimo drugo risbo ("risba2.SLDDRW"), ki naj se nahaja v isti mapi, kot risba s katero smo makro posneli. Nad to risbo bomo sedaj izvedli posneti makro in preverili če deluje.
Posneti makro poženemo s klikom na ikono za zagon makra in prebrskamo do mesta kamor smo makro shranili v koraku 5. Makro se bo sicer izvedel, a zaenkrat še ne bo dal željenega rezultata. Če pogledamo "risba1.DWG" oz. "risba1.PDF" bomo videli, da je makro prepisal omenjeni datoteki z vsebino iz datoteke "risba2.SLDDRW". Kaj se torej dogaja?

Če makro, ki smo ga posneli, odpremo za urejanje, bomo videli nekaj podobnega:

Koda: Izberi vse

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
Part.ViewZoomTo2 0, 0, 0, 0.1, 0.1, 0.1
Part.ViewZoomTo2 0, 0, 0, 0.1, 0.1, 0.1
Part.ViewZoomtofit2
longstatus = Part.SaveAs3("E:\risba1.DWG", 0, 0)
longstatus = Part.SaveAs3("E:\risba1.PDF", 0, 0)
End Sub
V spremenljivko "Part" se shrani trenutno aktivni dokument (swApp.ActiveDoc). Nato se nad tem dokumentom izvedejo klici "ViewZoomToFit", ki načeloma za našo funkcionalnost (shranjevanje v drug format) načeloma niso pomembni in jih lahko odstranimo. Kasneje se v zadnjih treh vrsticah izvedejo API klici, ki dokument "Part" shranijo na mesto "E:\risba1.xxx". Torej, iz katerekoli risbe bi ta makro izvedli, vedno bi nam risbo sicer shranil v oba formata, a prepisal že obstoječi "risba1.DWG" in "risba1.PDF".

Ustvarjeni makro moramo prilagoditi, da namesto statičnega imena uporabi ime trenutno odprtega dokumenta. Dodali bomo tudi preverjanje, ali je odprti dokument dejansko risba – če ni, nas na to opozori in makra ne izvede.

Da pridobimo tip trenutnega dokumenta, se lahko uporabi API klic:

Koda: Izberi vse

document.GetType
Da pridobimo mesto in ime trenutnega dokumenta, se lahko uporabi API klic:

Koda: Izberi vse

document.GetPathName
Ta API klic nam vrne polno pot do dokumenta - npr. "E:\mapa1\mapa2\ime_datoteke.SLDxxx". Za shranjevanje v drug format moramo odstraniti končnico – od celotne poti odstranimo zadnjih 6 znakov – tako nam ostane "E:\mapa1\mapa2\ime_datoteke.". Tu si pomagamo s funkcijama "Left" (iz leve strani danega niza obdrži dano število znakov) in "Len" (v danem nizu vrne število znakov)

Koda: Izberi vse

documentPathNoExt = Left(document.GetPathName, Len(document.GetPathName) – 6)
Temu nizu nato ob shranjevanju pripnemo željeno novo končnico.

Koda: Izberi vse

document.SaveAs3( documentPathNoExt + "DWG", 0, 0 )
document.SaveAs3( documentPathNoExt + "PDF", 0, 0 )
Spremenjena koda makra sedaj izgleda nekako takole:

Koda: Izberi vse

Dim swApp As SldWorks.SldWorks

Dim document As SldWorks.ModelDoc2
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = _
Application.SldWorks

Set document = swApp.ActiveDoc
documentFileType = document.GetType
If documentFileType = swDocDRAWING Then

documentPathNoExt = Left(document.GetPathName, Len(document.GetPathName) - 6)
longstatus = document.SaveAs3(documentPathNoExt + "DWG", 0, 0)
longstatus = document.SaveAs3(documentPathNoExt + "PDF", 0, 0)

Else
MsgBox ("Datoteka ni risba!")
End If
End Sub
Makro shranimo (File -> Save) in sedaj ga lahko izvedemo na poljubni risbi. Makrom lahko za lažji dostop tudi ustvarimo ikono na poljubni orodni vrstici (Tools -> Customize -> Commands -> Category: Macros) ali pa bližnjico na tipkovnici (Tools -> Customize -> Keyboard -> Category: Macros)
Odgovori