> For the complete documentation index, see [llms.txt](https://docs.openbrim.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openbrim.org/developers/paramml-developer-guide/core-objects/base-core-object/group.md).

# Group

Group objects are used for organizational purposes and to group related parameters or other logically related objects together. This allows for better organization and management of the objects within a project.

Additionally, applications that use ParamML and OpenBrIM objects can also utilize Group objects to store custom data. Group objects can be nested within all types of objects, providing a flexible and organized way to manage data within a project.

### Syntax

```
<O T="Group">
.....
.....
.....
</O>
```

**Example:** *Simple group object.*

We can group various objects created as volumes under a single title called "volume" using the Group object. This allows us to move or manipulate all of the volumes at the same time, such as by shifting their position or placing them on the same route in a single move. This can be useful in situations where multiple similar objects need to be managed or manipulated together.

```xml
<O N="Volume_Group" T="Project" Category="Core Objects">
    <!-- created by ParamML Examples on 26.01.2023 -->
    <O N="Volume Object" T="Group" X="80" Alingment="Straight" AlignH="None" AlignT="None" AlignV="None">
        <O N="Volume1" T="Volume">
            <P N="Opacity" V="0.5" />
            <O T="Surface">
                <O T="Point" Y="-5" Z="0" />
                <O T="Point" Y="5" Z="0" />
                <O T="Point" Y="5" Z="10" />
                <O T="Point" Y="-5" Z="10" />
            </O>
            <O T="Surface" X="100">
                <O T="Point" Y="-5" Z="0" />
                <O T="Point" Y="5" Z="0" />
                <O T="Point" Y="5" Z="10" />
                <O T="Point" Y="-5" Z="10" />
            </O>
        </O>
        <O N="Volume2" T="Volume">
            <P N="Opacity" V="0.7" />
            <O T="Surface" X="150">
                <O T="Point" Y="-5" Z="0" />
                <O T="Point" Y="5" Z="0" />
                <O T="Point" Y="5" Z="10" />
                <O T="Point" Y="-5" Z="10" />
            </O>
            <O T="Surface" X="250">
                <O T="Point" Y="-5" Z="0" />
                <O T="Point" Y="5" Z="0" />
                <O T="Point" Y="5" Z="10" />
                <O T="Point" Y="-5" Z="10" />
            </O>
        </O>
    </O>
</O>
```

![](https://openbrim.atlassian.net/wiki/download/attachments/2155085885/image-20230131-081838.png?api=v2) To view this example in the library, see (<https://openbrim.org/platform/?application=inc&author=ParamML_Examples_OpenBrIM+Platform&folder=Core+Objects&obj=objidjvbl1f51lproyl9yftagn>)

**Example:** In this case, the parameters are organized and grouped under the **Groups** object

```xml
<O N="Group_Example1" T="Project" Category="Core Objects">
    <!-- created by ParamML Examples on 26.01.2023 -->
    <O N="Parameters" T="Group">
        <P N="height" V="20" />
        <P N="width" V="1" />
        <P N="depth" V="2" />
    </O>
    <O N="Column3D" T="Surface">
        <P N="Thickness" V="height" />
        <O T="Point" X="0" Y="0" Z="0" />
        <O T="Point" X="width" Y="0" Z="0" />
        <O T="Point" X="width" Y="depth" Z="0" />
        <O T="Point" X="0" Y="depth" Z="0" />
    </O>
</O>
```

As demonstrated in the code, the parameters are organized and grouped together under a "Group" object. This allows for better organization and management of the parameters within the project, making it easier to access and manipulate the parameters as needed. ![](https://openbrim.atlassian.net/wiki/download/attachments/2155085885/image-20230131-082001.png?api=v2) To view this example in the library, see (<https://openbrim.org/platform/?application=inc&author=ParamML_Examples_OpenBrIM+Platform&folder=Core+Objects&obj=objid28h88drjowaj081pbecbkcfw>)

**Example:** Group object with User “Input” parameter.

```xml
<O N="Group_Example2" T="Project" Category="Core Objects">
    <!-- created by ParamML Examples on 26.01.2023 -->
    <O N="Inputs" T="Group">
        <P N="height" V="240" Role="Input" Category="Inputs" />
        <P N="width" V="12" Role="Input" Category="Inputs" />
        <P N="depth" V="24" Role="Input" Category="Inputs" />
    </O>
    <O N="Column3D" T="Surface">
        <P N="Thickness" V="height" />
        <O T="Point" X="0" Y="0" Z="0" />
        <O T="Point" X="width" Y="0" Z="0" />
        <O T="Point" X="width" Y="depth" Z="0" />
        <O T="Point" X="0" Y="depth" Z="0" />
    </O>
</O>
```

![](https://openbrim.atlassian.net/wiki/download/attachments/2155085885/image-20230127-074935.png?api=v2) You can see the component of the Group Object indicated by the red arrow under "Debug Trace”

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

**Example**: Group Object with Guard Parameter\*.\*

```
<O N="Group_Example3" T="Project" Category="Core Objects">
    <!-- created by ParamML Examples on 26.01.2023 -->
    <O N="Inputs" T="Group">
        <P N="height" V="240" Role="Input" Category="Inputs" />
        <P N="width" V="12" Role="Input" Category="Inputs" />
        <P N="depth" V="12" Role="Input" Category="Inputs" />
        <P N="type" V="2" Role="Input" Category="Inputs" />
    </O>
    <O N="Rectangular Column" T="Line">
        <P N="Guard" V="type .EQ. 1" />
        <O T="Point" X="0" Y="0" Z="0" />
        <O T="Point" X="0" Y="0" Z="height" />
        <O N="Rectangular" T="Section">
            <O T="Shape">
                <O T="Point" X="-width/2" Y="-depth/2" />
                <O T="Point" X="-width/2" Y="depth/2" />
                <O T="Point" X="width/2" Y="depth/2" />
                <O T="Point" X="width/2" Y="-depth/2" />
            </O>
        </O>
    </O>
    <O N="Circular Column" T="Line">
        <P N="Guard" V="type .EQ. 2" />
        <O T="Point" X="0" Y="0" Z="0" />
        <O T="Point" X="0" Y="0" Z="height" />
        <O N="Circular" T="Section">
            <O T="Circle" Radius="width/2" />
        </O>
    </O>
</O>
```

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

**Example:** Group Object with Enumeration

```
<O N="Group_Example4" T="Project" Category="Core Objects">
    <!-- created by ParamML Examples on 26.01.2023 -->
    <O T="Group">
        <P N="RECTANGULAR" V="1" />
        <P N="CIRCULAR" V="2" />
    </O>
    <O N="Inputs" T="Group">
        <P N="height" V="50" />
        <P N="width" V="1" />
        <P N="depth" V="1" />
        <P N="type" V="RECTANGULAR" />
    </O>
    <O N="Rectangular Column" T="Line">
        <P N="Guard" V="type .EQ. RECTANGULAR" />
        <O T="Point" X="0" Y="0" Z="0" />
        <O T="Point" X="0" Y="0" Z="height" />
        <O N="Rectangular" T="Section">
            <O T="Shape">
                <O T="Point" X="-width/2" Y="-depth/2" />
                <O T="Point" X="-width/2" Y="depth/2" />
                <O T="Point" X="width/2" Y="depth/2" />
                <O T="Point" X="width/2" Y="-depth/2" />
            </O>
        </O>
    </O>
    <O N="Circular Column" T="Line">
        <P N="Guard" V="type .EQ. CIRCULAR" />
        <O T="Point" X="0" Y="0" Z="0" />
        <O T="Point" X="0" Y="0" Z="height" />
        <O N="Circular" T="Section">
            <O T="Circle" Radius="width/2" />
        </O>
    </O>
</O>
```

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.openbrim.org/developers/paramml-developer-guide/core-objects/base-core-object/group.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
