Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Project Objesi

Project objesi tüm yapıyı temsil eder ve belirli objelerle ilişkili tüm ParamML veOpenBrIM objelerini içeren en dıştaki objedir. Yeni bir proje başlatıldığı zaman ilk oluşturulan objedir.
Örnek:
Yeni oluşturulan bir projenin görünümü

<O N="YeniObje" T="Project">

    <!-- created by AECBOLT on 13.08.2018 – >

    ..

    ..

</O>


Daha sonrasında oluşturulacak tüm obje ve parametreler Project objesi altında yazılacaktır.
Parametreleri
Category, ObjLabel
Örnek:

<O N="YeniObje1" T="Project" Category="Objeler">

    <!-- created by AECBOLT on 13.08.2018 – >

    ..

    ..

</O>
<O N="YeniObje2" T="Project" Category="Objeler" ObjLabel="AECBOLT">

    <!-- created by AECBOLT on 13.08.2018 – >

    ..

    ..

</O>



Category ile Library'de klasör oluşturulur ve birbiri ile ilişkili objeler bu klasör içerisinde birleştirilebilir.

Yukarıdaki örnekte YeniObje2 objesindeki ObjLabel parametresi ile bir objeye klasör üzerinde etiket koymayı sağlarız. Bu parametreye yazılan değer büyük bir şekilde, Project objesinin ismi ise onun altında kırmızı ile belirtilerek yukarıdaki kırmızı ile yuvarlak içerisindeki gibi gösterilir.Bu cümle anlaşılır değil.Şimdi daha iyi mi?

Unit Objesi

Unit objesi bir projedeki birim sistemi tanımlamak için kullanılır. Bir proje bir ya da daha fazla birim sistemi içerebilir. Eğer ki tanımlanan bir Unit objesi yoksa, bütün projenin değişmeyen standart birim sistemine sahip olduğu varsayılır.
Eğer ki Unit objesi tanımlanmışsa, ilk Unit objesinin adının 'Internal' olması zorunludur. Bu unit objesi sistemin tüm hesapları o birimlerden yaptığı bir birim sistemi tanımlamak için kullanılır. Tek standartlaşmış bir internal birim sistemi kullanmak, parametrik ifadelerin yazımında kolaylık sağlar.
Bir internal birim sistemi tanımlandıktan sonra, son kullanıcı için girişi kolaylaştırmak amacıyla daha fazla birim sistemi tanımlamak mümkündür.
Projenin yazarı çoklu birim sistemleri tanımlayabilir.Örnek olarak, bu sistemler Kesit, Koordinat, Deplasman vb. Olarak adlandırılabilir.Herhangi bir parametrenin birim kategorisinin adı Birim Objelerinin herhangi birinin adıyla eşleşirse, son kullanıcının girdiği parametre değerleri için o birim sistemi kullanılacaktır.
Projede 'Default' adında bir Unit objesi varsa, birim kategorisi tanımlanmayan tüm parametrelerin birim sisteminin 'Default' birim kategorisinde olduğu varsayılır.
Parametreleri
Detayları için Tablo P.1'e bakınız.
Örnek1:

<O N="Internal" T="Unit" Length="MILLIMETER" Force="NEWTON" Angle="Radian" Temperature="Fahrenheit" />

<O N="Geometry" T="Unit" Length="METER" Force="NEWTON" Angle="Degree" Temperature="Fahrenheit" />

<O N="Property" T="Unit" Length="CENTIMETER" Force="NEWTON" Angle="Degree" Temperature="Fahrenheit" />


Proje içerisinde yukarıdaki gibi üç adet Unit objesi üretildikten sonra oluşturulan bir parametreye hangisine gitmesi gerektiğini belirtiriz Unit Category(UC) ile gideceği ismi ve Unit Type(UT) ile de bu parametrenin neyi ifade ettiğini söyler. Daha sonra birim kategorisi Unit objelerinden birisinin adıyla eşleşirse o parametre eşleştiği birim sistemini kullanır.

<P N="A" V="-1000" Role="Input" UT="Length" UC="Property" />

<P N="B" V="100" UT="Length" UC="Geometry" />

<P N="C" V="100" UT="Angle" UC="Internal" />

A parametresi bir uzunluk(UT) belirtip birimi santimetre olacaktır.
B parametresi de bir uzunluk(UT) belirtip birimi metre olacaktır.
C parametresi de bir açı(UT) belirtip birimi radyan olacaktır.


Örnek2:

<O N="Units" T="Group"> 
    <O N="Internal" T="Unit" Length="MILLIMETER" Force="NEWTON" Angle="Radian" Temperature="Fahrenheit" />

    <O N="KM_N" T="Unit" Length="KILOMETER" Force="NEWTON" Angle="DEGREE" Temperature="CELSIUS" />

    <O N="M_KN" T="Unit" Length="METER" Force="KILONEWTON" Angle="DEGREE" Temperature="CELSIUS" />

    <O N="M_KGF" T="Unit" Length="METER" Force="KILOGRAMFORCE" Angle="DEGREE" Temperature="CELSIUS" />

    <O N="M_TON" T="Unit" Length="METER" Force="TON" Angle="DEGREE" Temperature="CELSIUS" />

    <O N="CM_KGF" T="Unit" Length="CENTIMETER" Force="KILOGRAMFORCE" Angle="DEGREE" Temperature="CELSIUS" />

    <O N="CM_TON" T="Unit" Length="CENTIMETER" Force="TON" Angle="DEGREE" Temperature="CELSIUS" />

    <O N="MM_N" T="Unit" Length="MILLIMETER" Force="NEWTON" Angle="DEGREE" Temperature="CELSIUS" />

</O>


Karayolları Bilgi Yönetim Sistemi (KBYS)'de birim kategorisi olarak yukarıdaki birim sistemleri kullanılmaktadır. Bu birim sistemlerine ekleme, çıkarma ve değiştirme yapılabilir. Biri hariç: 'internal' çünkü kod çalışırken tüm birim sistemlerini tek bir birim sistemine çevirerek (internal unit) işlem yapar. Diğer tüm birim sistemleri(Display Units) son kullanıcının gördüğü parametrelerin birimleridir. Tüm bu kullanıcının gördüğü birim sistemleri kod çalıştırılırken İnternal'a çevrilir.

<P N="A" V="20000" Role="Input" UT="Length" UC="M_TON" />

<P N="B" V="50000" Role="Input" UT="Length" UC="KM_N" />

<P N="C" V="A+B" UT="Length" UC="KM_N" />


Yukarıdaki gibi A ve B isimli iki parametrenin birim sistemleri farklıdır. Son kullanıcı bunu A=20 metre B=0.05km kilometre olarak görür ve değerleri girer.

Daha sonradan C parametresinin hesabı için tüm birimler kod çalıştırılırken İnternala çevrilir hesap yapılır birim kategorisi belirtilmemişse C=70000 milimetre yada yukarıdaki gibi birim kategorisi belirtilmişse o kategoriye göre çevrilip yazılır. Yani C=0.07 kilometre olur.

Yani tüm işlem aslında Internal birim kategorisinde yapılır. Bu örnekte birim tipi Length olan internal birim sistemi milimetre ile çalıştığı için A=20000mm ve B=50000mm olarak işlemi yapıp kullanıcının görmek isteyeceği birime çevrilmiştir.

Group Objesi

Group objesi mantıksal olarak birbiri ile alakalı olan diğer objeleri, aynı amacı güden bir grup parametreleri birleştiren bir objedir.
Örnek:
Mesela hacimsel olarak yaratılan çeşitli objeleri Group objesi altında hacim isimli tek bir başlık altında toplayabilir, bütün hacimleri aynı anda öteleyebiliriz veya aynı güzergaha tek bir hamlede oturtabiliriz..

<O N="HACİMOBJELERİ" T="Group" X="80" Alignment="Güzergah" AlignH="None" AlignT="None" AlignV="None">

    <O N="hacim1" T="Volume" >

    <P N="Color" V="#55aef9"  />

    <P N="Opacity" V="0.5" />

    <O T="Surface">

            <O T="Point" Z="0" Y="-5" />

            <O T="Point" Z="0" Y="5" />

            <O T="Point" Z="10" Y="5" />

            <O T="Point" Z="10" Y="-5" />

    </O>

    <O T="Surface" X="100">

            <O T="Point" Z="0" Y="-5" />

            <O T="Point" Z="0" Y="5" />

            <O T="Point" Z="10" Y="5" />

            <O T="Point" Z="10" Y="-5" />

    </O>

    <O N="hacim2" T="Volume">

        <O T="Surface" Z="0">

            <O T="Point" X="-width" Y="-width" />

            <O T="Point" X="width" Y="-width" />

            <O T="Point" X="width" Y="width" />

            <O T="Point" X="-width" Y="width" />

        </O>

        <O T="Surface" Z="2*width">

            <O T="Point" X="-width" Y="-width" />

            <O T="Point" X="width" Y="-width" />

            <O T="Point" X="width" Y="width" />

            <O T="Point" X="-width" Y="width" />

        </O>

    </O>

</O>

Extends Objesi

