|
Mesut
Özer
Makine Müh., CATIA V5 Uzmanı
Mayıs 2006, Bursa
GİRİŞ
Günümüzdeki
tasarım yazılımları ilk yüklendiklerinde beraberlerinde kullanıcının
birçok işini görebilen tasarım araçları içerir. Aynı zamanda
tasarım yazılımları, her yeni versiyonda bir önceki versiyonda
yapılan işi kolaylaştıran yeni araçları kullanıma sunar. Bununla
birlikte bu yazılımlarının, her kullanıcının tüm isteklerini
yerine getirmesi mümkün değildir. Bir kullanıcı için mutlaka
olması gereken bir özellik, bir başka kullanıcı için gereksiz
olabilir.
Tasarım
yazılımlarını üreten firmalar bir çoğu, kullanıcıların büyük
kısmını memnun edebilmek ve aynı zamanda rekabet için satış
fiyatını minimum seviyede tutabilmek için modüler yapı çözümüne
başvurur. Aynı zamanda bu yapı ile yazılım firması kaynak
planlamasını daha iyi yapabilir. Modüler yapı ile kullanıcı
da işine yaramayan özellikler için para ödemez. Tasarım yazılımları
ayrıca kullanıcıya yazılım içine bazı tanımlamalar yapabilme
ve kodlar yazabilme fırsatını vererek, bu modüler yapıyı daha
da esnetebilir.
Her
kullanıcı kendi tanımlamalarını bu yazılım üzerinde kullanabilmek
ister. Örneğin tasarımın gerçekleştirilmesinde kullanılacak
malzemelerin herhangi bir yerde değil de, CAD dosyasının içinde
tanımlanması gibi daha çok veri tipindeki tanımlamalar bu
grup içine dahil olurlar.
Durum
kullanıcının kendi yazılım kodunu tasarım yazılımı içine yerleştirmek
olduğunda bulunmaz bir fırsat ortaya çıkar. Örneğin, bir kalıp
tasarımında, kalıplanacak malzemenin özelliğine bağlı olarak,
kalıp malzemelerinin ebatlarının ve cinsinin otomatik seçilmesi
gibi daha çok karar mekanizmasına sahip tanımlamalar ile rutin
bir işin birçok kez tekrarlanmasının gerektiği durumlarda,
bu işi otomotikleştiren tanımlamalar bu grup içine dahil edilebilir.
Ayrıca
bu tanımlamalara ilave olarak, her tasarım yazılımına özgü,
ilave fonksiyonlar olabilir. Bu fonksiyonlar daha önce yapılmış
bir tasarımın tasarım bilgilerinin (knowledge) yakalanması
(capture), düzenlenmesi, paylaşılması (share) ve uygulanması
(reapply) şeklinde olabilir. Bu kabiliyetlere sahip olan yazılımlara
öğrenen yazılımlar diyebiliriz. Bu öğretme işini kullanıcı
yazılım kabiliyetlerini kullanarak yapar.
Tasarım
yazılımı içinde yapılan her tanımlama ve kod, tasarımın belli
kriterlere uyan bir standart tasarım olmasını da sağlar.
Tüm
bu katma değerler tasarım sürelerinin kısaltılmasını ve bu
süreçlerin hatasızlaştırılması sağlayan önemli birer parametre
olurlar. Tasarım süreçlerinin uzunluğu, hata kaynaklı geri
dönüşler ve standart olmayan çalışmalar her zaman kaynak kaybı
anlamına gelir. Bu kayıpları ortadan kaldırmak için günümüzde
kullanıcıya ve tasarım yazılımına iş düşmektedir.
CATIA
V5 üzerinde parametreler, kodlar ve knowledge
CATIA
V5 tasarım yazılımı, tanımlama, kod yazımı ve öğrenme fonksiyonlarını
ve daha fazlasını bir arada içeren bir yazılımdır.
Kullanıcı
tanımlamaları parametre oluşturulması şeklindedir. Tasarım
içindeki herhangi bir parça için, istediğiniz özellikleri
içeren, kullanıcı tanımlı ve formüle edilebilir parametreler
oluşturulabilir. Örneğin bir kalıp parçası için "Malzeme"
isimli bir parametre oluşturup, bu parametre içine, bu parçanın
yapılacağı malzemenin standart kodunu girebilirsiniz. Böylece
ilişkili iki veriyi (parça ve malzeme) aynı doküman içinde
saklamış olursunuz (CATPart dosyasında). Bu parametreler ayrıca
formüle edilebilir. Örneğin bir kalıp için alt ve üst plaka
için 1050 standardındaki malzemeyi yazılım otomatik olarak
seçerken, kesme çeliği için 2379 standardındaki malzemeyi
otomatik olarak seçebilir.
CATIA
V5 içindeki kod yazılımı visual basic (VB) ya da CAA lisansı
(Component Application Architecture) üzerinde oluşturulabilir.
VB uygulamaları son CATIA kullanıcıları tarafından kullanılırken,
CAA ise CATIA üzerinde yazılım geliştiren firmalar tarafından
kullanılır. Ayrıca scriptler ile (CATScript ve vbscript) programlama
yapmak da mümkündür. (Detaylı bilgi için www.3ds.com/plm-glossary
ve www.3ds.com/alliances
)
CATIA V5 içindeki öğrenme işi ise knowledge modülleri ile
gerçekleştirilir. Bu modüller, programlama bilgisi gerektirmeden,
çok basit ifadelerle tasarım bilgilerinin yakalanması, paylaşılması
ve yeniden kullanılmasını sağlar. Detaylı bilgi için: www.3ds.com/products-solutions/plm-solutions/catia/all-products/domain/Product_Synthesis
CATIA V5 ve VBA
CATIA
içine kod yazımında, kullanıcı tanımlı formlarının kullanılabilmesi
nedeniyle VBA (Visual Basic for Applications) ya da VB (Visual
Basic) , scriptlere tercih edilir.
VBA yazılım geliştirme ortamı lisans gerektirmeyen bir ortamdır.
Bununla birlikte VBA ile geliştirdiğiniz kodları derleyip
(compile) "exe" dosya haline getiremezsiniz.
VB yazılım geliştirme ortamı ise VBA'ya ilave özellikler içerir
ve VB ile kodunuzu exe dosya haline getirebilirsiniz. VB kullanabilmek
için bu yazılımın lisansına sahip olmanız gerekir. Bu nedenle
her kullanıcının uygulayabilmesi için örneklerde VBA ortamı
seçilmiştir.
VBA'nın
avantajlarını öğrenmek için aşağıdaki site ziyaret edilebilir
www.microsoft.com/europe/vba/news/strategic_reviews/155.htm
CATIA'da
kod geliştirme, CATIA nesnelerine (bir product, bir part,
bir pad vs) VBA yardımıyla ulaşmayı, bu nesnelerin özelliklerini
(properties) değiştirmeyi ve nesne metotlarını (methods) çağırmayı
içerir.
Nesne,
özellik ve metot kavramlarını birer kod satırı ile açıklayacak
olursak:
Set catia
= GetObject(, "CATIA.Application")
komut satırı catia nesnesine erişmemizi ve onu almamızı sağlar.
(Eğer CATIA açık değilse, bu kod hata oluşturur bu durumda
CreateObject fonksiyonunu kullanmak gerekebilir)
Bu
nesneye eriştikten sonra bu nesne ile ilgili diğer özellikler
alınabilir. Örneğin "catia" nesnesine ait ActiveDocument
nesnesini alıp, daha sonra bu nesnenin Name özelliğini alarak,
aktif olan dökümanının isim bilgisine ulaşılabilir.
If InStr(1,
catia.ActiveDocument.Name, "OYUN.CATProduct") <
1 Then
komut satırı aktif olan doküman adının "OYUN.CATProduct"
olup olmadığını kontrol etmekte, buna göre program akışı değişmektedir.
Bazı
durumlarda nesnelere ait metotları çağırmak gerekir. Örneğin
aktif olan dökümanı kaydetmek isteyebilirsiniz. Bu durumda
yapmanız gereken save metodunu çağırmaktır.
Catia.ActiveDocument.Save
komut satırı aktif olan dökümanı kaydedecektir.
Yukarıdaki
örneklerdeki gibi CATIA içinde birçok özellik ve metot vardır.
Bunların hepsini bilmek mümkün olmadığı gibi gerekli de değildir.
CATIA'nin help dökümanları, tüm özelliklerin ve metotların
listesini içerir. Ayrıca bu dökümantasyon, özellik ve metotlarla
ile ilgili detaylı bilgilerde sağlar. CATIA help dökümantasyonu,
programlama yapan CATIA kullanıcılarının başvuru dökümanı
olarak kullanacağı bir kaynaktır.
CATIA'da
Macroların Kullanımı
CATIA
üzerinde yeni bir macro yazma ve varolan bir makroyu kullanmak
için "Tools-Macro-Macros" komut dizilimi ile açılan
Macros penceresi kullanılır. Bu pencerede bulunan "Run"
butonu ile var olan bir macroyu çalıştırabilir, "Edit"
butonu ile bu macroyu değiştirebilir,"Create" butonu
ile yeni bir macro oluşturabilirsiniz.

