Ana sayfa
         
     
Rapor - Makale > CAD/CAM/CAE > CATIA VBA Uygulamaları:

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.

         
     
TurkCADCAM.net > Türkiye'nin yeni ürün tasarım, geliştirme, CAD/CAM/CAE, CNC, kalıp ve imalat teknolojileri portalı
***** Sektörün profesyonel bilgi ve işbirliği platformu *****
© 2002-2017  Sinerji Yayıncılık, Tanıtım ve Danışmanlık Hizmetleri
Bu portaldaki içerik, ancak kaynak belirtilmesi ve izin alınması şartıyla yayınlanabilir.