Extends Objesi ile Libraryde üretilmiş herhangi bir objeyi başka bir obje içerisinde kullanmayı sağlar. İletişim kurmaz. Direkt olarak objenin her şeyini kendi içerisine yerleştirir. Extends ile alınan objenin Tipi Group olmalıdır. aynı çekirdek objelerdeki gibi zorunlu parametreleri isimleri vardır bu parametreler o objenin kendi kodunda girilen parametrelerdir lakin o parametre girilmezse varsayılan bir değer alır. O varsayılan değer ise ana projedeki olan değerlerdir.
Örnek:

<O N="SupportCondition" T="Project" >
   <!-- created by AECBOLT on 28.12.2017 -->
   <P N="PinnedSupportKonum" V="0"  />
   <P N="RollerSupportKonum" V="20" />
   ..
   ..
</O>


Yukarıdaki üretilmiş herhangi bir obje olsun. Bu içeriğin aynısı başka bir objede de gerekseydi o zaman şöyle kullanılırdı;

<O N="Proje" T="Project" >
    <P N="A" V="300"  />
    <P N="B" V="800" />
    ..
    ..
    ..
    ..
    <O T="Group" Extends="SupportCondition">
        <P N="PinnedSupportKonum" V="A"  />
        <P N="RollerSupportKonum" V="B" />
    </O>
</O>


SupportCondition objesi başka bir obje(Proje isimli) içerisinde kullanılmıştır. Parametre isimleri birebir aynı yazılmalıdır ve istenilen değerler girilebilir. Bu parametrelerden birisi yazılmasaydı mesela RollerSupportKonum parametresi hiç yazılmasa idi bu parametrenin değeri varsayılan değer olan 20 olarak kabul edecekti.


Export Objesi

Export objesi bir objenin dışa aktarılması istenilen değerleri barındıran bir objedir. Export objesi içerisine konulan herhangi bir parametre tıpkı Role="Input" parametreleri gibi dışa aktarılır. Dışa aktarılan bu değerler objeler arası iletişimde kullanılmak üzere işlev görür.
Bir obje App'de çağrılırken sistem Librarye gider ve o objeyi bulur. Type'ına göre kullanacağı satırları bulur ve işler. Daha sonra Role=Input değerler harici olan tüm parametreleri hafızasından siler. Silinmemesi istenilen ara parametreleri Library'den App'e taşımak için Export objesinden yararlanılır ve böylelikle Export objesi içerisindeki parametreler App içerisinde Source Code'a taşınmış olur.
App'e girilip yeni bir proje başlattığımızda öncelikli olarak librarydeki objeleri çağrılır. İşleyiş olarak Library'e gidilir oradaki kodu çalıştırılır input değerleri alınır ve kullanıcıya App'te aktarılır. Library içerisinde o objeyle ilgili olan diğer ara parametreleri ise hafızasında tutulmaz ve silinir. Peki bu kullanıcı için gerekli olmayan appin hafızasında tutmadığı diğer ara parametreler başka bi obje için gerekli olsaydı? İşte o zaman Export objesi devreye girer ve library içerisinde yazılmış olan bir objenin kodu app üzerinden çalıştığı zaman input parametreleri alınırken aynı şekilde export içerisindeki parametreleri de App'e taşımayı sağlar ve böylelikle ara parametreler de source code içine gider.
App'te bir objenin kodu çalıştırılırken Librarydeki objenin yazılan Type'ına göre sonuç verir. App'te dört çeşit sonuç alınabilir.

  • Bunlardan birincisi 3D modeldir. Bu, Volume, Line, Surface gibi objelerle elde edilir(bknz: Çekirdek Objeler).
  • İkinci sonuç CADD çizimlerini elde etmektir. Bu, CADD objeleri veya CADDFrom3D (bknz: Çekirdek Objeler) objesi ile elde edilir.
  • Üçüncü sonuç şartname kontrolü yapmaktır. Bu sonuç DesignCode objesi ile elde edilir.
  • Dördüncü sonuç sonlu elemanlar analizini yapmayı sağlar. Bu, analiz objeleri ve sonlu elemanlar objeleri ile elde edilir.

Exportun Library ve App arasındaki bağlantıyı nasıl sağladığına ilişkin aşağıdaki diyagramı verilen örnekten inceleyiniz.
Örnek:
Libraryde üretilmiş iki ayrı objenin app'teki işleyişi:



Örnek:

<O T="Export">
       <O N="refline" T="Volume">
           <O N="R1" T="Point" X="Width+LocX" Y="Width+LocY" Z="2*Width+LocZ" />
           <O N="R2" T="Point" X="-Width+LocX" Y="-Width+LocY" Z="2*Width+LocZ" />
       </O>
</O>


Lİbraryde Dışa aktarılması istenilen objenin değerleri Export objesi içerisinde yazıldığı zaman, App içerisindeki Source Code içerisinde, Role Input parametreleri haricinde görünür.


Private Objesi


Private objesi, başka bir objeye özel parametreleri içinde bulunduran özel bir konteynerdır. Objeler arasında iletişim kurmayı sağlar. Private objesi başka bir objenin input parametrelerini ve App'e gitmesi istenilen ara parametreleri(Export objesini) içine alır.
Private objesi Libraryde bir obje üretilirken App'te nasıl çalışacağını anlamak için bir nevi iletişimin nasıl olduğunu görmeye yarar diyebiliriz. Bir A objesi üretilirken B objesine gerek varsa B objesi temsilen Private içerisine konulur ve birbirleri arasındaki iletişim sanki App'te B objesini çağırıp üzerine A objesini çağırmış gibi kontrol edilir. Bu kontrol Library içerisinde gerçekleşir. App'e gitmez.
Örnek:

<O N="A_Objesi" T="Project" >
   <P N="en" V="1000" Role="Input" />
   <P N="boy" V="500" Role="Input" />
   <P N="yukseklik" V="1500" Role="Input" />
   <P N="LocX" V="3000" Role="Input" />
   <P N="LocY" V="0" Role="Input" />
   <P N="LocZ" V="0" Role="Input" />
   <O N="vol1" T="Volume" Opacity="0.8">
           <O T="Surface" Z="-yukseklik+LocZ">
               <O T="Point" X="-en/2+LocX" Y="-boy/2+LocY" />
               <O T="Point" X="-en/2+LocX" Y="boy/2+LocY" />
               <O T="Point" X="en/2+LocX" Y="boy/2+LocY" />
               <O T="Point" X="en/2+LocX" Y="-boy/2+LocY" />
           </O>
           <O T="Surface" Z="LocZ">
               <O T="Point" X="-en/2+LocX" Y="-boy/2+LocY" />
               <O T="Point" X="-en/2+LocX" Y="boy/2+LocY" />
               <O T="Point" X="en/2+LocX" Y="boy/2+LocY" />
               <O T="Point" X="en/2+LocX" Y="-boy/2+LocY" />
           </O>
   </O>
   <O T="Export">
      <P N="Line" V="[[PT1.X,PT1.Y,PT1.Z],[PT2.X,PT2.Y,PT2.Z]]" />
      <P N="midpt" V="onliner(Line,0.5)" />
      <O N="Refline" T="Volume" Z="LocZ" >
           <O T="Point" X="-en/2+LocX" Y="-boy/2+LocY" />
           <O T="Point" X="en/2+LocX" Y="boy/2+LocY" />
      </O>
   </O>
</O>


<O N="B_Objesi" T="Project" >
   <P N="Width" V="200" Role="Input" />
   <P N="KK" V="kenarayak" T="kenarayak" Role="Input" />
   <O T="ParamInfo" Min="1" Max="1" Required="1" Pick="1" Param="KK" />
   <O T="Volume">
           <O T="Surface" X="midpt[0]" Y="midpt[1]" Z="midpt[2]">
               <O T="Point" X="-Width/2" Y="-Width/2" />
               <O T="Point" X="Width/2" Y="-Width/2" />
               <O T="Point" X="Width/2" Y="Width/2" />
               <O T="Point" X="-Width/2" Y="Width/2" />
           </O>
           <O T="Surface" X="KK.LocX" Y="KK.LocY" Z="Width+KK.LocZ">
               <O T="Point" X="-Width/2" Y="-Width/2" />
               <O T="Point" X="Width/2" Y="-Width/2" />
               <O T="Point" X="Width/2" Y="Width/2" />
               <O T="Point" X="-Width/2" Y="Width/2" />
           </O>
   </O>
   <O T="Private">
      <O N="A" T="A_Objesi">
           <P N="en" V="1000" />
           <P N="boy" V="500" />
           <P N="yukseklik" V="1500" />
           <P N="LocX" V="3000" />
           <P N="LocY" V="0" />
           <P N="LocZ" V="0" />
           <P N="Line" V="[[PT1.X,PT1.Y,PT1.Z],[PT2.X,PT2.Y,PT2.Z]]" />
           <P N="midpt" V="onliner(Line,0.5)" />
           <O N="Refline" T="Volume" Z="LocZ" Exported="1">
               <O T="Point" X="-en/2+LocX" Y="-boy/2+LocY" />
               <O T="Point" X="en/2+LocX" Y="boy/2+LocY" />
           </O>
      </O>
   </O>
</O>


Daha sonrasında bir B objesi oluşturulsun ve A objesine bağlı olarak bu obje oluşturulsun.

A objesi, B objesinin Private objesi içerisinde bulunan bir objedir. Bu appte çağrılmış gibi birbirinden bağımsız iş görür. Bizim asıl ürettiğimiz B objesi ise "Hide Private Objects" butonuna tıklayarak görebilir,"Show Private Objects" butonu ile Private Obje içerisindeki objeleri tekrardan gösterebilirsiniz.