Macros Penceresi
Bir
"catvba" dosyası birden çok macroyu içerebilir.
Bu vba dosyası bir macro kütüphanesidir (macro library) CATIA
içine yeni bir macro kütüphanesi ilave etmek için bu penceredeki
"Maco Libraries" butonu kullanılır.

Macro Libraries Penceresi
Bu
pencerede bulunan "Add existing library" seçeneği
ile var olan bir vba dosyası CATIA içine dahil edilebilir.
Macrolar Edit ya da Ceate butonu ile açılan VBA geliştirme
ortamında yazılır.

VBA geliştirme ortamı
Örnek bir makro - Koordinat Alma
İlgili
dosyaları indirmek için tıklayınız: koordinat.zip
(41KB)
CATIA
içine VBA ile kod yazılmasına ilişkin inceleyeceğimiz örneklerden
ilki, ekran üzerinde seçilen noktanın x,y,z eksenlerindeki
koordinatlarını alan ve gerektiğinde bu koordinata bir nokta
ekleyen bir macrodur.

Koordinat alma macrosu
Bu
macro arka planda sürekli aktif olarak kaldığı için, hızlı
koordinat değerlerini alma ve noktalama işlemlerinde kullanıcıya
önemli kazançlar sunabilir. Boşluk dışında her nokta seçilebilir.
Macronun
kullanımı, ilgili noktanın seçilip, formun üzerine sol ya
da sağ mouse tuşuna basılması şeklindedir. Sol tuşa basıldığında
form üzerindeki textbox'lara koordinat değeri gelir. Sağ tuşa
basıldığında textbox'lara hem koordinat değeri gelir, hem
de seçilen yerde nokta oluşturulur.
Başlangıç
kodunun oluşturulması:
CATIA'da
yeni bir makro oluşturulduğunda (Create) ilgili vba dosyasına
bir modül ilave edilir. Macroda bu modül "koordinat_alma"
ismindedir. Siz daha sonra, hangi formu çağırmak isterseniz
bu formun show metodunu kullanarak ekrana getirirsiniz.
secim_koord_frm.Show
vbModeless
Bu komur satırı secim_koord_frm isimli formu ekrana getirmektedir.
Bu form ise bizim KOORDINAT isimli (caption) formumuzdur.
Satır sonunda bulunan vbModeless ifadesi, formumuz aktifken
CATIA'nin da kullanılabilmesini sağlayan bir ifadedir ve bu
makro için gereklidir.
Formun
oluşturulması:
Form
dört adet label (X,Y,Z ve Tip), dört adet textbox ve görünmeyen
(transparant) ve en üstte yer alan bir CommandButton'dan oluşur.
Bu commandbutton formun boş bir yerine tıklama zorluğunu ortadan
kaldırmak için konulmuştur.
Form
kodunun oluşturulması:
Form
üzerinde yapılan işlemler için (events) belli fonksiyonların
ya da sub'ların cağrılması gerekir. Bu fonksiyon ya da sub'ların
yapacağı işlemler, bizim programımızın akışını belirler.
Form kodumuzda toplam üç adet sub bulunmaktadır.
Private
Sub UserForm_Initialize()
...
...
End Sub
Bu sub macromuz ilk çalıştırıldığında devreye girer ve CATIA'nın
çalışıp çalışmadığını kontrol eder.
Private
Sub CommandButton1_Click()
...
...
End Sub
Bu sub en üstte bulunan gizli (transparant) commandbutton'nuna
tıkladığınızda devreye girer ve bu sub CATIA'da seçilen noktanın
koordinatlarını textbox'lar üzerine taşır.
Private Sub CommandButton1_MouseDown(ByVal
Button As Integer, ByVal Shift As Integer, ByVal X As Single,
ByVal Y As Single)
...
...
End Sub
Bu sub gizli commandbutton üzerine sağ mouse tuşu ile tıklandığında
devreye girer ve texboxlar üzerine seçilen noktanın koordinatların
yazdıktan sonra, seçilen yerde bir de nokta oluşturur.
Sub'lar
içinde yer alan kod satırlarını kısaca inceleyelim:
UserForm_Initialize
sub'ı içindeki kodlar
On Error
Resume Next
Set catia = GetObject(, "CATIA.Application")
If Err.Number <> 0 Then
MsgBox "Programdan önce CATIA programını çalıştırmalısınız.",
vbCritical, "HATA"
End
End If
Bu kod satırları, CATIA'nın arka planda çalışıp çalışmadığını
kontrol etmektedir. Eğer CATIA çalışmıyorsa, makro ekrana
bir uyarı mesajı getirerek sonlanır.
If catia.ActiveDocument
Is Nothing Then
MsgBox "Açık döküman yok", vbCritical, "HATA"
End
End If
Bu kod satırları CATIA'da açık bir doküman olup olmadığını
kontrol eder. Eğer yoksa macro ekrana bir hata mesajı getirerek
sonlanır.
CommandButton1_Click
sub'ı içindeki kodlar
Set secim
= catia.ActiveDocument.Selection
Set secilen = secim.Item(1)
Bu kod satırları, CATIA'da seçilmiş olan elemanları alır ve
elemanların birincisini secilen nesnesi içine atar. Böylece
çoklu seçim bile yapılmış olsa her zaman ilk seçilen elemanın
koordinatları forma alınır.
ReDim koord(2)
secilen.GetCoordinates koord
Bu
kod satırlarında "koord" isimli bir array oluşturulmakta
ve bu array içine secilen nesnesinin koodinatları "GetCoordinates"
metodu ile alınmaktadır.
If secilen
Is Nothing Then
TextBox1.Text = "#"
TextBox2.Text = "#"
TextBox3.Text = "#"
TextBox4.Text = "Seçim yok"
Else
TextBox1.Text = Round(koord(0), 3)
TextBox2.Text = Round(koord(1), 3)
TextBox3.Text = Round(koord(2), 3)
TextBox4.Text = secilen.Type
End If
secim.Clear
Bu
kod satırlarında ise alınan koordinatlar ve seçilen elemanın
tipi form üzerindeki textbox'lara yazılmaktadır. Daha sonra
secim nesnesinin "Clear" metodu çağrılarak CATIA
üzerindeki seçimler temizlenir.
CommandButton1_MouseDown
sub'ı içindeki kodlar
If InStr(1,
catia.ActiveDocument.Name, ".CATPart") >= 1 And
Button = 2 Then
Set part_dokuman = catia.ActiveDocument
Set hybrid_bodies = part_dokuman.Part.HybridBodies
Set point_body = hybrid_bodies.Item("NOKTALAR")
If Err.Number <> 0 Then
Set point_body = hybrid_bodies.Add
point_body.Name = "NOKTALAR"
Err.Clear
End If
Bu
kod satırlarında CATIA'da açık olan dökümanın CATPart olup
olmadığı kontrol edilmektedir. Eğer kontrol yapılmazsa sub
product üzerine nokta atmaya çalışacağından hata meydana gelecektir.
"HybridBodies" özelliği ile part dökümanı içinde
bulunan tüm Geometrical Set'ler nesneler olarak alınır. Bu
nesneler içinde adı "NOKTALAR" olan Geometrical
Set'in varlığı kontrol edilir. Eğer böyle bir set yoksa oluşturulur
ve bu set "point_body" nesnesi olarak alınır. "NOKTALAR"
Geometrical Set'i noktaların oluşturulacağı yerdir.
Set factory
= part_dokuman.Part.HybridShapeFactory
Set secilen = secim.Item(1)
ReDim koord(2)
secilen.GetCoordinates koord
If Not secilen Is Nothing Then
Set nokta = factory.AddNewPointCoord(koord(0), koord(1), koord(2))
point_body.AppendHybridShape nokta
part_dokuman.Part.Update
End If
CommandButton1_Click
Bu
kod satırlarında seçilen noktanın koordinatları alınmakta
(yukarıda açıklandı) ve bu koordinatlarda noktanın oluşturulması
sağlanmaktadır. Nokta oluşturulurken bir "factory"
nesnesi alınmakta (tüm geometrik elemanlar bu factory yardımıyla
oluşturulur), ve bu nesne ile yeni bir nokta "AddNewPointCoord"
metodu ile oluşturulmaktadır. Oluşturulan bu nokta "AppendHybridShape"
metodu ile daha önce açılan "NOKTALAR" Geometrical
Set'i içine dahil edilir. Part'ımız "Update" metodu
ile güncellenir. En sonunda da "commandbutton1_click"
sub'ı çağrılarak değerler textbox'lar içine yazılır ve seçim
temizlenir.
Yukarıdaki
kodlardan da görüldüğü gibi bir çok CATIA özellikleri ve metotları
kodlama sırasında kullanılmaktır. Geri kalan kod kısmı ise
(if, dim, redim vb.) standart VB kodlamasıdır. Kodlama sırasında
önemli olan, CATIA'ya ait nesnelerin özellik ve metotlarını
iyi kavranmış olmaktır.
Örnek
bir macro - Küp Oyunu
İlgili
dosyaları indirmek için tıklayınız: oyun.zip
(250KB)
Bu
oyun CATIA'nin makro kabiliyetleri kullanılarak oluşturulmuş
bir oyundur. Bu oyun ortaya çıkan farklı renklerdeki küplerin
tabla üzerine 3'lü şekilde sıralanması ile oynanır.

