Versions Compared

Key

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

...

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ı;

...

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

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şeyişi:
Image Removed
Image Removed
Image Removed bu konspeti anlatan bir seyler koymamiz lazim buraya gorsel. Cok havada kaliyor. Zor bir konsept...bu yukariya koydugum sey final degil hizlica yapip koydum.
Ö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>

...

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

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

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

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

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

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

...

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

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

...

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

Image Removed
Ş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 budur.
Yukarıdaki şekli oluştururken noktalar sırası ile girilmeseydi mesela sarı ve yeşil renkle belirtilmş 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>

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:

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

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

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

...

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

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

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

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;

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

...

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

...

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.

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

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

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

...

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

<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 meti koymaya izin verir.

...

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

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:

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

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

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

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:

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

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

...

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

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

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

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

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

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

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.

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

...

<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

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

...

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:

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

...

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ı)"
Türkiyede, aliymanların kurplar yerleştirilmeden önceki kesişme noktalarına some noktası denir.
Aliyman doğrultuları arasındaki açı ise "some açısı (Δ) " olarak adlandırılır.azimuth için mi bu açıklamayı yaptın? some açısının tanımını anladım ama yerini belirleyemedimLat: 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:

<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

...

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>

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:

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

...

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:

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

...

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:

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

...

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

...

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

Image Removed

...

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

...

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" />

Image Removed

...

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>

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

...

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" />??

...

Ç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.