Paraminfo Objesi

Paraminfo Objesi ile kullanıcı arayüzünde başka bir objenin seçilebilirliğini sağlar.
Bazı gerekli parametrelerle kullanılır. Bunlar; Min, Max, Required, Pick ve Param'dır.Min, minimum seçilmesi gereken obje sayısını; Max, maksimum seçilmesi gereken obje sayısını; Required değeri ise ikinci objenin oluşabilmesi için gerekli birinci obje sayısını verir. Param parametresinin değeri seçilecek objenin parametredeki ismini ifade eder, Pick parametresi bu objenin uygulama içinde seçilmesini sağlar.
Aşağıdaki obje herhangi parametrelere sahip bir obje olsun aynı zamanda sarı ile belirtilmiş satır ile kullanıcı arayüzünde başka bir objenin seçimini de kullanıcının yapmasını sağlar.

<P N="LokX" V="0" Role="Input" />
<P N="height" V="200" Role="Input" />
<P N="aktifRef" V="2" D="Referans Çizgisi" Role="Input" />
<P N="KK" V="O" T="Obje1" Role="Input" />
<O T="ParamInfo" Min="1" Max="1" Required="1" Pick="1" Param="KK" />
<O T="Private">
    <O N="O" T="Obje1">
        <P N="en" V="1000" />
        <P N="boy" V="500" />
    </O>
</O>




Aynı zamanda kullanıcıyı yönlendirir. Önce A objesini üretmeden B objesini üretemeyeceğini ekrana yazar.

Repeat Objesi

Bazen bir objenin kodunun belirli bir kısmı bir çok kere tekrar edilmesi gerekebilir. Hatta tekrar sayısı kullanıcı tarafından belirlenmesi istenebilir. Kısacası, Repeat Objesi bir dizi objeyi bir çok kez klonlamak için kullanılır.
Birçok yapı yapısal bileşenlerin tekrarından oluşur. Örneğin;
Bir köprüdeki farklı çaprazlama lokasyonlarına sahip çoklu kirişler.
Bir köprüdeki çoklu gövde rijidite çubukları.
Bir kule için çoklu paneller.
Bir bina için çok sayıda kat.
Daha öncesinde tanımlanmış olan bir içerik Repeat Objesi içerisine yerleştirilip belirli geometrik aralıklarla klonlanıp konumlandırılabilir. Repeat objenin içindeki herhangi bir içerik belirlenen parametre kadar tekrar edilir.
Tüm Repeat Objeleri aşağıdaki parametreleri içermesi zorunludur:

  • S (başlangıç)
  • E (bitiş)
  • I (artış)
  • CTRL (kontrol parametresi)

Parametreleri
Detayları için Tablo P.2'ye bakınız.
Örnek:

<O N="tekrar" T="Repeat" S="0" E="3" I="1" CTRL="j" j="0">
    <P N="Sonuc" V="3^j" />
</O>
<P N="tekrarObjeListesi" V="tekrar" />
<P N="tekrarSonuc0" V="tekrar[0].Sonuc" />
<P N="tekrarSonuc1" V="tekrar[1].Sonuc" />
<P N="tekrarSonuc2" V="tekrar[2].Sonuc" />
<P N="tekrarSonuc3" V="tekrar[3].Sonuc" />
<P N="Sonuc0" V="3^0" />
<P N="Sonuc1" V="3^1" />
<P N="Sonuc2" V="3^2" />
<P N="Sonuc3" V="3^3" />


Yukarıdaki iki farklı renkle belirtilmiş kod ile tamamen birbirinin aynısı sonuç verir.


Bknz: https://www.openbrim.org/objid4wf6h9h9k7e4dkrnmsi2wx.libobj
Örnek:

<O T="Repeat" S="0" E="4" I="1" CTRL="index" index="0">
       <O N="Kolon" T="Line">
           <P N="Guard" V="type .EQ. RECTANGULAR" />
           <O T="Point" X="index * 15" Y="0" Z="0" />
           <O T="Point" X="index * 15" Y="0" Z="50" />
           <O N="Rectangular" T="Section">
               <O T="Shape">
                   <O T="Point" X="-5" Y="-5" Z="0" />
                   <O T="Point" X="-5" Y="5" Z="0" />
                   <O T="Point" X="5" Y="5" Z="0" />
                   <O T="Point" X="5" Y="-5" Z="0" />
               </O>
           </O>
       </O>
  </O>

Yukarıdaki örnekte tipi line olan bir kolon objesi oluşturulup repeat döngüsü içerisine konulmuştur. Başlangıç sayısı 1, bitiş sayısı 4 olan ve artışı birer birer olan döngü 4 kere döner ve 4 kere bu 3D obje oluşturulur. Aşağıdaki sistem elde edilir.

Bu örneği libraryde incelemek için bakınız: {+}https://www.openbrim.org/objidykp3fi661zspktydj29wxm.libobj+
Örnek2:
Bir listedeki elemanları saymaya, gerekirse onları ayırmayı sağlar.

<P N="Fn" V="[[1,2],[10,5],[4,8],[2,1]]" Role="Input" />
<O N="Dongu" T="Repeat" S="0" E="length(Fn)-1" I="1" CTRL="j" j="0">
       <P N="A" V="Fn[j][0]" />
       <P N="B" V="Fn[j][1]" />
</O>
<P N="A_Liste" V="map(Dongu,x.A)" />
<P N="B_Liste" V="map(Dongu,x.B)" />

Yukarıdaki örnekte bir liste Repeat objesi içerisine konulmuştur bu objenin başlangıç indeksi S=0 olduğundan j=0 olacak şekilde tekrarı başlatır ve A=Fn[0][0] parametresi ile B=Fn[0][1] parametresini hesaplar. Artış miktarı I=1 olduğundan ikinci tekrarda j, 1 arttırılarak yeni j değeri j=1 olur ve bu sefer A=Fn[1][0] ve B=Fn[1][1] parametrelerini oluşturur ve böylelikle bitiş sayısına gelene kadar tekrar eder ve E=3 olduğundan(Listenin uzunluğunun bir eksiği) j=3 olduğunda son parametreleri üretir ve daha tekrar etmez. Oluşan A ve B parametresinin tüm değerlerinin liste yapan map fonksiyonu (Bknz:Fonksiyonlar: map) ile de iki yeni liste elde etmiş olunur:
A=[1,10,4,2]
B=[2,5,8,1]
Örnek3:

<O N="Dongu1" T="Repeat" S="0" E="3" I="1" CTRL="i" i="0">
       <O N="Dongu" T="Repeat" S="0" E="4" I="1" CTRL="j" j="0">
           <O N="daire" T="Volume" Y="20*i" X="20*j">
               <O T="Circle" Radius="10" Z="0" />
               <O T="Circle" Radius="10" Z="10" />
           </O>
       </O>
</O>

Yukarıdaki örnekte iç içe girmiş iki repeat objesi bulunmaktadır. Bu objelerde öncelikle i=0 değeri aldığında içerideki obje j=0'dan j=4'e kadar 5 kere tekrar edecek ve 5 tane içerisindeki 3D objeyi klonlayacaktır. Daha sonradan içerideki tekrarlar tamamlanınca, i=1 olacak ve içerideki obje tekrar 5 kere oluşturulacaktır. Böylelikle her bir i değeri arttığında j değeri 5 kere artacaktır. Bu en dıştaki tekrar sayısı tamamlanana kadar devam edecektir ve aşağıdaki 3D obje oluşacaktır.

Örneği Library'de incelemek için:
{+}https://www.openbrim.org/objidspvfh6op46yutcwozwlqr.libobj+

Point(Nokta) Objesi

Bir noktayı tanımlayabilmek için uzaydaki konumunu göstermemiz gerekir. Bunu X,Y,Z değerleri olarak gösteririz.

Parametreleri

Chamfer,Radius
Detayları için Tablo P.3'e bakınız.

<O T="Point" X="0" Y="0" Z="0" C="0" R="0" />

Ifadesiyle kullanılır.


Örnek:
Aşağıdaki örnekte R ile C parametrelerinin nasıl bir farklılık yaptığı görünmektedir.

<O N="Noktaornegi" T="Surface">
       <O T="Point" X="0" Y="0" Z="0" R="5" />
       <O T="Point" X="10" Y="0" Z="0" C="2" />
       <O T="Point" X="10" Y="50" Z="0" />
       <O T="Point" X="0" Y="50" Z="0" />
</O>



Surface(Yüzey) Objesi

Bir yüzey objesi oluşturmak için minimum üç noktaya ihtiyaç vardır. O yüzden öncelikli olarak yüzeyin her bir köşelerindeki noktaların değerlerini koordinat sisteminde belirlemeli ve bu noktaları yazarken birbirini takip eden noktalar şeklinde yüzeyi kapatarak tanımlamamız gerekmektedir.

<O T="Surface" Z="20">
            <O T="Point" X="-10" Y="-10" />
            <O T="Point" X="10" Y="-10" />
            <O T="Point" X="10" Y="10" />
            <O T="Point" X="-10" Y="10" />
</O>

Bu girilen noktaları birleştirip yüzey olarak tanımlayan obje Surface(Yüzey) objesidir. Yani girilen her bir nokta, yüzey objesi altında birleştirilir ve yüzey oluşmuş olur.