Küpler Oyunu
Küp
Oyunu koduda, bir önceki macroda olduğu gibi birçok CATIA
özelliğini ve metodunu içerir. Kod genel yapı olarak aşağıdaki
gibi bölünebilir:
- Başlangıç
kodu (UserForm_Initialize sub'ı): Değişken atamaları,çoğaltılacak
küpün kopyalanması vb. başlangıç işlemlerinin yapıldığı
sub.
- Ana
döngü (timer_sub sub'ı):Kodun genel akışının sağlandığı,
karar kodlarının cağrıldığı ve küpleri coğaltıldığı sub.
- Küplere
hareketin verilmesi (hareket sub'ı): Bu kısımda küp istenen
değerlerde hareket ettirilmektedir.
- Küplerin
yok olma kararının verilmesi (tarama sub'ı): Bu kısımda
her kat taranarak, yok edilebilecek küpler varsa bunların
yok olması sağlanmaktadır.
- Diğer
işlemler (events): Bu sub'larda butonlara tıklanması sırasında
nelerin yapılması gerektiğini belirten kodlardır.
Kodun
ana akışı yukarıda belirtildiği gibidir, kodun kalan kısımları
ise küplerin düşme efekti, oyun hızlanma şekli, puanlama gibi
diğer yardımcı kodlardır.
CATIA
nesneleri ile ilgili olan önemli kod satırların aşağıda açıklanmıştır.
Set root
= catia.ActiveDocument.Product
Set kup = root.Products.Item(2)
Set kupmove = kup.Move
Bu kod satırlarında küp nesnesi olarak ağaçtaki 2.eleman yani
"kup" elemanı alınmış ve bu kup nesnesinin "kupmove"
isimli hareket nesnesi oluşturulmuştur. Kod boyunca küplerin
hareketlendirilmesi "kupmove" nesnesi ile gerçekleştirilmiştir.
Set kup_secim
= catia.ActiveDocument.Selection
kup_secim.Clear
kup_secim.Add kup
kup_secim.Copy
Bu kod satırlarında küp nesnesi kopyalanmakta ve sonraki küpler
için hazır bekletilmektedir.
kup_secim.VisProperties.SetRealColor
255, 100, 100, 1
Bu kod satırında seçilen küpün görsel özellikler yani rengi
ayarlanmaktadır.
kup_secim.Clear
kup_secim.Add root
kup_secim.Paste
Bu kod satırında hafızadaki kopyalanmış küp, ana product üzerine
yapıştırılıp çoğaltılmaktadır.
kupmove.Apply
tarray
Bu kod ile tarray değişkenine yüklenen değerler ile küp hareket
ettirilmektedir.
kup_secim.Delete
Bu kod ile işi biten küpün silinmesi sağlanmaktadır.
Diğer
açıklamaların bir kısmı vba dosyası içinde açıklama olarak
belirtilmiştir. Macronun kurulup çalıştırılması ile ilgili
bilgiler "oyun_aciklamalar.txt" dosyasında belirtilmiştir.
SONUÇ
CATIA
V5'in VBA ile programlanabilirliği iki farklı örnek ile gösterilmiştir.
Birinci örnek anlaşılabilirliği açısından, ikinci örnek ise
farklı olması açısından seçilmiştir. Örnekler daha fazla tasarım
ve üretime yönelik olacak şekilde çoğaltılabilir. CATIA V5,
VBA ile programlama için oldukça iyi ve esnek çözümler sunmakta,
birçok yerde sınırlar kullanıcının hayal gücü ile belirlenmektedir.
Zamanla
tasarım yazılımlarının içine kod yazılması, daha önemli hale
gelecek, yazılım firmalarınının bu yöndeki açılımları daha
da genişleyecektir. Bu nedenle kullanıcıların bu yönde (sadece
VBA değil aynı zamanda öğrenen yazılımların diğer özellikleri
konusunda) kendilerini geliştirmeleri, çoklu kullanıcıların
bulunduğu işletmelerde bu işe kaynak ayrılması yerinde olacaktır.
|