refs(‘Obje’)

Bir objeye referans veren belirli tipte bir objenin parametrelerine erişimi sağlar. Bir A objesine referans veren B objesi, A objesinin içerisinden refs('B') fonksiyonu ile çağrıldığı zaman projede bulunan A objesine bağlı B objelerinin listesini verir. Bir objenin kendinden sonra gelecek olan başka objeyi tanıması ve buna göre bazı parametrelerini daha sonradan düzenlemesi için kullanılabilir. "Private" Objesini kullanırken önceki objelerle iletişim kurmak gibi refs fonksiyonunda da kendinden sonraki objelerle iletişim kurmaya yarar.

Örnek:

<O N="Obje1" T="Project" Category="REFS">
   <P N="en" V="1000" Role="Input" />
   <P N="boy" V="500" Role="Input" />
   <P N="LocX" V="2000" Role="Input" />
   <P N="LocY" V="0" Role="Input" />
   <P N="LocZ" V="0" Role="Input" />
   <O N="vol1" T="Volume">
       <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="yukseklik" V="Z1" />
       <P N="OO" V="refs('Obje2')" D="Bu objeye referans veren tum obje2ler" />
       <P N="ObjeYuksekligi" V="OO[0]" T="Obje2" />
       <P N="Z1" V="iif(ObjeYuksekligi .EQ. NULL,1000,(ObjeYuksekligi.height))" T="Group" />
       <P N="Point1" V="toglobal(Refline)[0]" />
       <P N="Point2" V="toglobal(Refline)[1]" />
       <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>


Yukarıdaki örnekte iki obje bulunmaktadır. Obje1 ve Obje2 objeleri birbirlerine eklenmektedir. Obje1 App'de ilk çağrılan obje, Obje 2 ise onun referans çizgisine göre üzerine oturmaktadır. Bunları Objeler Arası İletişim'de incelemiştik. Şimdi ise ilk obje çağrıldıktan sonra gelecek olan ikinci objeye göre yüksekliğini ayarlamasını istiyoruz. Bunu ilk objeye ikinci objeyi tanıtarak yaparız. İlk Objede kodu yazarken, App'e gitmesi için dışa aktarılan(export) objesi altına Obje2'yi tanıtırız.

Örnek:

<P N="OO" V="refs('Obje2')" />


İfadesinde OO adlı parametreyi Obje2'nin verdiği referansa eşitlemek demek, Obje2'i gelecekte bir yerde gördüğün zaman tanı demektir.

Örnek:

<P N="ObjeYuksekligi" V="OO[0]" />


İfadesinde ilk objenin yüksekliğini bu ikinci objeye göre ayarlamak için bunu OO adlı parametrenin ilk seçilene eşitleriz.

Örnek:

<P N="Z1" V="iif(ObjeYuksekligi .EQ. NULL,1000,(ObjeYuksekligi.height))" T="Group" />

İfadesinde Z1 değeri eğerki Objeyuksekliği ( OO'nun yani Obje2'nin ilk seçileni) yoksa 1000 al, varsa Obje2'ye git ve onun parametresi olan height değerini al demektir.
Daha sonra Obje2 de Obje1 çağrılarak yükseklik ayarlanmış olur.

Örnek:

<O N="Obje2" T="Project" Category="REFS">
   <P N="lokX" V="0" Role="Input" />
   <P N="lokY" V="0" Role="Input" />
   <P N="height" V="200" Role="Input" />
   <P N="KK" V="Obje1" T="Obje1" Role="Input" />
   <O T="ParamInfo" Min="1" Max="1" Required="1" Pick="1" Param="KK" />
   <O T="Volume" X="lokX" Y="lokY">
       <O T="Surface" X="KK.LocX" Y="KK.LocY" Z="KK.LocZ">
           <O T="Point" X="-height/2" Y="-height/2" />
           <O T="Point" X="height/2" Y="-height/2" />
           <O T="Point" X="height/2" Y="height/2" />
           <O T="Point" X="-height/2" Y="height/2" />
       </O>
       <O T="Surface" X="KK.LocX" Y="KK.LocY" Z="height+KK.LocZ">
           <O T="Point" X="-height/2" Y="-height/2" />
           <O T="Point" X="height/2" Y="-height/2" />
           <O T="Point" X="height/2" Y="height/2" />
           <O T="Point" X="-height/2" Y="height/2" />
       </O>
   </O>
   <O T="Private">
       <O N="Obje1" T="Obje1">
           <P N="en" V="1000" />
           <P N="boy" V="500" />
           <P N="LocX" V="2000" />
           <P N="LocY" V="0" />
           <P N="LocZ" V="0" />
           <P N="yukseklik" V="Z1" />
           <P N="OO" V="refs('Obje2')" />
           <P N="ObjeYuksekligi" V="OO[0]" T="Obje2" />
           <P N="Z1" V="iif(ObjeYuksekligi .EQ. NULL,1000,(ObjeYuksekligi.height))" T="Group" />
           <P N="Point1" V="toglobal(Refline)[0]" />
           <P N="Point2" V="toglobal(Refline)[1]" />
           <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>