Surface objesi oluşturulurken birbirini takip eden sıra ile nokta objeleri girilmelidir girilmez ise aşağıdaki durum ortaya çıkar.

<O T="Surface">
       <O T="Point" X="1" Y="5" /> 
       <O T="Point" X="7" Y="5" />
       <O T="Point" X="7" Y="7" />
       <O T="Point" X="-7" Y="7" />
       <O T="Point" X="-7" Y="5" />
       <O T="Point" X="-1" Y="5" />
       <O T="Point" X="-1" Y="-5" />
       <O T="Point" X="-7" Y="-5" />
       <O T="Point" X="-7" Y="-7" />
       O T="Point" X="7" Y="-7" />
       <O T="Point" X="7" Y="-5" />
       <O T="Point" X="1" Y="-5" />
</O>




Şeklin doğru oluşabilmesi için mavi nokta ile sarı nokta ardına yeşil nokta onun ardına kırmızı nokta gelir ve doğru sıralama 
Yukarıdaki şekli oluştururken noktalar sırası ile girilmeseydi mesela sarı ve yeşil renkle belirtilmiş noktaların sırası yer değiştirseydi yani mavi noktadan sonra yeşil noktaya sonra sarı noktaya daha sonra kırmızı noktaya gitseydi neler olurdu bakalım:


<O T="Surface">
       <O T="Point" X="1" Y="5" /> 
       <O T="Point" X="7" Y="7" />
       <O T="Point" X="7" Y="5" />
       <O T="Point" X="-7" Y="7" />
       <O T="Point" X="-7" Y="5" />
       <O T="Point" X="-1" Y="5" />
       <O T="Point" X="-1" Y="-5" />
       <O T="Point" X="-7" Y="-5" />
       <O T="Point" X="-7" Y="-7" />
       O T="Point" X="7" Y="-7" />
       <O T="Point" X="7" Y="-5" />
       <O T="Point" X="1" Y="-5" />
</O>


Yüzey hatalı oluşacaktı çünkü Surface objesi içerisinde noktalar ardı ardına çizgiler üreterek yüzey oluşturur.

Paremetreleri

Curved, Cutout, Draw Border,Thickness
Detayları için Tablo P.4'e bakınız.
Thickness parametresi, oluşturulan 2 boyutlu yüzey objesine üçüncü bir boyut olan kalınlık atamaya yarar.

Örnek:

<O N="Surfaceornegi" T="Surface">
       <P N="Thickness" V="3" />
       <O T="Point" X="0" Y="0" Z="0" />
       <O T="Point" X="10" Y="0" Z="0" />
       <O T="Point" X="10" Y="20" Z="0" />
       <O T="Point" X="0" Y="20" Z="0" />
</O>



Cutout parametresi, oluşturulacak yüzeyin kesilip kesilmemesini sorgular. 1 değeri veya Yes değeri oluşturulacak yüzeyi keser, 2 veya No değeri yüzeyi olduğu gibi oluşturur.

<O N="Surfaceornegi" T="Surface">
       <O T="Point" X="-20" Y="-20" />
       <O T="Point" X="-20" Y="20" />
       <O T="Point" X="20" Y="20" />
       <O T="Point" X="20" Y="-20" />
       <O N="KesilecekYuzey" T="Surface" IsCutout="Yes">
           <O T="Point" X="-10" Y="-10" />
           <O T="Point" X="-10" Y="10" />
           <O T="Point" X="10" Y="10" />
           <O T="Point" X="10" Y="-10" />
       </O>
</O>




Draw Border parametresi, kenar çizgilerini şekil üzerinde çizip çizmemeyi sorgular. Default değeri 1'dir.

<O N="Surfaceornegi" T="Surface" Thickness="20" DrawBorder="No">
       <O T="Point" X="-20" Y="-20" />
       <O T="Point" X="-20" Y="20" />
       <O T="Point" X="20" Y="20" />
       <O T="Point" X="20" Y="-20" />
       <O N="KesilecekYuzey" T="Surface" IsCutout="Yes">
           <O T="Point" X="-10" Y="-10" />
           <O T="Point" X="-10" Y="10" />
           <O T="Point" X="10" Y="10" />
           <O T="Point" X="10" Y="-10" />
       </O>
 </O>


Circle Objesi

Özel bir yüzey objesidir. Surface objesi poligonlar için kullanılırken Circle objesi dairesel yüzeyler oluşturur.

Paremetreleri

Radius, Radius2, StartAngle, EndAngle, Segments, Thickness, Iscutout
Detayları için Tablo P.5'e bakınız.

Örnek:

<O N="Kesilensurfaceornegi" T="Surface" Thickness="20">
       <O T="Point" X="-20" Y="-20" />
       <O T="Point" X="-20" Y="20" />
       <O T="Point" X="20" Y="20" />
       <O T="Point" X="20" Y="-20" />
       <O N="KesilecekYuzey" T="Circle" Radius="10" IsCutout="Yes" />
</O>


Oluşturulan poligon yüzeyden kesilen dairesel bir parça örneği

Circle objesi örnekleri için Librarydeki örneğe göz atabilirsiniz:
{+}https://www.openbrim.org/objidau8jtajzasegaoslj81nl.libobj+

Volume(Hacim) Objesi

Tıpkı noktaların birleşip yüzeyleri oluşturması gibi yüzeyleri de birleştirmek için Volume(Hacim) objesinden yararlanırız ve böylelikle hacim oluşturmuş oluruz.
Aşağıda Volume obje kullanarak nasıl 3D obje üretildiği açıkça görülmektedir.

<O T="Volume">
        <O T="Surface" Z="0">
            <O T="Point" X="-5" Y="-5" />
            <O T="Point" X="5" Y="-5" />
            <O T="Point" X="5" Y="5" />
            <O T="Point" X="-5" Y="5" />
        </O>
        <O T="Surface" Z="20">
            <O T="Point" X="-10" Y="-10" />
            <O T="Point" X="10" Y="-10" />
            <O T="Point" X="10" Y="10" />
            <O T="Point" X="-10" Y="10" />
        </O>
</O>

{_}https://www.openbrim.org/objidboujk406ceybqa7e3cjo9.libobj_


Girilecek iki yüzeyin köşe noktalarının sırası ve sayısının önemi vardır. Yüzey noktalarının alt ve üst yüzeydeki sıraları farklı tanımlanırsa, bordür çizgileri kendi sırasındaki noktalar arasında çizgi oluşturacak ve yanlış bir görünüm oluşacaktır. Şöyleki;

<O T="Volume">
        <O T="Surface" Z="0">
            <O T="Point" X="-5" Y="-5" />
            <O T="Point" X="5" Y="-5" />
            <O T="Point" X="5" Y="5" />
            <O T="Point" X="-5" Y="5" />
        </O>
        <O T="Surface" Z="20">
            <O T="Point" X="10" Y="-10" />
            <O T="Point" X="10" Y="10" />
            <O T="Point" X="-10" Y="10" />
            <O T="Point" X="-10" Y="-10" />
        </O>
  </O>



Yine başka dikkat edilmesi gereken husus yüzeylerin aynı nokta sayısına sahip olmasıdır. Farklı nokta sayıları olduğu zaman her bir nokta öncelikle kendi sırasındakiyle eşleşir ve eşleşemeyen noktalarda birleşme olmaz ve açıkta kalır. Şöyleki;

<O T="Volume">
        <O T="Surface" Z="0">
            <O T="Point" X="-5" Y="-5" />
            <O T="Point" X="5" Y="-5" />
            <O T="Point" X="5" Y="5" />
            <O T="Point" X="-5" Y="5" />
        </O>
        <O T="Surface" Z="20">
            <O T="Point" X="-10" Y="-10" />
            <O T="Point" X="10" Y="-10" />
            <O T="Point" X="10" Y="10" />
            <O T="Point" X="0" Y="20" />
            <O T="Point" X="-10" Y="10" />
        </O>
</O>






Eğer bir yüzeyde tüm noktalar için ortak bir koordinat varsa bunu bir üst parantezde ortak olarak gösterebiliriz. Bunun anlamı tüm noktaların içine o koordinat değerlerini yazmakla aynıdır. Örnekte olduğu gibi ilk surface objesinde Z değerleri her bir nokta için 0 olduğundan, tek tek yazmak yerine yüzey objesinin satırında tek bir hamlede gösterebiliriz. Çünkü bu satırlar arasında hiyerarşik toplam vardır. Bu hiyerarşik toplamı görmek için toglobal fonksiyonu kullanabiliriz. (Bknz: Fonksiyonlar)

Örnek:

<O T="Group" Z="2">
    <O N="hacim" T="Volume" Z="5">
        <O N="yuzey1" T="Surface" Z="1">
            <O T="Point" X="-width" Y="-width" Z="3" />
            <O T="Point" X="width" Y="-width" Z="3"/>
            <O T="Point" X="width" Y="width" Z="3"/>
            <O T="Point" X="-width" Y="width" Z="3"/>
        </O>
        <O N="yuzey2" T="Surface" Z="11">
            <O T="Point" X="-width/2" Y="-width/2" Z="4"/>
            <O T="Point" X="width/2" Y="-width/2" Z="4"/>
            <O T="Point" X="width/2" Y="width/2" Z="4"/>
            <O T="Point" X="-width/2" Y="width/2" Z="4"/>
        </O>
    </O>
