Skip to end of metadata
Go to start of metadata

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

Compare with Current View Page History

« Previous Version 9 Next »

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)

Ö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 kodlar aşağıdaki gibi tamamen birbirinin aynısı sonuç verir.


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


Örnek:

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


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


Bu örneği libraryde incelemek için bakınız: https://www.openbrim.org/objidykp3fi661zspktydj29wxm.libobj


Bir listedeki elemanları saymaya, gerekirse onları ayırmayı sağlar.

Örnek:

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


Örnek:

<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


Parametreleri:


Sınıfı

Zorunluluk

Adı ve Tipi

Varsayılan değeri ve açıklaması

Öznitelikler

1

Control Variable

Zorunlu

N="CTRL" 
T="Text"

D="Kontrol değişkeni: Tekrarlanan objelere göre tekrar sayısını tutan değişkenin adı." 
V="0"

Role="Input"

2

Start

Zorunlu

N="S" 

D="Start: Tekrar döngüsünün başlangıç sayısı (varsayılan 0)" 
V="0"

Role="Input"

3

End

Zorunlu

N="E" 

D="Bitiş: Tekrar döngüsünün bitiş sayısı (varsayılan 9)" 
V="0"

Role="Input"

4

Increment

Zorunlu

N="I" 

D="Artış: başlangıçtan sona giderken artış sayısı(varsayılan 1)" 
V="0"

Role="Input"

  • No labels