AnyBody içerisinde class şablonları kullanarak STL dosyalarının okutulması

AnyBody Modelleme Sistemi yazılımı ile tanışan herkes arayüzünü görüp kaçıyor. Oysa bu arayüz basit bir programlama arayüzü ve kapsamlı bir programlama dilinden çok daha az fonksiyona sahip. Bu dilin adı AnyBody Scripting Language (ASL).

Ergonomi alanında analiz yapan kullanıcılar, insan ile etkileşimde bulunan sistemlerin görsellerini yazılımın içerisine getirmek için STL dosyaları kullanabilirler. Bu tek opsiyon değil, AnyBody SolidWorks hareketli montaj dosyalarını okuyabilen bir arayüze de sahip. Bunun için yapılması gereken şey yeni bir AnyDrawSTL objesi oluşturmak. 

Örnek olarak: 

AnyDrawSTL makineParçam = {

  FileName = "makine.stl";

};

ModelView penceresinde bir STL görselleştirmek için bu kadarı yeterli. Tabii bu objeyi bir referans düzlemine (yani AnyRefFrame) oturtmanız şart. Genelde bu Environment.any dosyasının içerisinde standart olarak tanımlı, AnyFixedRefFrame GlobalRef altında yapılıyor.

Eğer STL görselimize renk vermek istiyorsanız, ek bir özellik eklemelisiniz: RGB = {x, x, x}; 

AnyDrawSTL makineParçam = {

  FileName = "makine.stl";

  RGB = {0, 0, 0};

};

Sırası ile R (red) kırmızı, G (green) yeşil ve B (blue) mavi renk bilenşenleri verilerek farklı renkler tanımlanabilir. İstediğiniz renklerin RGB kodlarını bilmiyorsanız basit bir Google araması veya hafif kompleks bir resim programı size istediğiniz kodları verecektir. Ben güzel bir görsel vereceğini düşündüğüm renk kodlarını aşağıdaki şekilde oluşturarak Environment.any dosyasının içerisinde AnyFolder Environment klasörünün altında tanımladım:

  // Farkli renk kodlarinin tanimlanmasi

  AnyFolder& renkKlasoru = Main.DrawSettings.Colors;
  renkKlasoru = {
    AnyVec3 akroRed = {1,0,0};
    AnyVec3 akroBlue = {0,1,0};
    AnyVec3 akroRuby = {208, 78, 80}/255;
    AnyVec3 akroYellow = {255, 226, 0}/255;
    AnyVec3 akroEspresso = {80, 57, 49}/255;
    AnyVec3 akroGray = {163, 158, 155}/255;
    AnyVec3 akroGreenGalore = {141, 236, 120}/255;
    AnyVec3 akroConcordCrush = {59, 40, 96}/255;
    AnyRGBs RGBarray = {akroBlue, akroRed};
    AnyVec3 t = RGBarray[0];
  };

Bu basit işlem, aktarmak istediğiniz montaj komplesinde farklı parçalar bulunması ve farklı renklendirmeler istemeniz durumunda bir çok kopyala/yapıştır işlemi ile sonuçlanabilir. 500 veya 1000 gibi rakamlar hiç de uzak değil. Aynı kodu tekrar tekrar kullanmayı önlemek ve bir miktar kodun okunabilirliğini arttırabilmek için ASL içerisindeki class template konsepti kullanılarak STL dosyalarının aktarılması tek satıra indirilebilir. Aşağıdaki örnekte basit bir class template ile STL dosyalarının tek satırda okunması işlemi kodlanmıştır. 

#class_template stlOlusturRGB(ObjeIsmi, ObjeKonumu, DosyaIsmi, Renk_Kodu, OlcuBirimi) {

  AnyFolder& WhereToPut = ObjeKonumu;
  WhereToPut = {
    AnyDrawSTL ObjeIsmi = {
      FileName = DosyaIsmi;
      #if OlcuBirimi == "mm"
        ScaleXYZ = 0.001*{1,1,1};
      #endif
      #if OlcuBirimi == "m"
        ScaleXYZ = 1.0*{1,1,1};
      #endif
      RGB = Renk_Kodu;
    };
  };
};
 
Burada stlOlusturRGB yeni oluşturduğumuz class'ın ismi. 5 adet farklı parametre kullanarak her bir STL objesinin tanımını gerçekleştirebilmek mümkün. İlk parametremiz Objeİsmi. Objeler oluşturulurken her bir objenin bir ismi olması, model içerisinde o objeye ulaşılabilmesi için bir gereklilik. Ayrıca aynı seviyede olan objeleri birbirlerinden ayrılabilmesi için farklı isimlerde olması da ayrı bir zorunluluk. İkinci parametremiz ObjeKonumu. AnyBody modellerinin içerisinde bir model hiyerarşisi bulunmakta. Belirli obje türleri, farklı türlerin altında bulunarak farklı sonuçlar yaratabilmektedir. STL dosyalarımızı her ne kadar Environment klasörünün içerisinde konumlandırmak mümkünse de, böyle bir parametre ile montaj al komplelerini ayırma imkanımız da olabilir. Üçüncü parametremiz dosya ismi, STL görseli oluşturulabilmesi için olmazsa olmaz tek parametremiz. Dosyanın bulunduğu klasör ve isim belirtilmeli. Burada dikkat edilecek nokta, stlOlusturRGB class'ını çağırdığımız dosya bilgisayarımızda hangi klasörde bulunuyor ise buna göre göreceli olarak STL dosya lokasyonlarını belirleyebileceğimiz.  Dördüncü parametremiz daha önce bahsi geçen RGB kodları. Ve son parametremiz STL dosyasının hangi uzunluk ölçü birimi ile kaydedildiğini belirten ObjeBirimi. Bu örnekte sadece milimetre ve metre için iki parametre kullandık ve fakat inç ve feet sistemine bunu uyarlamak oldukça kolay.
 
 
Class tanımlamamızın detayları bu şekilde. Basit bir uygulama örneği ile bu yazımızı sonlandıralım. Artık AnyFolder Environment klasörü altında yeni AnyDrawSTL ile objeler oluşturmak yerine, kendi tanımladığımız stlOlusturRGB class'i tanımlamalar yapabiliriz:
 
stlOlusturRGB obj01(ObjeIsmi = obj01, ObjeKonumu = Main.Model.Environment.GlobalRef, 
        DosyaIsmi = "..\input\MasaMontaj.stl", Renk_Kodu = Main.DrawSettings.Colors.akroGray,
        OlcuBirimi = "m")={};
 
Modelleme ile ilgili sorularınız için bizlere bilgi@akromuhendislik.com adresinden ulaşabilirsiniz. 
 
Can Özcan