</O>


Yukarıdaki örnekte hiyerarşik toplama bakılacak olursa, en dıştan içeriye doğru Group hacimi içinde bulundurur, hacim de yuzey1 ile yuzey2'yi içinde bulundurur.
Yani yuzey1 içten dışarıya doğru Z değeri 3+1+5+2 ile hesaplanarak Z=11 değerini alır.
Yuzey2 de Z değeri 4+11+5+2 ile hesaplanarak Z=22 değerini alır.


Parametreleri

DrawFaceA, DrawFaceB, DrawBorder, DrawFaceABorder, DrawFaceBBorder,Alignment
Detayları için Tablo P.6'e bakınız.

Line(Çizgi) Objesi

Öncelikli olarak iki point objesi gerekmektedir. Oluşturulacak iki ucunu tanımlayan bu noktalar line objesi ile birleştirilir çizgiyi ifade eder.

<O T="Line">
       <O T="Point" X="0" Y="0" Z="0" />
       <O T="Point" X="0" Y="5" Z="10" />
</O>


Parametreleri

IsCurved, StartSkewX, StartSkewY, "EndSkewX, EndSkewY, BetaAngle, Section, Alignment, DrawFaceA, DrawFaceB, DrawBorder, DrawFaceABorder, DrawFaceBBorder
Detayları için Tablo P.7'ya bakınız.

Section(Kesit) Objesi

Section objesi herhangi bir kesitin geometrik, mekanik ve 3D özelliklerini içinde tutan bir konteynerdır. Materyal özellikleri, şeklini ve bazı özelliklerini ifade eder.
Aşağıdaki örnekte görüldüğü gibi beton sınıfını, kesitinin şeklinin ve mekanik özelliklerini içinde tutar.
Aynı zamanda Section objesinin asıl önemi Line objesi ile 3D obje üretirken üçüncü boyutu sağlamak için çizgiye kesit atarken kullanılır. (Bknz: 3D obje nasıl üretilir?)

Parametreleri

Material
Detayları için Tablo P.8'ye bakınız.
Örnek1:

<P N="d" V="200" D="Web Depth" />
<P N="tw" V="20" D="Web Thickness" />
<P N="bf" V="500" D="Top Flange Width" /> 
<P N="tf" V="20" D="Top Flange Thickness" />
<O N="C Shape" T="Section">
        <O N="Kesit_sekil" T="Shape">
            <O T="Point" X="0" Y="d/2" />
            <O T="Point" X="bf" Y="d/2" />
            <O T="Point" X="bf" Y="d/2-tf" />
            <O T="Point" X="tw" Y="d/2-tf" />
            <O T="Point" X="tw" Y="-d/2+tfb" />
            <O T="Point" X="bfb" Y="-d/2+tfb" />
            <O T="Point" X="bfb" Y="-d/2" />
            <O T="Point" X="0" Y="-d/2" />
        </O>
        <P N="Material" V="C20/25" T="Material" />
</O>


Örnek2:

<P N="uzunluk" V="40" />
<P N="genislik" V="10" />
<P N="derinlik" V="20" />
<P N="t" V="2" />
<O N="Perde" T="Line">
    <O T="Point" X="0" Y="0" Z="0" />
    <O T="Point" X="0" Y="0" Z="uzunluk" />
    <O T="Section">
        <P N="Material" V="C20/25" T="Material" />
        <O T="Shape">
            <O T="Point" X="0" Y="0" />
            <O T="Point" X="genislik" Y="0" />
            <O T="Point" X="genislik" Y="t" />
            <O T="Point" X="t" Y="t" />
            <O T="Point" X="t" Y="derinlik" />
            <O T="Point" X="0" Y="derinlik" />
        </O>
    </O>
</O>


Shape(Şekil) Objesi

Shape objesi yukarıda anlatıldığı gibi Section Objesinin bir alt objesidir. Bir kesitin şeklini oluşturmak Surface objesi (yüzey) oluşturmaya benzer. İçerisinde Point objesi barındırır ve en az 3 noktadan oluşur, noktalar birbirini takip eden sırayla girilir ve Shape objesiyle birleştirilerek şekli ifade etmiş olur. Section ifadesinin içine birden fazla shape konulabilir.

Parametreleri

Material, X, Y
Detayları için Tablo P.9'e bakınız.
Örnek:

<O N="Kesit" T="Section">
           <O N="Beton" T="Shape">
               <P N="Opacity" V="0.8" />
               <O T="Point" X="en/2" Y="-boy/2" />
               <O T="Point" X="en/2" Y="boy/2" />
               <O T="Point" X="-en/2" Y="boy/2" />
               <O T="Point" X="-en/2" Y="-boy/2" />
           </O>
           <O N="I Girder" T="Shape">
               <O T="Point" X="bf/2" Y="-d/2" />
               <O T="Point" X="bf/2" Y="-d/2+t" />
               <O T="Point" X="t/2" Y="-d/2+t" />
               <O T="Point" X="t/2" Y="d/2-t" />
               <O T="Point" X="bf/2" Y="d/2-t" />
               <O T="Point" X="bf/2" Y="d/2" />
               <O T="Point" X="-bf/2" Y="d/2" />
               <O T="Point" X="-bf/2" Y="d/2-t" />
               <O T="Point" X="-t/2" Y="d/2-t" />
               <O T="Point" X="-t/2" Y="-d/2+t" />
               <O T="Point" X="-bf/2" Y="-d/2+t" />
               <O T="Point" X="-bf/2" Y="-d/2" />
           </O>
 </O>



Yukarıdaki örnekte asıl beklenen I Girder şeklinin kesip atılmasıdır. I şeklinin boşaltılması için cutout parametresinden yararlanırız. Şöyleki:

<O N="I Girder" T="Shape" IsCutout="1">

Satırını bu ifadeyle değiştirecek olursak I girder şekli diğer şekile eklenmek yerine kesilip atılacaktır.

Material Objesi

Material Objesi, bir yapının malzeme bilgisini bünyesinde tutar. Bu özelliklere örnek elastisite modülü, Poisson's oranı, yoğunluk, çelik akma dayanımı, betonun 28 günlük dayanımı örnek verilebilir.

Parametreleri

Detayları için Tablo P.10'e bakınız.

Örnek:

<O N="Yapısal celik  A36" T="Material">
    <P N="E" V="200000" D="elastisite modulu" />
    <P N="G" V="83333" D="kayma modulu" />
    <P N="Fu" V="400" D="belirlenen minimum cekme gerilmesi" />
    <P N="Fy" V="248" D="belirlenen minimum akma gerilmesi" />
</O>


Text3D Objesi

Text3D objesi 3D model görünümüne metin koymaya izin verir.

Parametreleri

FontSize: Yazı boyutu
Label: Yazılacak olan metin


Örnek:

<O T="Text3D" FontSize="5" Label="3D Model Uzerinde Metin">
       <O T="Point" Z="0" Y="5" X="0" />
       <O T="Point" Z="0" Y="-5" X="0" />
       <O T="Point" Z="5" Y="5" X="0" />
</O>


Text3D objesi içerisindeki birinci ve ikinci noktaların oluşturduğu çizgi metin kutusunun alt kenarını, üçüncü nokta ise metin kutucuğunun tepe noktasının konumunu belirtir. Bu üç noktaya göre metin kutusu yerine oturur ve metin yazılmış olur.

Örnek2:


Aynı zamanda hesaplanan bir parametrenin metin içerisinde gösterilmesi için || ifadeleri arasında yazılması gerekmektedir. Sonuçta metinde || ifadesi içerisinde yer alan ifade hesaplanarak gösterilecektir.

<P N="x" V="5" />
<P N="y" V="12" />
<O T="Text3D" FontSize="5" Label="Hesaplanan deger=|x+y|">
       <O T="Point" Z="0" Y="5" X="0" />
       <O T="Point" Z="0" Y="-5" X="0" />
       <O T="Point" Z="5" Y="5" X="0" />
</O>


DimensionLine Objesi

3D objelerin üzerinde boyutları göstermeye yarar. FontSize parametresi yazı boyutunu, ArrowSize parametresi ok boyutunu belirtir. Obje içerisine üç adet nokta tanımlanır. İlk iki nokta ölçülecek olan mesafenin başlangıç ve bitiş noktalarını belirtir. Üçüncü nokta ise boyutların yazılı olduğu metnin orta tepe noktasını belirtir.

Örnek:

<O N="Input" T="Group">
       <P N="W" V="10" D="column width" Role="Input"  />
       <P N="L" V="20" D="column length" Role="Input"  />
       <P N="H" V="60" D="column height" Role="Input"  />
</O>
<O N="Column" T="Surface">
       <P N="Thickness" V="H" />
       <O T="Point" X="-W/2" Y="-L/2" />
       <O T="Point" X="W/2" Y="-L/2" />
       <O T="Point" X="W/2" Y="L/2" />
       <O T="Point" X="-W/2" Y="L/2" />
</O>
<O T="DimensionLine" FontSize="2.5" ArrowSize="1.7">
       <O T="Point" Z="0" Y="L/2" X="-W/2" />
       <O T="Point" Z="H" Y="L/2" X="-W/2" />
       <O T="Point" Z="H/2" Y="W/3 + L/2" X="-W/2" />
