SOLIDWORKS makri - snemanje, uporaba, prilagoditev
SOLIDWORKS makri - snemanje, uporaba, prilagoditev
Kako se v programu SOLIDWORKS posname makro, kako se ga uporabi in kako se ga prilagodi?
Re: SOLIDWORKS makri - snemanje, uporaba, prilagoditev
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.
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:
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:
Da pridobimo mesto in ime trenutnega dokumenta, se lahko uporabi API klic:
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)
Temu nizu nato ob shranjevanju pripnemo željeno novo končnico.
Spremenjena koda makra sedaj izgleda nekako takole:
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)
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.
- Odpremo shranjeno risbo (npr. risba1.SLDDRW)
- Zaženemo snemanje makra.
- Risbo shranimo v format DWG (Save as, risba1.DWG)
- Risbo shranimo v format PDF (Save as, risba1.PDF)
- Snemanje makra zaključimo in makro shranimo na poljubno mesto na disku.
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
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
Koda: Izberi vse
document.GetPathName
Koda: Izberi vse
documentPathNoExt = Left(document.GetPathName, Len(document.GetPathName) – 6)
Koda: Izberi vse
document.SaveAs3( documentPathNoExt + "DWG", 0, 0 )
document.SaveAs3( documentPathNoExt + "PDF", 0, 0 )
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