CATIA V5 Makro omogućava izvršavanje niza programiranih naredbi kako bi se automatizovao odgovarajući zadatak, te se brže i efikasnije došlo do potrebnog rješenja. Nakon startovanja makroa korisnik definiše ulazne podatke, potom se automatski izvršava niz potrebnih naredbi i u tom procesu korisnik najčešće ne učestvuje interaktivno.
Makroi u CATIA V5 se najčešće koriste za automatsko izvođenje uzastopnih ponavljajućih operacija, pa su tako od pomoći jer povećavaju produktivnost konstruktora, oslobađaju ga od zamornog ponavljajućeg izvođenja određenih naredbi, pa time i znatno smanjuju pojavu grešaka nastalih zbog ljudskog faktora.
Komunikacija između makroa i CATIA V5 sistema obavlja se preko aplikacionog programskog interfejsa (API-ja) CATIA V5 sistema. CATIA V5 API predstavlja strukturu javnih klasa koje nam stoje na raspolaganju prilikom pisanja makroa u nekom od objektno orjentisanih programskih jezika.
Najbrži način za razradu makroa je da koristite Visual Basic for Applications (VBA). Prednosti i dobre karakteristike VBA su:
ZADATAK:
Makroi u CATIA V5 se najčešće koriste za automatsko izvođenje uzastopnih ponavljajućih operacija, pa su tako od pomoći jer povećavaju produktivnost konstruktora, oslobađaju ga od zamornog ponavljajućeg izvođenja određenih naredbi, pa time i znatno smanjuju pojavu grešaka nastalih zbog ljudskog faktora.
Komunikacija između makroa i CATIA V5 sistema obavlja se preko aplikacionog programskog interfejsa (API-ja) CATIA V5 sistema. CATIA V5 API predstavlja strukturu javnih klasa koje nam stoje na raspolaganju prilikom pisanja makroa u nekom od objektno orjentisanih programskih jezika.
Najbrži način za razradu makroa je da koristite Visual Basic for Applications (VBA). Prednosti i dobre karakteristike VBA su:
- Podrazumjevano se instalira uz CATIA V5, SolidWorks, Inventor, Office i dr.
- Brže izvršavanje makroa u odnosu na isti makro koji bi se koristio kao eksterna aplikacija
- Odličan Object Browser
- Dobri Debug alati
Treba napomenuti i da je VBA veoma sličan Visual Basic-u 6. Na Mašinskom Fakultetu u Banjoj Luci držao sam vježbe iz predmeta Programiranje na drugoj godini studija. Tada se koristio VB 6 na vježbama. Dobra stvar u vezi toga je što nakon savladanog gradiva student bi se mogao upustiti u učenje API automatizacije u CAD-u primjenom VBA. Loša stvar je što nisam čuo da je iko od studenata sa MF BL išta radio oko API automatizacije u CAD-u. Rijetki su oni koji bi savladali neke napredne funkcionalnosti, ali ja sam nepopravljivi optimista, pa stoga ovo i pišem, iako sam prilično uvjeren da gotovo nikoga sa MF BL neću animirati da samostalno u CATIA uradi išta više od crtanja pravougaonika u skici i ekstrudiranja.
Startovanje VBA unutar CATIA V5 sistema |
VBA projekti za CATIA V5 imaju ekstenziju *.catvba. Prije pisanja novog makroa u VBA, ili kreiranja VBA modula opcijom Start Recording, potrebno je da kreirate novi ili otvorite postojeći *.catvba projekat, prema slici ispod.
Rad sa *.catvba projektima u CATIA V5 |
Od velike pomoći za pisanje makroa u CATIA V5 je CAA V5 Visual Basic help. Help se nalazi u instalacionom direktorijumu CATIA V5 sistema, u folderu \win_b64\code\bin , a ime help fajla je V5Automation.chm. Slika ispod prikazuje prvu stranu help-a, na kojoj se nalazi interaktivni CATIA V5 API Object Model. Isti help može poslužiti i ukoliko programirate makroe u nekom drugom programskom jeziku, jer CATIA V5 API Object model ima istu strukturu bez obzira koje razvojno okruženje i programski jezik koristite.
CATIA V5 API help |
ZADATAK:
Trebamo napraviti VBA makro koji će sve otvorene tehničke crteže snimiti u *.pdf format u zadati folder.
Slika ispod prikazuje dio CATIA V5 API strukture, koja se odnosi na interne CATIA dokumente. Kolekcija Documents sadrži sve CATIA dokumente otvorene u trenutnoj sesiji: CATPart-ove, CATDrawing-e, CATProduct-e i dr. Deklarišemo i setujemo objekat kolekcije Documents:
Sub CATMain()
Dim oDocuments As Documents
Set oDocuments = CATIA.Documents
End Sub
U CATIA V5 VBA objekat CATIA aplikacije se podrazumjevano zove CATIA. Nije ga potrebno deklarisati niti setovati, što nije slučaj ukoliko kreirate makro u Visual Basic 6, ili u Visual Studio koristeći VB.NET, C# ili C++.
Kako provjeriti da li se otvoreni CATIA V5 dokumenti nalaze u kolekciji oDocuments?
Postavićemo Break Point na kraj makro podprograma, dodaćemo objekat kolekcije u Watches prozor i startovati makro - slika ispod.
Izvršavanje makroa se zaustavlja na Break Point i možemo provjeriti šta se nalazi u kolekciji oDocuments. Otvorio sam 4 tehnička crteža, startovao makro, a stanje kolekcije oDocuments je prikazano na slici ispod.
Otvorena su 4 crteža, a svojstvo Count kolekcije oDocuments ima vrijednost 8. U Watch prozoru se mogu pregledati i svojstva otvorenih dokumenata i kako se vidi na slici iznad neki imaju ekstenziju *.CATDrawing, a neki *.CATPart. O čemu se tu radi?
Ako je CATIA V5 crtež generativan (kreiran na osnovu 3D modela) onda se prilikom otvaranja crteža podrazumjevano otvori i 3D model. 3D modeli budu učitani sa eksterne memorije u CATIA interni model (RAM memoriju) iako nisu prikazani. Isto možete provjeriti ako statujete File/Desk... iz glavnog menija. Ovo malo otežava rješenje našeg zadatka. Snimanje CATIA V5 dokumenta u *.pdf izvodi se jednostavno, pozivanjem ExportData() metode, ali taj metod moramo pozivati samo u slučaju ako dokument ima *.CATDrawing ekstenziju.
Opisaću algoritam mog rješenja:
1. Korisnik upisuje putanju foldera u koji ću snimiti *.pdf dokumente
2. Koristim ciklus u kom u objekat oDocument ''ubacujem'' redom jedan po jedan CATIA dokument iz kolekcije oDocuments
2.1. Određujem ekstenziju dokumenta
2.2. Snimam dokument u *.pdf ukoliko je njegova ekstenzija *.CATDrawing.
Treba napomenuti da sve kolekcije CATIA V5 API-ja imaju svojstvo Count, koje odgovara broju objekata koji se nalaze u kolekciji. Stoga u mom algoritmu ću koristiti ciklus sa brojačem (For next), a u nekim slučajevima naravno bolje mogu poslužiti Do Loop ili For Each ciklusi.
Slijedi rješenje sa komentarima:
Deklaracija varijabli i objekata
Dim i As Integer
Dim n As Integer
Dim exportfolder As String
Dim ime As String
Dim exportime As String
Dim oDocuments As Documents
Dim oDocument As Document
i - brojač ciklusa
n - pozicija ekstenzije u imenu fajla CATIA dokumenta
exportfolder - putanja do foldera u koji će se crteži snimiti u pdf formatu
ime - ime CATIA dokumenta bez ekstenzije
exportime - ime pdf dokumenta
Korisnik može zadati putanju do foldera u koji će snimiti crteže u pdf pomoću InputBox() funkcije:
exportfolder = InputBox("Unesi putanju do foldera u koji eksportujes crteze u PDF", "Path",_ "C:\Test")
Setovanje kolekcije otvorenih CATIA dokumenata
Set oDocuments = CATIA.Documents
Ciklus:
For i = 1 To oDocuments.Count
next i
Tijelo ciklusa:
Setovanje objekta dokumenta, u koji se ''ubacuje'' i-ti dokument iz oDocuments kolekcije
Set oDocument = oDocuments.Item(i)
Svojstvo Name sadrži ime fajla CATIA dokumenta. Varijabli n ću dodijeliti vrijednost pozicije na kojoj se nalazi ekstenzija fajla pomoću funkcije InStr()
n = InStr(1, oDocument.Name, "CATDrawing")
InStr() vraća nulu ako ne pronađe ''CATDrawing'' u imenu dokumenta, što ću iskoristiti u koraku odluke, kojim se zaključuje da li je dokument crtež ili ne. Pomoću Mid() funkcije iz imena dokumenta uzimam sve znakove do ekstenzije, i prosljeđujem ih stringu ime. String exportime se formira kao što je prikazano ispod i koristi se kao argument u metodi ExportData().
If (n <> 0) Then
ime = Mid(oDocument.Name, 1, n - 1)
exportime = exportfolder & "\" & ime & "pdf"
Call oDocument.ExportData(exportime, "pdf")
End If
Slika ispod prikazuje kompletiran makro, a video klip funkcionalnost makroa.
VBA Makro za snimanje otvorenih CATIA V5 crteža u pdf. |
No comments:
Post a Comment