</O>
<O T="DimensionLine" FontSize="2.5" ArrowSize="1.7">
       <O T="Point" Z="H" Y="L/2" X="-W/2" />
       <O T="Point" Z="H" Y="L/2" X="W/2" />
       <O T="Point" Z="H" Y="W/3 + L/2" X="W/4" />
</O>
<O T="DimensionLine" FontSize="2.5" ArrowSize="1.7">
       <O T="Point" Z="H" Y="L/2" X="W/2" />
       <O T="Point" Z="H" Y="-L/2" X="W/2" />
       <O T="Point" Z="H" Y="L/4" X="W/3 + W/2" />
</O>



ActiveOnly Objesi

ActiveOnly objesi Group objesi gibi sadece OpenBrim kütüphanesinde kullanılır. Yalnızca obje tanımı etkinse veya OpenBrIM App uygulamasında bir yapıda seçiliyse görünebilen objeleri içerir. Uyguluma içerisinde objeye Shift ile birlikte tıklanıldığı zaman görünür.
Örnek:
Mesela bir objede DimensionLine objesini sadece seçildiğinde aktif hale getirmek için şöyle kullanılır;

<O T="ActiveOnly">
    <O T="DimensionLine" FontSize="2.5" ArrowSize="1.7">
        <O T="Point" Z="0" Y="L/2" X="-W/2" />
        <O T="Point" Z="H" Y="L/2" X="-W/2" />
        <O T="Point" Z="H/2" Y="W/3 + L/2" X="-W/2" />
    </O>
    <O T="DimensionLine" FontSize="2.5" ArrowSize="1.7">
        <O T="Point" Z="H" Y="L/2" X="-W/2" />
        <O T="Point" Z="H" Y="L/2" X="W/2" />
        <O T="Point" Z="H" Y="W/3 + L/2" X="W/4" />
    </O>
    <O T="DimensionLine" FontSize="2.5" ArrowSize="1.7">
        <O T="Point" Z="H" Y="L/2" X="W/2" />
        <O T="Point" Z="H" Y="-L/2" X="W/2" />
        <O T="Point" Z="H" Y="L/4" X="W/3 + W/2" />
    </O>
</O>



Verify Objesi

Verify objesi değerlerin kontrolünde kullanılır. Check Objesiyle benzerlik gösterir farklılığı ise DesignCode objesi altında yazılmasına gerek yoktur. komple yanlis ornek yapacagim buna

CADD Objesi

CADD objesi, yapının yüksekliğini, kat planlarını, vb. 2D çizimlerini oluşturmasına ve eklemesine izin verir.
Aşağıdaki alt öğeler yardımıyla CADD çizimleri oluşturulur.


CADDShape
Bu obje poligon çizer.

<O N="CADD Objects" T="CADD">
    <O T="CADDShape" X="-11" Y="3" RZ="0">
        <O T="Point" X="-2" Y="2" />
        <O T="Point" X="-5" Y="-2" />
        <O T="Point" X="4" Y="-2" />
        <O T="Point" X="3" Y="2" />
    </O>
</O>



CADDRect
Bu obje dikdörtgen çizer.

<O N="CADD Objects" T="CADD">
    <O T="CADDRect" X="-11" Y="10" RZ="0">
        <P N="W" V="5" />
        <P N="H" V="2" />
    </O>
</O>



CADDLine
Bu obje çizgi çizer.CADDLine objesinin çizgi stili, kalınlığı bazı parametreler kullanarak ayarlanabilir. Bunlar Thickness, Color, LineStyle'dır. Thickness parametresi ile çizgi kalınlığı, color parametresi ile rengi ayarlanır. LineStyle parametresi ile ne kadar çizgi ne kadar boşluk olacağı belirlenebilir. Mesela LineStyle=[5,15] ifadesiyle 15 birim boşluk ardına 5 birim çizgi çizerek devam edecektir.
Örnek1:

<O N="CADD Objects" T="CADD">
    <O T="CADDLine" X="-10" Y="15" RZ="0">
        <O T="Point" X="-1" Y="0" />
        <O T="Point" X="1.5" Y="-0.5" />
    </O>
</O>


Örnek2:
Aşağıdaki şekilde farklı çizgi stilleri elde edilebilir.

<O N="CADD Objects" T="CADD">
       <O N="Mavi" T="CADDLine" Color="#4286f4">
           <O T="Point" X="10" Y="0" />
           <O T="Point" X="50" Y="0" />
       </O>
       <O N="Kırmızı" T="CADDLine" Color="red" Thickness="2" LineStyle="[6,3]">
           <O T="Point" X="10" Y="10" />
           <O T="Point" X="50" Y="10" />
       </O>
       <O N="Turuncu" T="CADDLine" Color="orange" Thickness="10" LineStyle="[20,5]">
           <O T="Point" X="10" Y="20" />
           <O T="Point" X="50" Y="20" />
       </O>
       <O N="Yeşil" T="CADDLine" Color="#8ff441" Thickness="6" LineStyle="[15,5]">
           <O T="Point" X="10" Y="30" />
           <O T="Point" X="50" Y="30" />
       </O>
       <O N="Pembe" T="CADDLine" Color="pink" Thickness="4" LineStyle="[100,30,15,30]">
           <O T="Point" X="10" Y="40" />
           <O T="Point" X="50" Y="40" />
       </O>
       <O N="Mor" T="CADDLine" Color="Purple" Thickness="2" LineStyle="[15,5,30]">
           <O T="Point" X="10" Y="50" />
           <O T="Point" X="50" Y="50" />
       </O>
</O>



Örnek için ziyaret ediniz: {+}https://www.openbrim.org/objidiyf9qi00rxg305h1yzzp33.libobj+

CADDCircle
Bu obje çember çizer.

<O N="CADD Objects" T="CADD">
    <O T="CADDCircle" X="2.7" Y="18.6" RZ="0">
        <P N="Radius" V="1.3" />
    </O>
</O>


CADDEllipse
Bu obje elips çizer.

<O N="CADD Objects" T="CADD">
    <O T="CADDEllipse" X="6.3" Y="21.3" RZ="0">
        <P N="Radius1" V="1.9" />
        <P N="Radius2" V="0.5" />
    </O>
</O>



CADDArc
Bu obje yay çizer.

<O N="CADD Objects" T="CADD">
    <O T="CADDArc" X="8" Y="22.6" RZ="0">
        <O T="Point" X="-1.3" Y="0.8" />
        <O T="Point" X="-0.2" Y="1.5" />
        <O T="Point" X="1.1" Y="1.1" />
    </O>
</O>


CADDBezier
Bu obje bezier eğrisi çizmeye yarar.

<O N="CADD Objects" T="CADD">
    <O T="CADDBezier" X="14.6" Y="26.1" RZ="0">
        <O T="Point" X="-1.5" Y="-0.2" />
        <O T="Point" X="-0.2" Y="0.4" />
        <O T="Point" X="0.8" Y="0" />
        <O T="Point" X="0" Y="-0.5" />
    </O>
</O>

CADDCurve
Bu obje eğri çizmeye yarar.

<O N="CADD Objects" T="CADD">
    <O T="CADDCurve" X="17.464067662693637" Y="28.26808156150774" RZ="0">
        <O T="Point" X="-1.3646626831661877" Y="-0.4585708611449171" />
        <O T="Point" X="-0.6326067903746093" Y="0.41160878500356546" />
        <O T="Point" X="-0.06629940161131387" Y="-0.3618842337950845" />
        <O T="Point" X="0.7348183678587148" Y="0.5773572890318484" />
        <O T="Point" X="1.3287505072933925" Y="-0.1685109790954229" />
   </O>
</O>


CADDFreeline
Bu obje serbest el çizgileri çizer

<O N="CADD Objects" T="CADD">
       <O T="CADDFreeline">
           <O T="Point" X="0" Y="0.5" />
           <O T="Point" X="-0.4" Y="0.6" />
           <O T="Point" X="-1" Y="0.7" />
           <O T="Point" X="-1.2" Y="0.8" />
           <O T="Point" X="-0.8" Y="0.9" />
           <O T="Point" X="-0.7" Y="1" />
    </O>
</O>



CADDText
Bu obje CADD çiziminin üzerine metin koyabilmeyi sağlar. Tıpkı text3D objesindeki gibi || ifadesi içerisinde yazılan ifadeler sonuçları gösterir.

<O N="CAD" T="CADD">
    <O T="CADDText" >
        <P N="W" V="5" />
        <P N="H" V="1" />
        <P N="Size" V="0.5" />
        <P N="Text" V="2D metin" />
    </O>
</O>





CADDDimensionLine
CAD çizimlerinde boyut çizgilerini oluşturan bir objedir.

<O N="CAD" T="CADD">
    <O T="CADDDimensionLine">
           <O T="Point" X="0" Y="0" />
           <O T="Point" X="2" Y="0" />
           <O T="Point" X="0" Y="-2" />
    </O>
  <O T="CADDDimensionLine">
           <O T="Point" X="0" Y="0" />
           <O T="Point" X="10" Y="0" />
           <O T="Point" X="0" Y="-4" />
    </O>
  <O T="CADDDimensionLine">
           <O T="Point" X="0" Y="0" />
           <O T="Point" X="24" Y="0" />
           <O T="Point" X="0" Y="-6" />
    </O>
  <O T="CADDDimensionLine">
           <O T="Point" X="0" Y="0" />
           <O T="Point" X="30" Y="0" />
           <O T="Point" X="0" Y="-8" />
    </O>
