Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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ü

Code Block
languagexml
themeEclipse
<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:

Code Block
languagexml
themeEclipse
<O N="YeniObje1" T="Project" Category="Objeler">

    <!-- created by AECBOLT on 13.08.2018 – >

    ..

    ..

</O>
Code Block
languagexml
themeEclipse
<O N="YeniObje2" T="Project" Category="Objeler" ObjLabel="AECBOLT">

    <!-- created by AECBOLT on 13.08.2018 – >

    ..

    ..

</O>

...

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:

Code Block
languagexml
themeEclipse
<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.

Code Block
languagexml
themeEclipse
<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:

Code Block
languagexml
themeEclipse
<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.

Code Block
languagexml
themeEclipse
<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.
Image Removed
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.
Image Removed
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 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 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:

Code Block
languagexml
themeEclipse
<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ı;

Code Block
languagexml
themeEclipse
<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>

...

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.

...

Code Block
languagexml
themeEclipse
<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>

...

Code Block
languagexml
themeEclipse
<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>
Code Block
languagexml
themeEclipse
<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>

...

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.
Image RemovedImage Removed

...

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.

Code Block
languagexml
themeEclipse
<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>

...

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:

Code Block
languagexml
themeEclipse
<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" />

...

Code Block
languagexml
themeEclipse
<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.
Image Removed
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.

Code Block
languagexml
themeEclipse
<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:

Code Block
languagexml
themeEclipse
<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.
Image Removed
Örneği Library'de incelemek için:
{+}https://www.openbrim.org/objidspvfh6op46yutcwozwlqr.libobj+

...

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

...

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

Code Block
languagexml
themeEclipse
<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.

Code Block
languagexml
themeEclipse
<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>

...

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.

Code Block
languagexml
themeEclipse
<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.
Image Removed
Surface objesi oluşturulurken birbirini takip eden sıra ile nokta objeleri girilmelidir girilmez ise aşağıdaki durum ortaya çıkar.

Code Block
languagexml
themeEclipse
<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>

...

Code Block
languagexml
themeEclipse
<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>

Image Removed

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

...

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:

Code Block
languagexml
themeEclipse
<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>

Image Removed
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.

Code Block
languagexml
themeEclipse
<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>

...

Code Block
languagexml
themeEclipse
<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>

Image Removed

...

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

...

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

Örnek:

Code Block
<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
Image Removed

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

...

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.

Code Block
languagexml
themeEclipse
<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_

...

Code Block
languagexml
themeEclipse
<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>

Image Removed
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;

Code Block
languagexml
themeEclipse
<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>

...

Örnek:

Code Block
languagexml
themeEclipse
<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.
Image Removed

...

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

...

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

Code Block
languagexml
themeEclipse
<O T="Line">
       <O T="Point" X="0" Y="0" Z="0" />
       <O T="Point" X="0" Y="5" Z="10" />
</O>

...

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?)

...

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

Code Block
languagexml
themeEclipse
<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:

Code Block
languagexml
themeEclipse
<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>

Image Removed

...

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.

...

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

Code Block
languagexml
themeEclipse
<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>

Image Removed
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:

Code Block
languagexml
themeEclipse
<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.
Image Removed

...

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.

...

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

Örnek:

Code Block
languagexml
themeEclipse
<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 3D model görünümüne metin koymaya izin verir.

...

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

Örnek:

Code Block
languagexml
themeEclipse
<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.
Image Removed

Örnek2:

...

Code Block
languagexml
themeEclipse
<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>

Image Removed

...

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:

Code Block
languagexml
themeEclipse
<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>

Image Removed

...

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;

Code Block
languagexml
themeEclipse
<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 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, 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.

...

Code Block
languagexml
themeEclipse
<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>

Image Removed
CADDRect
Bu obje dikdörtgen çizer.

Code Block
languagexml
themeEclipse
<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>

Image Removed
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:

Code Block
languagexml
themeEclipse
<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>

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

Code Block
languagexml
themeEclipse
<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>

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

CADDCircle
Bu obje çember çizer.

Code Block
languagexml
themeEclipse
<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>

Image Removed

CADDEllipse
Bu obje elips çizer.

Code Block
languagexml
themeEclipse
<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>

Image Removed
CADDArc
Bu obje yay çizer.

Code Block
languagexml
themeEclipse
<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.

Code Block
languagexml
themeEclipse
<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>

Image Removed

CADDCurve
Bu obje eğri çizmeye yarar.

Code Block
languagexml
themeEclipse
<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>

Image Removed

CADDFreeline
Bu obje serbest el çizgileri çizer

Code Block
languagexml
themeEclipse
<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>

Image Removed
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.

Code Block
languagexml
themeEclipse
<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>

...

Code Block
languagexml
themeEclipse
<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>

Image Removed

...

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

Code Block
<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>

Image Removed

...

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.
Image Removed
Örnek:

Code Block
languagexml
themeEclipse
<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:
Image Removed

...

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, 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, 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:

Code Block
languagexml
themeEclipse
<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>

Image Removed

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:

Code Block
languagexml
themeEclipse
<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>

Image Removed

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

...

Image Removed
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"

...

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"

...

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:

Code Block
languagexml
themeEclipse
<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>

Image Removed

...

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 tipi (Surface, Circle, Volume, Line veya group )
Örnek: T="Volume"; T="Group"

Örnek:

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

Image Removed

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"

...

Sınıfı

...

Zorunluluk

...

Adı

...

Değeri

...

Tipi

...

CADD

...

Zorunlu

...

N="CADD"

...

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

...

T="CADD"

Örnek:

Code Block
languagexml
themeEclipse
<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>

Image Removed

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:

Code Block
<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)" />

Image Removed

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:

Code Block
languagexml
themeEclipse
<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>

...

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:

Code Block
languagexml
themeEclipse
<O T="DocInput" Param="width" />

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

Image Removed

...

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

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

Image Removed
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

...

Çekirdek Objeler kutuphanede yapisal eleman gelistirmek isteyen yazarin işine yarayan en küçük alt objelerdir. Yazarlarin kutuphanede gelistirecegi objeler bu baslik altinda belirtilen ParamML standart nesne kütüphanesinde belirtilen objeler yardimiyla gelistirilmelidir. 

ParamML cekirdek objeleri asagida belirtilen 8 kategoride siniflandirilabilir.

  1. Temel Cekirdek Objeler (Unit Objesi,Repeat Objesi,Export Objesi,Extends Objesi,Private Objesi,Group Objesi)
  2. 3D Geometrik Objeler
  3. Alignment Objesi
  4. Cad Objeleri
  5. Sonlu Elemanlar Objeleri
  6. Sartname Kontrolu Objeleri
  7. Document Objeleri
  8. Arayuz Objeleri

PARAMML çekirdeği, ilave nesneler ile çeşitli amaçlar için genişletilebilir.