...
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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<O N="YeniObje1" T="Project" Category="Objeler">
<!-- created by AECBOLT on 13.08.2018 – >
..
..
</O> |
Code Block | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<P N="A" V="20000" Role="Input" UT="Length" UC="M_TON" />
<P N="B" V="50000" Role="Input" UT="Length" UC="KM_N" />
<P N="C" V="A+B" UT="Length" UC="KM_N" /> |
Yukarıdaki gibi A ve B isimli iki parametrenin birim sistemleri farklıdır. Son kullanıcı bunu A=20 metre B=0.05km kilometre olarak görür ve değerleri girer.
Daha sonradan C parametresinin hesabı için tüm birimler kod çalıştırılırken İnternala çevrilir hesap yapılır birim kategorisi belirtilmemişse C=70000 milimetre yada yukarıdaki gibi birim kategorisi belirtilmişse o kategoriye göre çevrilip yazılır. Yani C=0.07 kilometre olur.
Yani tüm işlem aslında Internal birim kategorisinde yapılır. Bu örnekte birim tipi Length olan internal birim sistemi milimetre ile çalıştığı için A=20000mm ve B=50000mm olarak işlemi yapıp kullanıcının görmek isteyeceği birime çevrilmiştir.
...
Group objesi 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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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.
...
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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<O T="Repeat" S="0" E="4" I="1" CTRL="index" index="0">
<O N="Kolon" T="Line">
<P N="Guard" V="type .EQ. RECTANGULAR" />
<O T="Point" X="index * 15" Y="0" Z="0" />
<O T="Point" X="index * 15" Y="0" Z="50" />
<O N="Rectangular" T="Section">
<O T="Shape">
<O T="Point" X="-5" Y="-5" Z="0" />
<O T="Point" X="-5" Y="5" Z="0" />
<O T="Point" X="5" Y="5" Z="0" />
<O T="Point" X="5" Y="-5" Z="0" />
</O>
</O>
</O>
</O> |
Yukarıdaki örnekte tipi line olan bir kolon objesi oluşturulup repeat döngüsü içerisine konulmuştur. Başlangıç sayısı 1, bitiş sayısı 4 olan ve artışı birer birer olan döngü 4 kere döner ve 4 kere bu 3D obje oluşturulur. Aşağıdaki sistem elde edilir.
Bu örneği libraryde incelemek için bakınız: {+}https://www.openbrim.org/objidykp3fi661zspktydj29wxm.libobj+
Örnek2:
Bir listedeki elemanları saymaya, gerekirse onları ayırmayı sağlar.
Code Block | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<O N="Dongu1" T="Repeat" S="0" E="3" I="1" CTRL="i" i="0">
<O N="Dongu" T="Repeat" S="0" E="4" I="1" CTRL="j" j="0">
<O N="daire" T="Volume" Y="20*i" X="20*j">
<O T="Circle" Radius="10" Z="0" />
<O T="Circle" Radius="10" Z="10" />
</O>
</O>
</O> |
Yukarıdaki örnekte iç içe girmiş iki repeat objesi bulunmaktadır. Bu objelerde öncelikle i=0 değeri aldığında içerideki obje j=0'dan j=4'e kadar 5 kere tekrar edecek ve 5 tane içerisindeki 3D objeyi klonlayacaktır. Daha sonradan içerideki tekrarlar tamamlanınca, i=1 olacak ve içerideki obje tekrar 5 kere oluşturulacaktır. Böylelikle her bir i değeri arttığında j değeri 5 kere artacaktır. Bu en dıştaki tekrar sayısı tamamlanana kadar devam edecektir ve aşağıdaki 3D obje oluşacaktır.
Örneği Library'de incelemek için:
{+}https://www.openbrim.org/objidspvfh6op46yutcwozwlqr.libobj+
...
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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<O T="Surface" Z="20">
<O T="Point" X="-10" Y="-10" />
<O T="Point" X="10" Y="-10" />
<O T="Point" X="10" Y="10" />
<O T="Point" X="-10" Y="10" />
</O> |
Bu girilen noktaları birleştirip yüzey olarak tanımlayan obje Surface(Yüzey) objesidir. Yani girilen her bir nokta, yüzey objesi altında birleştirilir ve yüzey oluşmuş olur.
Surface objesi oluşturulurken birbirini takip eden sıra ile nokta objeleri girilmelidir girilmez ise aşağıdaki durum ortaya çıkar.
Code Block | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<O T="Surface">
<O T="Point" X="1" Y="5" />
<O T="Point" X="7" Y="7" />
<O T="Point" X="7" Y="5" />
<O T="Point" X="-7" Y="7" />
<O T="Point" X="-7" Y="5" />
<O T="Point" X="-1" Y="5" />
<O T="Point" X="-1" Y="-5" />
<O T="Point" X="-7" Y="-5" />
<O T="Point" X="-7" Y="-7" />
O T="Point" X="7" Y="-7" />
<O T="Point" X="7" Y="-5" />
<O T="Point" X="1" Y="-5" />
</O> |
Yüzey hatalı oluşacaktı çünkü Surface objesi içerisinde noktalar ardı ardına çizgiler üreterek yüzey oluşturur.
...
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 | ||||
---|---|---|---|---|
| ||||
<O N="Surfaceornegi" T="Surface">
<P N="Thickness" V="3" />
<O T="Point" X="0" Y="0" Z="0" />
<O T="Point" X="10" Y="0" Z="0" />
<O T="Point" X="10" Y="20" Z="0" />
<O T="Point" X="0" Y="20" Z="0" />
</O> |
Cutout parametresi, oluşturulacak yüzeyin kesilip kesilmemesini sorgular. 1 değeri veya Yes değeri oluşturulacak yüzeyi keser, 2 veya No değeri yüzeyi olduğu gibi oluşturur.
Code Block | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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:
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
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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<O T="Volume">
<O T="Surface" Z="0">
<O T="Point" X="-5" Y="-5" />
<O T="Point" X="5" Y="-5" />
<O T="Point" X="5" Y="5" />
<O T="Point" X="-5" Y="5" />
</O>
<O T="Surface" Z="20">
<O T="Point" X="10" Y="-10" />
<O T="Point" X="10" Y="10" />
<O T="Point" X="-10" Y="10" />
<O T="Point" X="-10" Y="-10" />
</O>
</O> |
Yine başka dikkat edilmesi gereken husus yüzeylerin aynı nokta sayısına sahip olmasıdır. Farklı nokta sayıları olduğu zaman her bir nokta öncelikle kendi sırasındakiyle eşleşir ve eşleşemeyen noktalarda birleşme olmaz ve açıkta kalır. Şöyleki;
Code Block | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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.
...
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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<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:
Code Block | ||||
---|---|---|---|---|
| ||||
<O N="Kesit" T="Section">
<O N="Beton" T="Shape">
<P N="Opacity" V="0.8" />
<O T="Point" X="en/2" Y="-boy/2" />
<O T="Point" X="en/2" Y="boy/2" />
<O T="Point" X="-en/2" Y="boy/2" />
<O T="Point" X="-en/2" Y="-boy/2" />
</O>
<O N="I Girder" T="Shape">
<O T="Point" X="bf/2" Y="-d/2" />
<O T="Point" X="bf/2" Y="-d/2+t" />
<O T="Point" X="t/2" Y="-d/2+t" />
<O T="Point" X="t/2" Y="d/2-t" />
<O T="Point" X="bf/2" Y="d/2-t" />
<O T="Point" X="bf/2" Y="d/2" />
<O T="Point" X="-bf/2" Y="d/2" />
<O T="Point" X="-bf/2" Y="d/2-t" />
<O T="Point" X="-t/2" Y="d/2-t" />
<O T="Point" X="-t/2" Y="-d/2+t" />
<O T="Point" X="-bf/2" Y="-d/2+t" />
<O T="Point" X="-bf/2" Y="-d/2" />
</O>
</O> |
Yukarıdaki örnekte asıl beklenen I Girder şeklinin kesip atılmasıdır. I şeklinin boşaltılması için cutout parametresinden yararlanırız. Şöyleki:
Code Block | ||||
---|---|---|---|---|
| ||||
<O N="I Girder" T="Shape" IsCutout="1"> |
Satırını bu ifadeyle değiştirecek olursak I girder şekli diğer şekile eklenmek yerine kesilip atılacaktır.
...
Material Objesi, 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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<O T="Text3D" FontSize="5" Label="3D Model Uzerinde Metin">
<O T="Point" Z="0" Y="5" X="0" />
<O T="Point" Z="0" Y="-5" X="0" />
<O T="Point" Z="5" Y="5" X="0" />
</O> |
Text3D objesi içerisindeki birinci ve ikinci noktaların oluşturduğu çizgi metin kutusunun alt kenarını, üçüncü nokta ise metin kutucuğunun tepe noktasının konumunu belirtir. Bu üç noktaya göre metin kutusu yerine oturur ve metin yazılmış olur.
Örnek2:
...
Code Block | ||||
---|---|---|---|---|
| ||||
<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> |
...
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 | ||||
---|---|---|---|---|
| ||||
<O N="Input" T="Group">
<P N="W" V="10" D="column width" Role="Input" />
<P N="L" V="20" D="column length" Role="Input" />
<P N="H" V="60" D="column height" Role="Input" />
</O>
<O N="Column" T="Surface">
<P N="Thickness" V="H" />
<O T="Point" X="-W/2" Y="-L/2" />
<O T="Point" X="W/2" Y="-L/2" />
<O T="Point" X="W/2" Y="L/2" />
<O T="Point" X="-W/2" Y="L/2" />
</O>
<O T="DimensionLine" FontSize="2.5" ArrowSize="1.7">
<O T="Point" Z="0" Y="L/2" X="-W/2" />
<O T="Point" Z="H" Y="L/2" X="-W/2" />
<O T="Point" Z="H/2" Y="W/3 + L/2" X="-W/2" />
</O>
<O T="DimensionLine" FontSize="2.5" ArrowSize="1.7">
<O T="Point" Z="H" Y="L/2" X="-W/2" />
<O T="Point" Z="H" Y="L/2" X="W/2" />
<O T="Point" Z="H" Y="W/3 + L/2" X="W/4" />
</O>
<O T="DimensionLine" FontSize="2.5" ArrowSize="1.7">
<O T="Point" Z="H" Y="L/2" X="W/2" />
<O T="Point" Z="H" Y="-L/2" X="W/2" />
<O T="Point" Z="H" Y="L/4" X="W/3 + W/2" />
</O>
|
...
ActiveOnly objesi 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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<O N="CADD Objects" T="CADD">
<O T="CADDShape" X="-11" Y="3" RZ="0">
<O T="Point" X="-2" Y="2" />
<O T="Point" X="-5" Y="-2" />
<O T="Point" X="4" Y="-2" />
<O T="Point" X="3" Y="2" />
</O>
</O> |
CADDRect
Bu obje dikdörtgen çizer.
Code Block | ||||
---|---|---|---|---|
| ||||
<O N="CADD Objects" T="CADD">
<O T="CADDRect" X="-11" Y="10" RZ="0">
<P N="W" V="5" />
<P N="H" V="2" />
</O>
</O> |
CADDLine
Bu obje çizgi çizer.CADDLine objesinin çizgi stili, kalınlığı bazı parametreler kullanarak ayarlanabilir. Bunlar Thickness, Color, LineStyle'dır. Thickness parametresi ile çizgi kalınlığı, color parametresi ile rengi ayarlanır. LineStyle parametresi ile ne kadar çizgi ne kadar boşluk olacağı belirlenebilir. Mesela LineStyle=[5,15] ifadesiyle 15 birim boşluk ardına 5 birim çizgi çizerek devam edecektir.
Örnek1:
Code Block | ||||
---|---|---|---|---|
| ||||
<O N="CADD Objects" T="CADD">
<O T="CADDLine" X="-10" Y="15" RZ="0">
<O T="Point" X="-1" Y="0" />
<O T="Point" X="1.5" Y="-0.5" />
</O>
</O> |
Örnek2:
Aşağıdaki şekilde farklı çizgi stilleri elde edilebilir.
Code Block | ||||
---|---|---|---|---|
| ||||
<O N="CADD Objects" T="CADD">
<O N="Mavi" T="CADDLine" Color="#4286f4">
<O T="Point" X="10" Y="0" />
<O T="Point" X="50" Y="0" />
</O>
<O N="Kırmızı" T="CADDLine" Color="red" Thickness="2" LineStyle="[6,3]">
<O T="Point" X="10" Y="10" />
<O T="Point" X="50" Y="10" />
</O>
<O N="Turuncu" T="CADDLine" Color="orange" Thickness="10" LineStyle="[20,5]">
<O T="Point" X="10" Y="20" />
<O T="Point" X="50" Y="20" />
</O>
<O N="Yeşil" T="CADDLine" Color="#8ff441" Thickness="6" LineStyle="[15,5]">
<O T="Point" X="10" Y="30" />
<O T="Point" X="50" Y="30" />
</O>
<O N="Pembe" T="CADDLine" Color="pink" Thickness="4" LineStyle="[100,30,15,30]">
<O T="Point" X="10" Y="40" />
<O T="Point" X="50" Y="40" />
</O>
<O N="Mor" T="CADDLine" Color="Purple" Thickness="2" LineStyle="[15,5,30]">
<O T="Point" X="10" Y="50" />
<O T="Point" X="50" Y="50" />
</O>
</O> |
Örnek için ziyaret ediniz: {+}https://www.openbrim.org/objidiyf9qi00rxg305h1yzzp33.libobj+
CADDCircle
Bu obje çember çizer.
Code Block | ||||
---|---|---|---|---|
| ||||
<O N="CADD Objects" T="CADD">
<O T="CADDCircle" X="2.7" Y="18.6" RZ="0">
<P N="Radius" V="1.3" />
</O>
</O> |
CADDEllipse
Bu obje elips çizer.
Code Block | ||||
---|---|---|---|---|
| ||||
<O N="CADD Objects" T="CADD">
<O T="CADDEllipse" X="6.3" Y="21.3" RZ="0">
<P N="Radius1" V="1.9" />
<P N="Radius2" V="0.5" />
</O>
</O> |
CADDArc
Bu obje yay çizer.
Code Block | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<O N="CADD Objects" T="CADD">
<O T="CADDBezier" X="14.6" Y="26.1" RZ="0">
<O T="Point" X="-1.5" Y="-0.2" />
<O T="Point" X="-0.2" Y="0.4" />
<O T="Point" X="0.8" Y="0" />
<O T="Point" X="0" Y="-0.5" />
</O>
</O> |
CADDCurve
Bu obje eğri çizmeye yarar.
Code Block | ||||
---|---|---|---|---|
| ||||
<O N="CADD Objects" T="CADD">
<O T="CADDCurve" X="17.464067662693637" Y="28.26808156150774" RZ="0">
<O T="Point" X="-1.3646626831661877" Y="-0.4585708611449171" />
<O T="Point" X="-0.6326067903746093" Y="0.41160878500356546" />
<O T="Point" X="-0.06629940161131387" Y="-0.3618842337950845" />
<O T="Point" X="0.7348183678587148" Y="0.5773572890318484" />
<O T="Point" X="1.3287505072933925" Y="-0.1685109790954229" />
</O>
</O> |
CADDFreeline
Bu obje serbest el çizgileri çizer
Code Block | ||||
---|---|---|---|---|
| ||||
<O N="CADD Objects" T="CADD">
<O T="CADDFreeline">
<O T="Point" X="0" Y="0.5" />
<O T="Point" X="-0.4" Y="0.6" />
<O T="Point" X="-1" Y="0.7" />
<O T="Point" X="-1.2" Y="0.8" />
<O T="Point" X="-0.8" Y="0.9" />
<O T="Point" X="-0.7" Y="1" />
</O>
</O> |
CADDText
Bu obje CADD çiziminin üzerine metin koyabilmeyi sağlar. Tıpkı text3D objesindeki gibi || ifadesi içerisinde yazılan ifadeler sonuçları gösterir.
Code Block | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<O N="CAD" T="CADD">
<O T="CADDDimensionLine">
<O T="Point" X="0" Y="0" />
<O T="Point" X="2" Y="0" />
<O T="Point" X="0" Y="-2" />
</O>
<O T="CADDDimensionLine">
<O T="Point" X="0" Y="0" />
<O T="Point" X="10" Y="0" />
<O T="Point" X="0" Y="-4" />
</O>
<O T="CADDDimensionLine">
<O T="Point" X="0" Y="0" />
<O T="Point" X="24" Y="0" />
<O T="Point" X="0" Y="-6" />
</O>
<O T="CADDDimensionLine">
<O T="Point" X="0" Y="0" />
<O T="Point" X="30" Y="0" />
<O T="Point" X="0" Y="-8" />
</O>
</O> |
...
CADDFrom3D objesi, 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>
|
...
DesignCode objesi, yapının analizi ve tasarımı için gerekli bir dizi kriter veya tasarım kontrolünü içerir. DesignCode, aynı zamanda Libraryde yazarın kodu yazarken görmek istediği sonuçları rapor ederken, son kullanıcının da App de şartname kontrolü yapmasını sağlar.
Temel olarak belirli yükleme koşulları altında yapısal bileşen tasarımında ele alınan giridleri (boyutlandırma, malzeme seçimi) ve analizler sonucunda elde edilen çıktıların (deforrmasyon, kuvvet, gerilme) kabul edilebilir limitler dahilinde olup olmadığının kontrolünü yapmayı sağlar. Yapının tipine bağlı olarak, tipik yükleme koşulları şunlar olabilir:
- Kalıcı Yük
- Hareketli Yük
- Rüzgar yükü
- Kar Yükü
Bu yüklemeler için verilen limitler ile hesaplanan yük arasındaki kontrolü Design objesi içerisinde Check objesi sağlar. Eğer hesaplanan yük limiti aşmıyor ise sistemin çalıştığını, aşıyor ise sistemin çalışmayacağı sonucunu verir ve böylece alınan sonuçlar ile şartname kontrolü yapılır.
Check objesi haricinde, yazarın DesignCode içerisinde sonuçları görmek istediği diğer tüm parametreleri 'Full Detailed Report' içerisinde gösterir.
Örnek:
Code Block | ||||
---|---|---|---|---|
| ||||
<P N="reaksiyon1limit" V="20" Role="Input" />
<P N="reaksiyon2limit" V="30" Role="Input" />
<P N="HesaplananReaksiyon1" V="30" />
<P N="HesaplananReaksiyon2" V="30" />
<O N="test" T="DesignCode">
<O N="KonrtolReaksiyon1" T="Check">
<P N="Criteria" V="HesaplananReaksiyon1.LE.reaksiyon1limit" />
</O>
<O N="KontrolReaksiyon2" T="Check">
<P N="Criteria" V="HesaplananReaksiyon2.LE.reaksiyon2limit" />
</O>
</O> |
Yukarıdaki girilen Reaksiyon kuvvetlerinin taşıyabileceği limitleri kullanıcı tarafından girilmiştir. Daha sonra proje içerisinde hesaplanan reaksiyon değerleri HesaplananReaksiyon1 ve HesaplananReaksiyon2 olsun. Daha sonrasında bu limit kontrolü Check objesi içerisinde koşul belirterek sağlanır. Koşul sağlanıyorsa PASSED, koşul sağlanmıyorsa FAILED ifadesini sonuç olarak verir ve Libraryde görünümü şu şekildedir:
...
Alignment Objesi, 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 | ||||
---|---|---|---|---|
| ||||
<O N="A" T="elevation point">
<P N="Station" V="0" />
<P N="Grade" V="0" />
<P N="Elevation" V="1200" />
</O>
<O N="B" T="ElevationPoint">
<P N="Station" V="40000" />
<P N="Grade" V="0" />
<P N="Elevation" V="40000" />
</O>
<O N="C" T="ElevationPoint">
<P N="Station" V="100000" />
<P N="Grade" V="0" />
<P N="Elevation" V="80000" />
</O> |
Enine Kesit-Eğim Segmentleri(Dever)
Bir güzergahda birden fazla T="crosssection" objesi tanımlanabilir. Yolun durumuna göre belli bir kilometreden sonra eğim değişikliği yapmak için başka enine kesitler tanımlanır. Station o kesitin başlama noktası, LeftEdgeToHCL o kesitin yarı genişliğini verir. T="crossSectionSegment" objesi altında Slope, enine kesitin eğimini, Width ise o kesitin genişliğini ifade eder. Yani yolun tüm geniştiğini CrossSectionSegment altında parçalara ayırabilir farklı eğimler tanımlayabiliriz.
Enine Kesit için parametreler
Parametreleri için Tablo A.3.1'e bakınız.
Enine Kesit segment objesi için parametreler
Parametreleri için Tablo A.3.2'ye bakınız.
Örnek:
Code Block | ||||
---|---|---|---|---|
| ||||
<O N="Enine kesit" T="CrossSection">
<P N="Station" V="300" />
<P N="LeftEdgeToHCL" V="100" />
<P N="ElevationAtHCL" V="0" />
<O N="Sol" T="CrossSectionSegment">
<P N="Slope" V="0.1" />
<P N="Width" V="100" />
</O>
<O N="Sag" T="CrossSectionSegment">
<P N="Slope" V="-0.1" />
<P N="Width" V="50" />
</O>
<O N="Sag1" T="CrossSectionSegment">
<P N="Slope" V="-0.1" />
<P N="Width" V="50" />
</O>
</O> |
Şeklinde görülen kesiti oluşturur.
...
Document objesi, 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 | ||||
---|---|---|---|---|
| ||||
<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:
Code Block | ||||
---|---|---|---|---|
| ||||
<O T="DocSection" Title="Mesnet">
<O T="Doc3D" Width="600" Height="300">
<P N="Obj3D" V="MesnetA" />
</O>
</O> |
DocCADD Objesi
Bu obje ile belgede projenin veya istenilen objenin 2D çizimleri görüntülenebilir.
Öznitelikler;
...
Sınıfı
...
Zorunluluk
...
Açıklama
...
Örnek
...
1
...
Width
...
Zorunlu
...
Görüntünün piksel cinsinden genişliği.
...
Width="600"
...
2
...
Height
...
Zorunlu
...
Görüntünün piksel cinsinden yüksekliği.
...
Height="400"
...
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 | ||||
---|---|---|---|---|
| ||||
<O T="DocSection" Title="CADD Çizimi ">
<O T="DocText">
Dökümanın bu bölümünde 3D objenin 2D CADD çizimleri verilecektir.
</O>
<O T="DocText">
Yandan görünüm:
</O>
<O T="DocCADD" Width="600" Height="400">
<P N="CADD" V="XX" T="CADDFrom3D" />
</O>
<O T="DocText">
Yukarıdan görünüm:
</O>
<O T="DocCADD" Width="600" Height="400">
<P N="CADD" V="ZZ" T="CADDFrom3D" />
</O>
</O>
|
DocCode Objesi
Bu obje belgede ParamML kodunu göstermeye yarar.
Örnek:eklenecek
DocGraph Objesi
Bu obje ile belgede lineer grafikler gösterilebilir.
Öznitelikler;
...
Sınıfı
...
Zorunluluk
...
Açıklama
...
Örnek
...
1
...
Title
...
Zorunlu
...
Grafik içinde belirtilen başlık.
...
Title="Graph 1"
...
2
...
Width
...
Zorunlu
...
Görüntünün piksel cinsinden genişliği.
...
Width="600"
...
Height
...
Zorunlu
...
Görüntünün piksel cinsinden yüksekliği.
...
Height="400"
...
4
...
AxisLabelX
...
Zorunlu
...
X ekseninde olan değişkenin adı
...
AxisLabelX="Width"
...
5
...
AxisLabelY
...
Zorunlu
...
Y ekseninde olan değişkenin adı
...
AxisLabelY="Height"
...
6
...
DataList
...
Zorunlu
...
X ekseni ve Y ekseni boyunca çizilecek veriler. V="[X, Y]"
...
DataList="[0,0],[8,16],[12,28]"
Örnek:
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)" /> |
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 | ||||
---|---|---|---|---|
| ||||
<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 | ||||
---|---|---|---|---|
| ||||
<O T="DocInput" Param="width" />
<O T="DocInput" Param="height" /> |
...
Bu obje ile belgeye fotoğraf eklenebilir.
Örnek:
Code Block | ||||
---|---|---|---|---|
| ||||
<O T="DocSection" Title="Fotoğraf ">
<O T="DocImage" Image="https://aecbolt.com/img/logo_256.png" />
</O> |
Parametrik metin için bu örneği inceleyiniz:
{+}https://www.openbrim.org/objid2ly68r87x49r9enat3tw4d.libobj+
AnalysisCase Objesi
AnalysisCase objesi ile bir yapının yükleme koşulları altındaki analizi yapılır.
<O N="SW" T="AnalysisCase" WeightFactor="-1" />
<O N="Seismic" T="AnalysisCaseEigen" Modes="1" Gravity="9806.65" />??
AnalysisCaseLive Objesi
Lane Objesi
...
Ç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.
- Temel Cekirdek Objeler (Unit Objesi,Repeat Objesi,Export Objesi,Extends Objesi,Private Objesi,Group Objesi)
- 3D Geometrik Objeler
- Alignment Objesi
- Cad Objeleri
- Sonlu Elemanlar Objeleri
- Sartname Kontrolu Objeleri
- Document Objeleri
- Arayuz Objeleri
PARAMML çekirdeği, ilave nesneler ile çeşitli amaçlar için genişletilebilir.