</O>


CADDFrom3D Objesi

CADDFrom3D objesi, bir 3D modelden 2D çizimler oluşturmanıza olanak tanır. Güzergaha oturtulmuş bir objeden CADDFrom3D ile 2D çizimler üretmenin ayrı bir önemi vardır çünkü güzergah üzerindeki bir objedeki meydana gelen tüm değişiklikler 2D çizimlerinde gösterilir. Bu çizimler aynı zamanda, objeye dönme özellikleri ekleyerek özelleştirilebilir.neden alignment varken caddfrom3D ile 2D cizim uretmeliyiz sorusunun cevabini vermeliyiz. Alignmenta giren objedeki tum degisiklikleri gosterebilmememizin tek yolu bu. O sebeple developeri buna yonlendirmek gerekmekte. Duz bina projeleri veya kesit gostermek icin diger cadd yonteminin uygun olabilecegi vs gibi aciklamalar yapmamiz lazim.
Öznitelikleri için Tablo C.1'e bakınız.
Parametreleri için Tablo C.2'ye bakınız.

Örnek:
Aşağıdaki gibi bir objenin istenilen açıdan görünümlerini şöyle elde ederiz

<P N="width" V="20" Role="Input" />
<P N="height" V="10" Role="Input" />
<O N="Hacim" T="Volume" Z="height" Opacity="0.9">
           <O T="Surface" Z="0">
               <O T="Point" X="width" Y="-width" />
               <O T="Point" X="width" Y="width" />
               <O T="Point" X="-width" Y="width" />
               <O T="Point" X="-width" Y="-width" />
           </O>
           <O T="Surface" Z="height">
               <O T="Point" X="width/2" Y="-width/2" />
               <O T="Point" X="width/2" Y="width/2" />
               <O T="Point" X="-width/2" Y="width/2" />
               <O T="Point" X="-width/2" Y="-width/2" />
           </O>
</O>
<O N="ZZ" T="CADDFrom3D" RZ="PI/2">
       <P N="Obj3D" V="Hacim" T="Volume" />
</O>
<O N="YY" T="CADDFrom3D" RY="PI/2">
       <P N="Obj3D" V="Hacim" T="Volume" />
</O>
<O N="XX" T="CADDFrom3D" RX="PI/2">
       <P N="Obj3D" V="Hacim" T="Volume" />
</O>



Hacim objesinin tepeden görünümü(ZZ):

(YY):

(XX):


DesignCode Objesi

DesignCode objesi, yapının analizi ve tasarımı için gerekli bir dizi kriter veya tasarım kontrolünü içerir. DesignCode, aynı zamanda Libraryde yazarın kodu yazarken görmek istediği sonuçları rapor ederken, son kullanıcının da App de şartname kontrolü yapmasını sağlar.
Temel olarak belirli yükleme koşulları altında yapısal bileşen tasarımında ele alınan giridleri (boyutlandırma, malzeme seçimi) ve analizler sonucunda elde edilen çıktıların (deforrmasyon, kuvvet, gerilme) kabul edilebilir limitler dahilinde olup olmadığının kontrolünü yapmayı sağlar. Yapının tipine bağlı olarak, tipik yükleme koşulları şunlar olabilir:

  • Kalıcı Yük
  • Hareketli Yük
  • Rüzgar yükü
  • Kar Yükü

Bu yüklemeler için verilen limitler ile hesaplanan yük arasındaki kontrolü Design objesi içerisinde Check objesi sağlar. Eğer hesaplanan yük limiti aşmıyor ise sistemin çalıştığını, aşıyor ise sistemin çalışmayacağı sonucunu verir ve böylece alınan sonuçlar ile şartname kontrolü yapılır.
Check objesi haricinde, yazarın DesignCode içerisinde sonuçları görmek istediği diğer tüm parametreleri 'Full Detailed Report' içerisinde gösterir.

Örnek:

<P N="reaksiyon1limit" V="20" Role="Input" />
<P N="reaksiyon2limit" V="30" Role="Input" />
<P N="HesaplananReaksiyon1" V="30" />
<P N="HesaplananReaksiyon2" V="30" />
<O N="test" T="DesignCode">
       <O N="KonrtolReaksiyon1" T="Check">
           <P N="Criteria" V="HesaplananReaksiyon1.LE.reaksiyon1limit" />
       </O>
       <O N="KontrolReaksiyon2" T="Check">
           <P N="Criteria" V="HesaplananReaksiyon2.LE.reaksiyon2limit" />
       </O>
</O>

Yukarıdaki girilen Reaksiyon kuvvetlerinin taşıyabileceği limitleri kullanıcı tarafından girilmiştir. Daha sonra proje içerisinde hesaplanan reaksiyon değerleri HesaplananReaksiyon1 ve HesaplananReaksiyon2 olsun. Daha sonrasında bu limit kontrolü Check objesi içerisinde koşul belirterek sağlanır. Koşul sağlanıyorsa PASSED, koşul sağlanmıyorsa FAILED ifadesini sonuç olarak verir ve Libraryde görünümü şu şekildedir:


Alignment Objesi

Alignment Objesi, otoyolların yatay ve düşey elemanları ile istenilen güzergahın tasarım detaylarını oluşturmaktadır.
Parametreleri
Longitude, Station, Azimuth, Latitude
Detayları için Tablo A'ya bakınız.
Örnek:

<O N="Guzergah" T="Alignment" Station="0" Azimuth="PI/2" Lat="0" Lng="0" Elev="0">

Station: Güzergahın başlangıç noktasının istasyonudur.
Azimuth: Güzergahın başlangıç hizalanmasının Kuzey ile yaptığı açıdır(Radyan girilmelidir). Sıfır azimut Kuzeye tekabul eder. (İsteğe bağlı)"
Lat: Güzergahın başlangıç noktasını X eksenine bağlı olarak tanımlar.(İsteğe bağlı)
Lng:Güzergahın başlangıç noktasını Y eksenine bağlı olarak tanımlar.(İsteğe bağlı)
Elev: Longitude ve Latitude ile birlikte güzergahın başlangıç noktasını tanımlar. Kırmızı kot olarak adlandırılır.
Oluşturulmuş bir güzergah objesi örneği için bakınız:
{_}{+}https://www.openbrim.org/objid6k09919t8dkgb73texad9n.libobj+_

Yatay Segmentler

Yatay segmentler, planda belirlenen iki durak arasındaki güzergahın tasarımında kullanılır. Yatay Alignment tanımlarken "Aliynman, Yatay Kurb ve Geçiş Eğrisi" elemanları kullanılabilir. Tasarımı yapılan yolun; ergonomisi ve ekonomisi düşünüldüğünde bu elemanların kombinasyonları uygulanmaktadır.
1. Aliyman (T="Straight")
Plan üzerinde düz segmentler tanımlamayı sağlar. Sadece güzergah objesi içerisine yerleştirilebilir.
Parametreleri için Tablo A.1.1'e bakınız.
2. Yatay Kurb (T="Circular")
Plan üzerinde dairesel eğri parçası tanımlamayı sağlar.
Parametreleri için Tablo A.1.2'ye bakınız.
3. Geçiş Eğrisi (T="Spiral")
Aliyman ile yatay kurp elemanları arasında geçiş eğrisi tanımlamak için kullanılır.
Parametreleri için Tablo A.1.3'e bakınız.

Düşey Segmentler

Düşey Segmentler, planda belirlenen iki durak arasındaki güzergahın boykesitinin ( profilinin ) tasarımında kullanılır. Düşey Segmentler tanımlanırken; " Aliynman ve Düşey Kurp" elemanları kullanılabilir. "Düşey Kurp" elemanı tanımlanırken, input olarak gireceğiniz farklı KM'lerdeki boyuna eğim ve kırmızı kot parametreleri kullanılır. Ardışık iki durak arasında boyuna eğim farkı olduğu durumlarda, sistem iki noktayı parabolik olarak birleştirmektedir.
Parametreleri için Tablo A.2'ye bakınız.
Örnek:

<O N="A" T="elevation point">
          <P N="Station" V="0" />
          <P N="Grade" V="0" />
          <P N="Elevation" V="1200" />
</O>
<O N="B" T="ElevationPoint">
          <P N="Station" V="40000" />
          <P N="Grade" V="0" />
          <P N="Elevation" V="40000" />
</O>
<O N="C" T="ElevationPoint">
          <P N="Station" V="100000" />
          <P N="Grade" V="0" />
          <P N="Elevation" V="80000" />
</O>

Enine Kesit-Eğim Segmentleri(Dever)

Bir güzergahda birden fazla T="crosssection" objesi tanımlanabilir. Yolun durumuna göre belli bir kilometreden sonra eğim değişikliği yapmak için başka enine kesitler tanımlanır. Station o kesitin başlama noktası, LeftEdgeToHCL o kesitin yarı genişliğini verir. T="crossSectionSegment" objesi altında Slope, enine kesitin eğimini, Width ise o kesitin genişliğini ifade eder. Yani yolun tüm geniştiğini CrossSectionSegment altında parçalara ayırabilir farklı eğimler tanımlayabiliriz.
Enine Kesit için parametreler
Parametreleri için Tablo A.3.1'e bakınız.
Enine Kesit segment objesi için parametreler
Parametreleri için Tablo A.3.2'ye bakınız.
Örnek:

