Skip to end of metadata
Go to start of metadata

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

Compare with Current View Version History

« Previous Version 7 Next »

Sometimes a certain part of an object's code may need to be repeated many times. Even the number of repetitions may be required to be determined by the user. In short, the Repeat Object is used to clone a series of objects multiple times.


Many structures consist of repetitions of structural components. For example;
Multiple beams with different bracing locations in a bridge.
Multiple stem rigidity bars in a bridge.
Multiple panels for one tower.
Multiple floors for one building.
A previously defined content can be placed in the Repeat Object and cloned and positioned at certain geometric intervals. Any content inside the Repeat object is repeated as many times as the specified parameter.


All Repeat Objects must contain the following parameters:

  • S (start)

  • E (end)

  • I (increment)

  • CTRL (control parameter)

Syntax

...
...
<O T="Repeat"
...
</O>

Example

<O N="Replicate" T="Project" Category="Core Objects">
    <!-- created by ParamML Examples on 26.01.2023 -->
    <O N="Recap" T="Repeat" S="0" E="3" I="1" CTRL="j" j="0">
        <P N="Result" V="3^j" />
    </O>
    <O T="Design Code">
        <P N="RecapObjectList" V="Recap" />
        <P N="RecapResult0" V="Recap[0].Result" />
        <P N="RecapResult1" V="Recap[1].Result" />
        <P N="RecapResult2" V="Recap[2].Result" />
        <P N="RecapResult3" V="Recap[3].Result" />
        <!-- -l- -->
        <P N="Result0" V="3^0" />
        <P N="Result1" V="3^1" />
        <P N="Result2" V="3^2" />
        <P N="Result3" V="3^3" />
    </O>
</O>

The above codes give exactly the same results as below.

To view this example in the library, see (https://openbrim.org/platform/?application=inc&author=ParamML_Examples_OpenBrIM+Platform&obj=objidywfidyhjvzme5h9q6soyns )

Example:

 <O T="Repeat" S="0" E="4" I="1" CTRL="index" index="0">
        <O N="Rectangular Column" 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="height" />
            <O N="Rectangular" T="Section">
                <O T="Shape">
                    <O T="Point" X="-width/2" Y="-depth/2" Z="0" />
                    <O T="Point" X="-width/2" Y="depth/2" Z="0" />
                    <O T="Point" X="width/2" Y="depth/2" Z="0" />
                    <O T="Point" X="width/2" Y="-depth/2" Z="0" />
                </O>
            </O>
        </O>
    </O>
</O>

In the example provided, a 3D column object of type line is created and placed within a Repeat loop. The loop, with a starting number of 1, an ending number of 4, and incrementing by one each time, iterates 4 times, resulting in the creation of 4 identical column objects. This process results in the following system as output.

To view this example in the library, see (https://openbrim.org/platform/?application=inc&author=ParamML_Examples_OpenBrIM+Platform&folder=Core+Objects&obj=objid77165d5s6l3r54bcc8luz )

The Repeat Object also allows for counting elements in a list and separating them as needed. This can be useful in situations where specific elements within the list need to be grouped or separated based on certain criteria.

Example:

<O N="Repeat_in_repeat_Object" T="Project">
    <!-- created by ParamML Examples on 26.01.2023 -->
    <O N="Recap1" T="Repeat" S="0" E="3" I="1" CTRL="i" i="0">
        <O N="Recap" T="Repeat" S="0" E="4" I="1" CTRL="j" j="0">
            <O N="Circle" 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>
</O>

In the above example, there are two nested repeat objects. In these objects, when it gets i=0 first, the object inside will repeat from j=0 to j=4 5 times and clone the 3D object within 5 of them.

Later, when the inside repetitions are completed, i = 1 will be and the inside object will be 5 again and will be created once.

Thus, as each i value increases, the j value will increase 5 times. This will continue until the outermost repeat count is completed and the following 3D object will be created.

To view this example in the library, see (https://openbrim.org/platform/?application=inc&author=ParamML_Examples_OpenBrIM+Platform&folder=Core+Objects&obj=objidr5mrcuyfnw8mxik04obc)

Parameters of Repeat Object

Label

Mandatory

Name and Type Attributes

Default Description and Value Attributes

Other Attributes

Control Variable

Yes

N="CTRL"
T="Text"

D="Control Variable: The name of the variable that holds the repeat number as the contained objects repeated."V="0"

Role="Input"

Start

Yes

N="S"

D="Start: Starting repeat number (default 0)"
V="0"

Role="Input"

End

Yes

N="E"

D="End: Ending repeat number (default 9)"V="0"

Role="Input"

Increment

(Each Step)

Yes

N="I"

D="Increment: Increment used to go from start to end (default 1)"V="0"

Role="Input"

  • No labels