# Line

In OpenBrIM, 3D representations can be defined using the following objects:

* Surface
* Volume
* Line

Each Line object must include:

* A first Point object
* A second Point object
* At least one Section/Shape/Surface object

Given two points and a cross section, OpenBrIM can render the line with the specified section profile. For polylines, multiple points can be specified, and a Line object can contain multiple Section objects if multiple points are defined in the line.

To create a line, two "point" objects are required that define the start and end of the line. These points are combined using the "line" object to express the line.

**Syntax:**

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

**Example:**

```xml
<O N="LineObject1" T="Project" Category="3D Geometric Objects">
    <!-- created by ParamML Examples on 31.01.2023 -->
    <P N="height" V="40" Role="Input" />
    <P N="width" V="2" Role="Input" />
    <P N="depth" V="4" Role="Input" />
    <O N="Column3D" T="Line">
        <O T="Point" X="0" Y="0" Z="0" />
        <O T="Point" X="0" Y="0" Z="height" />
        <O N="Section" 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>
```

![](https://openbrim.atlassian.net/wiki/download/attachments/2158362646/image-20230131-120958.png?api=v2) The Line object is used in conjunction with the Section and Shape objects. To view this example in the library, see (<https://openbrim.org/platform/?application=inc&author=ParamML_Examples_OpenBrIM+Platform&folder=3D+Geometric+Objects&obj=objidmad1yypvle6g3jr892mg4>)

```xml
<O N="LineObject2" T="Project" Category="3D Geometric Objects">
    <!-- created by ParamML Examples on 31.01.2023 -->
    <P N="height" V="100" />
    <P N="width" V="10" />
    <P N="depth" V="2" />
    <P N="step" V="50" />
    <O N="TShape1" 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 N="Column3D_1" T="Line">
        <O T="Point" X="0" Y="0" Z="0" />
        <O T="Point" X="0" Y="step" Z="height" />
        <O N="Section_1" T="Section">
            <O N="Shape1" T="Shape" Extends="TShape1" Override="1" />
        </O>
    </O>
    <O N="Column3D_2" T="Line">
        <O T="Point" X="0" Y="step" Z="height" />
        <O T="Point" X="0" Y="step*2" Z="0" />
        <O N="Section_2" T="Section">
            <O N="Shape2" T="Shape" Extends="TShape1" Override="1" />
        </O>
    </O>
    <O N="Column3D_3" T="Line">
        <O T="Point" X="0" Y="step*2" Z="0" />
        <O T="Point" X="0" Y="" Z="0" />
        <O N="Section_2" T="Section">
            <O N="Shape2" T="Shape" Extends="TShape1" Override="1" />
        </O>
    </O>
</O>
```

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

**Example:**

```xml
<O N="LineObject3" T="Project" Category="3D Geometric Objects">
    <!-- created by ParamML Examples on 31.01.2023 -->
    <P N="height" V="40" />
    <P N="width" V="2" />
    <P N="depth" V="4" />
    <P N="dx" V="8" />
    <O N="Column3D" T="Line">
        <O T="Point" X="0" Y="0" Z="0" />
        <O T="Point" X="0" Y="0" Z="height" />
        <O 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 T="Shape">
                <O T="Point" X="-width/4+dx" Y="-depth" />
                <O T="Point" X="-width/4+dx" Y="depth" />
                <O T="Point" X="width*2+dx" Y="depth" />
            </O>
        </O>
    </O>
</O>
```

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

**Example:**

```xml
<O N="LineObject4" T="Project" Category="3D Geometric Objects">
    <!-- created by ParamML Examples on 31.01.2023 -->
    <O T="Line">
        <P N="DrawFaceA" V="0" />
        <P N="DrawFaceB" V="0" />
        <P N="DrawFaceABorder" V="1" />
        <P N="DrawFaceBBorder" V="1" />
        <O T="Point" X="0" Y="0" Z="0" />
        <O T="Point" X="0" Y="0" Z="9" />
        <O T="Circle">
            <P N="Radius" V="10" />
        </O>
    </O>
</O>
```

The Line object is used in conjunction with the "Draw Face" and "Draw Border" parameters. ![](https://openbrim.atlassian.net/wiki/download/attachments/2158362646/image-20230131-134259.png?api=v2) To view this example in the library, see (<https://openbrim.org/platform/?application=inc&author=ParamML_Examples_OpenBrIM+Platform&obj=objidf7fzui9itxa2c3q9b5ufq1&folder=3D+Geometric+Objects>)

**Parameters:**

| #  | Label                     | Mandatory | Name and Type Attributes    | Default Description and Value Attributes                                                                                | Other Attributes                     |
| -- | ------------------------- | --------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| 1  | Curved                    | No        | N="IsCurved"                | D="Curved?: Does this line curve along alignment definitions. \[Yes=1/No=0]" V="0"                                      | Role="Input"                         |
| 2  | Skew About X @ Start      | No        | N="StartSkewX"              | D="Skew About X @ Start: The skew angle at the start of the line about X axis of the cross-section." V="0"              | Role="Input" UT="Angle" UC="Section" |
| 3  | Skew About Y @ Start      | No        | N="StartSkewY"              | D="Skew About Y @ Start: The skew angle at the start of the line about Y axis of the cross-section." V="0"              | Role="Input" UT="Angle" UC="Section" |
| 4  | Skew About X @ End        | No        | N="EndSkewX"                | D="Skew About X @ End: The skew angle at the end of the line about X axis of the cross-section." V="0"                  | Role="Input" UT="Angle" UC="Section" |
| 5  | Skew About Y @ End        | No        | N="EndSkewY"                | D="Skew About Y @ End: The skew angle at the end of the line about Y axis of the cross-section." V="0"                  | Role="Input" UT="Angle" UC="Section" |
| 6  | Beta Angle                | No        | N="BetaAngle"               | D="Beta Angle: The orientation angle to rotate the cross-section about the length of the line." V="0"                   | Role="Input" UT="Angle" UC="Section" |
| 7  | Section                   | No        | N="Section" T="Section"     | D="Section: The cross-section extruded along the length of the line's length." V=""                                     | Role="Input"                         |
| 8  | Alignment                 | No        | N="Alignment" T="Alignment" | D="Alignment: The alignment assignment of the object." V=""                                                             | Role="Input"                         |
| 9  | Draw Face A               | No        | N="DrawFaceA"               | D="Draw Face A?: Should graphics display face A of this volume? \[Yes=1/No=0]" V="1"                                    | Role="Input"                         |
| 10 | Draw Face B               | No        | N="DrawFaceB"               | D="Draw Face B?: Should graphics display face B of this volume? \[Yes=1/No=0]" V="1"                                    | Role="Input"                         |
| 11 | Draw Border               | No        | N="DrawBorder"              | D="Draw Border?: Should graphics display a border along the lines connecting the faces? \[Yes=1/No=0]" V="1"            | Role="Input"                         |
| 12 | Draw Border Around Face A | No        | N="DrawFaceABorder"         | D="Draw Border Around Face A?: Should graphics display a border around face A? \[Yes=1/No=0]" V="1"                     | Role="Input"                         |
| 13 | Draw Border Around Face B | No        | N="DrawFaceBBorder"         | D="Draw Border Around Face B?: Should graphics display a border around face B? \[Yes=1/No=0]" V="1"                     | Role="Input"                         |
| 14 | PolyLine                  | No        | N="PolyLine"                | D="Draw multiple lines? Multiple points can be placed, a line is formed between consecutive points \[Yes=1/No=0]" V="1" | Role="Input"                         |