<O N="Enine kesit" T="CrossSection">
           <P N="Station" V="300" />
           <P N="LeftEdgeToHCL" V="100" />
           <P N="ElevationAtHCL" V="0" />
           <O N="Sol" T="CrossSectionSegment">
               <P N="Slope" V="0.1" />
               <P N="Width" V="100" />
           </O>
           <O N="Sag" T="CrossSectionSegment">
               <P N="Slope" V="-0.1" />
               <P N="Width" V="50" />
           </O>
           <O N="Sag1" T="CrossSectionSegment">
               <P N="Slope" V="-0.1" />
               <P N="Width" V="50" />
           </O>
</O>

Şeklinde görülen kesiti oluşturur.


Document Objesi


Document objesi, Proje hakkında bilgi içeren yazdırılabilir bir rapor sağlayan bir objedir.
Öznitelikler;


Sınıfı

Zorunluluk

Açıklama

Örnek

1

Title

Zorunlu

Dökümanın/Projenin başlığı

Title="Kolon"
Title="Proje Raporu"


Alt öğeleri;

DocSection Objesi

Bu obje oluşturulacak belgeyi bölümlere ayırır. Ayrıca belgede daha kolay gezinmek için ve diğer bölümlerle bağlantıyı sağlayan bir kenar çubuğu üretir.
Öznitelikler;


Sınıfı

Zorunluluk

Açıklama

Örnek

1

Title

Zorunlu

Dökümanın belirtilen bölümünün başlığı

Title="Grafikler"
Title="3D Model"


DocText Objesi

Bu obje içerisinde yazılan metni, paragraf formunda istenilen bölümde görüntüler. Diğer Text objelerinde olduğu gibi, DocText objesinde de bir parametrenin değerinin verilmesi istenilen parametre isimleri || işaretleri arasına yazılır.

Örnek:

<O T="DocText">
     |Yol_Ismi| Yolu, KM: |Baslangic| ve KM: |Bitis| Kesimlerinin
     Yapım Isi kapsamında; jeolojik, hidrojeolojik, mühendislik jeolojisi, jeoteknik 
     Etütler ile arazi ve laboratuvar çalısmaları tamamlanmıstır.
     Bu rapor kapsamında, güzergahın KM: 66+489.75- 66+736.25 arasında viyadük geçisini
     sağlayacak olan, |Viyaduk_Ismi| Viyadüğü'nun geoteknik açıdan değerlendirilmesi
     yapılmıstır.
</O>
<O T="DocText">
     Bu amaç ile temel sistemleri ile yaklasım dolgularının geoteknik hesaplarında
     kullanılmak üzere; idealize zemin profili hazırlanmıs, parametre seçimleri yapılmıs,
     tasıma gücü, stabilite analizleri ve oturma miktarları ile süresi göz önüne alınarak,
     gerekli değerlendirmeler yapılmıstır.
</O>


Doc3D Objesi

Bu obje belgede projenin 3D modelini görüntülemeyi sağlar.
Öznitelikler;


Sınıfı

Zorunluluk

Açıklama

Örnek

1

Width

Zorunlu

Görüntünün piksel cinsinden genişliği.

Width="600"

2

Height

Zorunlu

Görüntünün piksel cinsinden yüksekliği.

Height="400"

Parametreler;


Sınıfı

Zorunluluk

Adı

Değeri

Tipi


Obj3D

Zorunlu

N="Obj3D"

3D Objenin adı

Example: V="Mesnet"

3D Objenin tipi (Surface, Circle, Volume, Line veya group )
Örnek: T="Volume"; T="Group"

Örnek:

<O T="DocSection" Title="Mesnet">
    <O T="Doc3D" Width="600" Height="300">
        <P N="Obj3D" V="MesnetA" />
    </O>
</O>

DocCADD Objesi

Bu obje ile belgede projenin veya istenilen objenin 2D çizimleri görüntülenebilir.
Öznitelikler;


Sınıfı

Zorunluluk

Açıklama

Örnek

1

Width

Zorunlu

Görüntünün piksel cinsinden genişliği.

Width="600"

2

Height

Zorunlu

Görüntünün piksel cinsinden yüksekliği.

Height="400"


Parametreler;


Sınıfı

Zorunluluk

Adı

Değeri

Tipi


CADD

Zorunlu

N="CADD"

CADD veya CADDFrom3D objesinin adı
Örnek: V="CADCizimi"

T="CADD"

Örnek:

<O T="DocSection" Title="CADD Çizimi ">
           <O T="DocText">
               Dökümanın bu bölümünde 3D objenin 2D CADD çizimleri verilecektir.
           </O>
           <O T="DocText">
               Yandan görünüm:
           </O>
           <O T="DocCADD" Width="600" Height="400">
               <P N="CADD" V="XX" T="CADDFrom3D" />
           </O>
           <O T="DocText">
               Yukarıdan görünüm:
           </O>
           <O T="DocCADD" Width="600" Height="400">
               <P N="CADD" V="ZZ" T="CADDFrom3D" />
           </O>
</O>


DocCode Objesi 

Bu obje belgede ParamML kodunu göstermeye yarar.
Örnek:eklenecek

DocGraph Objesi

Bu obje ile belgede lineer grafikler gösterilebilir.
Öznitelikler;


Sınıfı

Zorunluluk

Açıklama

Örnek

1

Title

Zorunlu

Grafik içinde belirtilen başlık.

Title="Graph 1"

2

Width

Zorunlu

Görüntünün piksel cinsinden genişliği.

Width="600"


Height

Zorunlu

Görüntünün piksel cinsinden yüksekliği.

Height="400"

4

AxisLabelX

Zorunlu

X ekseninde olan değişkenin adı

AxisLabelX="Width"

5

AxisLabelY

Zorunlu

Y ekseninde olan değişkenin adı

AxisLabelY="Height"

6

DataList

Zorunlu

X ekseni ve Y ekseni boyunca çizilecek veriler. V="[X, Y]"

DataList="[0,0],[8,16],[12,28]"

Örnek:

<O T="DocGraph" Width="400" Height="300" Title="Örnek bir X grafiği" DataList="[[0,0],[1,3],[2,4],[3,4.5],[4,4.75],[5,4.75],[6,4.5]]" AxisLabelY="Kuvvet(N)" AxisLabelX="Ölçü Boyu(mm)" />


DocTable Objesi

Bu obje ile belge içerisinde bir tablo hazırlanıp görüntülenebilir.
Alt ögeleri;


Sınıfı

Zorunluluk

Adı

Amacı

Tipi

1

DocRow

Zorunlu

N="DocRow"
(isteğe bağlı)

Tabloya bir satır ekler

T="DocRow"

2

DocCell

Zorunlu

N="DocCell"
(isteğe bağlı)

Tabloya bir sütun ekler

T="DocCell"

Örnek:

<O T="DocTable">
    <O T="DocRow">
        <O T="DocCell">
            Beton Sınıfı
        </O>
        <O T="DocCell">
            Karakteristik basınç dayanımı fck (MPa)
        </O>
        <O T="DocCell">
            Karakteristik eksenel çekme dayanımı fctk (MPa)
        </O>
    </O>
    <O T="DocRow">
        <O T="DocCell">
            C16/20
        </O>
        <O T="DocCell">
            16
        </O>
        <O T="DocCell">
            1.4
        </O>
    </O>
    <O T="DocRow">
        <O T="DocCell">
            C18/22
        </O>
        <O T="DocCell">
            18
        </O>
        <O T="DocCell">
            1.5
        </O>
        </O>
    O T="DocRow">
        <O T="DocCell">
            C20/25
        </O>
        <O T="DocCell">
            20
        </O>
        <O T="DocCell">
            1.6
        </O>
    </O>
</O>


Yukarıda belirtilmiş her bir renk bir satırı temsil eder. Satırların içerisindeki DocCell objeleri ise bu satırın hizasındaki sırasıyla hücreleri belirtir ve aşağıdaki tablo oluşur:

Tablo içerisine bir parametrenin değeri yazılmak isteniyorsa aynı Tex objelerinde olduğu gibi || işaretleri arasına yazılan bir parametrenin sayısal değeri tabloda görünecektir.

DocInput Objesi

Bu obje ile belge içerisinde 'parametre girdi kutusunu' oluşturup göstermeyi sağlar. Bu kutucuk ile tıpkı library'de olduğu gibi parametre değeri ParamML kodu değiştirilmeden belge üzerinden değiştirilebilir.
Örnek:

<O T="DocInput" Param="width" />

<O T="DocInput" Param="height" />



DocImage Objesi

Bu obje ile belgeye fotoğraf eklenebilir.
Örnek:

<O T="DocSection" Title="Fotoğraf ">
    <O T="DocImage" Image="https://aecbolt.com/img/logo_256.png" />
</O>



Parametrik metin için bu örneği inceleyiniz:
{+}https://www.openbrim.org/objid2ly68r87x49r9enat3tw4d.libobj+

AnalysisCase Objesi

AnalysisCase objesi ile bir yapının yükleme koşulları altındaki analizi yapılır.
<O N="SW" T="AnalysisCase" WeightFactor="-1" />
<O N="Seismic" T="AnalysisCaseEigen" Modes="1" Gravity="9806.65" />??

AnalysisCaseLive Objesi

Lane Objesi

Vehicle Objesi



  • No labels