Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
<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:

Code Block
languagexml
 <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.

Image Added

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:

Code Block
<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.

Image Added

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"