Objeler Arası Iletişim

Objeler arasında iletişim kurabilmek için "export", "private" ve "paraminfo" objelerine ihtiyaç vardır(Bkz. Cekirdek Objeler).

Öncelikle bir objenin değerlerini dışarıya aktarması gerekir. Kullanıcının ilk objede değiştirmesi istenilen parametreleri  Role="Input" komutuyla sağlanır. Bu parametreler bir sonraki objenin private'ına çağrıldığında otomatik olarak gelmektedir. Bazı parametreler vardır ki bir sonraki objede ihtiyaç olmasına rağmen kullanıcının değiştirmesi istenilmez. Bu parametreleri "Export" Objesi altında götürmek istediği değerlerle dışarı aktarır yani bir sonraki objeye taşırız. Private ile objelerin doğru çağrılıp çağrılmadığı kontrol edilir, paraminfo ile bir objenin oluşabilmek için hangi objelerden ne kadarına ihtiyaç duyduğu belirlenir. Böylelikle bir iletişim kurulmuş olur.

Örnek:


Örneğin, yukarıdaki işlemler tamamlandıktan sonra KUP2'e ait olan refline2 objesi, KUP3 objesi içinde KUP2'nin private ile çağırılmasından sonra değişikliğe uğratılırsa ne olur?
KUP3 içinde KUP2 private ile çağırılmış olmasına rağmen, Private içindeki objeler App'e gitmez. Bu yüzden refline2 değişikliğe uğratıldıktan sonra Export objesi güncel refline2'yi App'te başka bir objenin (KUP3) kullanacağı şekilde yeniden açığa alır ve her iki obje, input parametreleri ve ilgili export edilmiş parametreleri ile App'te çalışır.

KUP1: https://www.openbrim.org/objideq906tlxf5t46f51zyfray.libobj
KUP2: https://www.openbrim.org/objidqgzobjd3s9i3wtv1omp6a.libobj
KUP3: https://www.openbrim.org/objidvkfkg008k0etnyyz2ej8s9.libobj


Örnek:

İlk üretilen obje
<O N="Kolon" T="Project" >
    <P N="en" V="1000" Role="Input" />
    <P N="boy" V="500" Role="Input" />
    <P N="yukseklik" V="3500" Role="Input" />
    <O N="vol1" T="Volume">
        <O T="Surface" Z="0">
            <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 T="Surface" Z="yukseklik">
            <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>
    <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" Z="yukseklik" T="Volume">
           <O N="PT1" T="Point" X="-en/2" Y="-boy/2" />
           <O N="PT2" T="Point" X="en/2" Y="boy/2" />
        </O>
    </O>
</O>


Yukarıdaki örnekte bir kolon objesi oluşturulmuştur. Bir sistem oluşturmak için bir çok kolon kullanmak gerekir. Mesela bunun üzerine bir kiriş tanımlayacak olsaydık kolonun koordinatlarına göre konumlanmasını isterdik. Bu yüzden kolonun üst noktasına bir referans çizgisi oluşturup bu referans çizgisini "Export" Objesinin içine yerleştirdik.



Örnek:

Daha sonrasında başka bir objeyi oluştururken "Private" Objesi kullanarak bu objeyi çağırırız. Ve çağırdığımız objeyi tanıtırız. "Private" Objesi içerisine sadece input değerler ve export içerisinde girilen değerler gelir.İkinci obje:

Son üretilen obje
<O N="mesnet" 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" X="Kol1.midpt[0]" Y="Kol1.midpt[1]" Z="Kol1.midpt[2]">
       <O T="Surface">
           <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"Z="Width">
           <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="Kol1" T="Kolon" >
          <P N="en" V="1000" />
          <P N="boy" V="500" />
          <P N="yukseklik" V="3500" />
          <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" Z="yukseklik" T="Volume">
              <O N="PT1" T="Point" X="-en/2" Y="-boy/2" />
              <O N="PT2" T="Point" X="en/2" Y="boy/2" />
          </O>
      </O>
   </O>
</O>


Örnek:

Yeni obje yazılırken bir önceki objeden minimum ve maksimum seçilebilecek değerler ve bu objeden ne kadar gerektiği yazılmalıdır. Bunu aşağıdaki ifade sağlar.

<P N="KK" V="kenarayak" T="kenarayak" Role="Input" />
<O T="ParamInfo" Min="1" Max="1" Required="1" Pick="1" Param="KK" />

İfadesinde Min, minimum seçilebilecek değeri; Max, maksimum seçilebilecek değeri; Required değeri ise ikinci objenin oluşabilmesi için gerekli birinci obje sayısını verir.

İkinci obje aşağıdaki iken



İlk objeyle iletişim kurup çağırdığımızda, ilk objenin referans çizgisini esas alıp üzerine oturmuştur.