# Support functions | OpenStaad Python

> Restraints at nodes — fixed, pinned, roller, inclined, elastic, and mat supports — plus reading support reactions after analysis.

Source: https://www.openstaad.com/docs/support

Every function is a method of the session `s = ops.connect()` (`from openstaad import ops`).

## Create

### CreateElasticFooting

**Description**

Creates the elastic footing.

**Parameters**

- `length` (float): length.
- `width` (float): width.
- `direction` (int): direction.
- `subgrade` (float): subgrade.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.CreateElasticFooting(1.0, 1.0, 1, 1.0)
print(result)
```

### CreateElasticMat

**Description**

Creates the elastic mat.

**Parameters**

- `direction` (int): direction.
- `subgrade` (float): subgrade.
- `printFlag` (bool): print flag.
- `springType` (int): spring type.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.CreateElasticMat(1, 1.0, True, 1)
print(result)
```

### CreateInclinedSupport

**Description**

Creates the inclined support.

**Parameters**

- `inclinedType` (int): inclined type.
- `refType` (int): ref type.
- `refNode` (int): ref node.
- `coord` (list[float]): coord.
- `releaseSpec` (list): release spec.
- `springSpec` (list): spring spec.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.CreateInclinedSupport(1, 1, 1, [1, 2], [1, 2], [1, 2])
print(result)
```

### CreatePlateMat

**Description**

Creates the plate mat.

**Parameters**

- `direction` (int): direction.
- `subgrades` (list[float]): subgrades.
- `printFlag` (bool): print flag.
- `springType` (int): spring type.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.CreatePlateMat(1, [1, 2], True, 1)
print(result)
```

### CreateSupportFixed

**Description**

Creates a fully fixed support definition, ready to be assigned to nodes with
[`AssignSupportToNode`](/docs/support#AssignSupportToNode) or
[`AssignSupportToNodes`](/docs/support#AssignSupportToNodes).

**Parameters**

None.

**Returns**

int: The new support definition's ID.

**Example**

```python
from openstaad import ops

s = ops.connect()
fixed_support = s.CreateSupportFixed()
s.AssignSupportToNode(1, fixed_support)
```

This example creates a fixed support and assigns it to node 1.

### CreateSupportFixedBut

**Description**

Creates the support fixed but.

**Parameters**

- `ReleaseSpec` (list): release spec.
- `SpringSpec` (list): spring spec.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.CreateSupportFixedBut([1, 2], [1, 2])
print(result)
```

### CreateSupportPinned

**Description**

Creates a pinned support definition — free to rotate about the local y and z axes, fixed in every other
degree of freedom — ready to be assigned to nodes with [`AssignSupportToNode`](/docs/support#AssignSupportToNode)
or [`AssignSupportToNodes`](/docs/support#AssignSupportToNodes).

**Parameters**

None.

**Returns**

int: The new support definition's ID.

**Example**

```python
from openstaad import ops

s = ops.connect()
pinned_support = s.CreateSupportPinned()
s.AssignSupportToNode(2, pinned_support)
```

This example creates a pinned support and assigns it to node 2.

## Add

### AddControlDependentRelation

**Description**

Adds the control dependent relation.

**Parameters**

- `control_node` (int): control node.
- `rigid_type` (int): rigid type.
- `fx` (int): fx.
- `fy` (int): fy.
- `fz` (int): fz.
- `mx` (int): mx.
- `my` (int): my.
- `mz` (int): mz.
- `dependent_node_list` (list): dependent node list.

**Returns**

bool: `True` if the call succeeded, `False` otherwise.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.AddControlDependentRelation(1, 1, 1, 1, 1, 1, 1, 1, [1, 2])
print(result)
```

### AddSupportDisplacement

**Description**

Adds the support displacement.

**Parameters**

- `nodeIds` (list): node ids.
- `varDirection` (int): var direction.
- `varDispValue` (float): var disp value.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.AddSupportDisplacement([1, 2], 1, 1.0)
print(result)
```

## Get

### GetCountOfElasticFooting

**Description**

Returns the count of elastic footing.

**Parameters**

None.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetCountOfElasticFooting()
print(result)
```

### GetCountOfElasticMat

**Description**

Returns the count of elastic mat.

**Parameters**

None.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetCountOfElasticMat()
print(result)
```

### GetCountOfPlateMat

**Description**

Returns the count of plate mat.

**Parameters**

None.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetCountOfPlateMat()
print(result)
```

### GetElasticFootingAssignmentList

**Description**

Returns the elastic footing assignment list.

**Parameters**

- `supportid` (int): supportid.

**Returns**

list: A list of integers.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetElasticFootingAssignmentList(1)
print(result)
```

### GetElasticFootingDetail

**Description**

Returns the elastic footing detail.

**Parameters**

- `supportid` (int): supportid.

**Returns**

tuple: A tuple of `(float, float, int, float, int)`.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetElasticFootingDetail(1)
print(result)
```

### GetElasticMatAssignmentList

**Description**

Returns the elastic mat assignment list.

**Parameters**

- `supportid` (int): supportid.

**Returns**

list: A list of integers.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetElasticMatAssignmentList(1)
print(result)
```

### GetElasticMatDetail

**Description**

Returns the elastic mat detail.

**Parameters**

- `supportid` (int): supportid.

**Returns**

tuple: A tuple of `(int, float, bool, int, int)`.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetElasticMatDetail(1)
print(result)
```

### GetMatInfluenceAreas

**Description**

Returns the mat influence areas.

**Parameters**

- `nodelist` (list): nodelist.

**Returns**

tuple: A tuple of `(list[float], list[float], list[float])`.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetMatInfluenceAreas([1, 2])
print(result)
```

### GetPlateMatAssignmentList

**Description**

Returns the plate mat assignment list.

**Parameters**

- `plateMatNo` (int): plate mat no.

**Returns**

list: A list of integers.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetPlateMatAssignmentList(1)
print(result)
```

### GetPlateMatDetail

**Description**

Returns the plate mat detail.

**Parameters**

- `plateMatNo` (int): plate mat no.

**Returns**

tuple: A tuple of `(int, float, float, float, int, int, int)`.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetPlateMatDetail(1)
print(result)
```

### GetPlateMatSupportId

**Description**

Returns the plate mat support Id.

**Parameters**

- `plateMatIndex` (int): plate mat index.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetPlateMatSupportId(1)
print(result)
```

### GetSupportCount

**Description**

Returns the total number of supports defined in the model.

**Parameters**

None.

**Returns**

int: The number of supports.

**Example**

```python
from openstaad import ops

s = ops.connect()
count = s.GetSupportCount()
print(f"Number of supports: {count}")
```

### GetSupportInformation

**Description**

Returns the support information.

**Parameters**

- `nodeNo` (int): node no.

**Returns**

tuple: A tuple of `(raw, list[int], list[float])`.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetSupportInformation(1)
print(result)
```

### GetSupportInformationEx

**Description**

Returns the support information ex.

**Parameters**

- `nodeNo` (int): node no.

**Returns**

tuple: A tuple of `(int, int, list[int], list[float])`.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetSupportInformationEx(1)
print(result)
```

### GetSupportName

**Description**

Returns the support name.

**Parameters**

- `supportNo` (int): support no.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetSupportName(1)
print(result)
```

### GetSupportNodes

**Description**

Returns the list of nodes that have a support assigned.

**Parameters**

None.

**Returns**

list: A list of node numbers with a support assigned.

**Example**

```python
from openstaad import ops

s = ops.connect()
nodes = s.GetSupportNodes()
print(nodes)
```

### GetSupportReactions

**Description**

Returns the support reactions.

**Parameters**

- `nodeNo` (int): node no.
- `loadCaseNo` (int): load case no.

**Returns**

list: A list of numbers (floats).

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetSupportReactions(1, 1)
print(result)
```

### GetSupportType

**Description**

Returns the support type assigned to a node.

**Parameters**

- `nodeNo` (int): Number of the node to query.

**Returns**

int: The support type code for the node (see the STAAD.Pro Technical Reference Manual for the type-code mapping). For the release/spring breakdown of a support, see [`GetSupportInformation`](/docs/support#GetSupportInformation).

**Example**

```python
from openstaad import ops

s = ops.connect()
support_type = s.GetSupportType(3)
print(f"Support type at node 3: {support_type}")
```

### GetSupportUniqueID

**Description**

Returns the support unique ID.

**Parameters**

- `supportNo` (int): support no.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.GetSupportUniqueID(1)
print(result)
```

## Set/Assign

### AssignSupportToEntityList

**Description**

Assigns the support to entity list.

**Parameters**

- `supportid` (int): supportid.
- `entitylist` (list[int]): entitylist.

**Returns**

bool: `True` if the call succeeded, `False` otherwise.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.AssignSupportToEntityList(1, [1, 2])
print(result)
```

### AssignSupportToNode

**Description**

Assigns a previously created support definition to a **single** node. For several nodes at once,
use [`AssignSupportToNodes`](/docs/support#AssignSupportToNodes).

**Parameters**

- `NodeID` (int): A single node number. Any integer type is accepted, including NumPy integers.
- `SupportID` (int): ID of a support definition, as returned by [`CreateSupportFixed`](/docs/support#CreateSupportFixed), [`CreateSupportPinned`](/docs/support#CreateSupportPinned), or a similar `Create*Support*` function.

**Returns**

bool: `True` if STAAD.Pro accepted the assignment.

**Raises**

`TypeError` if `NodeID` is not a single integer. Lists, tuples and arrays are rejected with a
message pointing to [`AssignSupportToNodes`](/docs/support#AssignSupportToNodes).

**Example**

```python
from openstaad import ops

s = ops.connect()
pinned = s.CreateSupportPinned()
s.AssignSupportToNode(5, pinned)
```

This example creates a pinned support and assigns it to node 5.

**Why collections are rejected**

The underlying OpenSTAAD COM method processes one node per call. Passing it an array assigns only
the first element and reports no error, which produces a model that analyzes cleanly with the wrong
boundary conditions. This function therefore fails loudly instead:

```python
s.AssignSupportToNode([5, 6, 7, 8], pinned)
# TypeError: NodeID expects a single integer; for several use AssignSupportToNodes()
```

See [`AssignSupportToNodes`](/docs/support#AssignSupportToNodes) for the multiple-node case.

### AssignSupportToNodes

**Description**

Assigns a previously created support definition to **one or more** nodes.

**Parameters**

- `NodeIDs` (int or Iterable[int]): A single node number, or any collection of them — `list`, `tuple`, `range`, generator or NumPy array. Integer types include NumPy integers.
- `SupportID` (int): ID of a support definition, as returned by [`CreateSupportFixed`](/docs/support#CreateSupportFixed), [`CreateSupportPinned`](/docs/support#CreateSupportPinned), or a similar `Create*Support*` function.

**Returns**

bool: `True` if **every** assignment was accepted.

**Raises**

`TypeError` if `NodeIDs` is not an integer or a collection of integers. The message identifies the
offending element by index, e.g. `NodeIDs[2] expects an integer, not str`.

**Example**

```python
from openstaad import ops

s = ops.connect()
pinned = s.CreateSupportPinned()

s.AssignSupportToNodes([5, 6, 7, 8], pinned)
s.AssignSupportToNodes(range(5, 9), pinned)   # equivalent
s.AssignSupportToNodes(5, pinned)             # a single node also works
```

**Note**

This function is not part of the official OpenSTAAD API. It exists because the COM method behind it
assigns one node per call; see [`AssignSupportToNode`](/docs/support#AssignSupportToNode).

### SetSupportUniqueID

**Description**

Sets the support unique ID.

**Parameters**

- `supportNo` (int): support no.
- `guid` (str): guid.

**Returns**

None: This function does not return a value.

**Example**

```python
from openstaad import ops

s = ops.connect()
s.SetSupportUniqueID(1, "value")
```

## Remove

### RemoveElasticFooting

**Description**

Removes the elastic footing.

**Parameters**

- `supportid` (int): supportid.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.RemoveElasticFooting(1)
print(result)
```

### RemoveElasticFootingFromNode

**Description**

Removes the elastic footing from node.

**Parameters**

- `nodeid` (int): nodeid.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.RemoveElasticFootingFromNode(1)
print(result)
```

### RemoveElasticMat

**Description**

Removes the elastic mat.

**Parameters**

- `supportid` (int): supportid.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.RemoveElasticMat(1)
print(result)
```

### RemoveElasticMatFromNode

**Description**

Removes the elastic mat from node.

**Parameters**

- `nodeid` (int): nodeid.

**Returns**

bool: `True` if the call succeeded, `False` otherwise.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.RemoveElasticMatFromNode(1)
print(result)
```

### RemovePlateMat

**Description**

Removes the plate mat.

**Parameters**

- `supportId` (int): support Id.

**Returns**

bool: `True` if the call succeeded, `False` otherwise.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.RemovePlateMat(1)
print(result)
```

### RemovePlateMatFromPlate

**Description**

Removes the plate mat from plate.

**Parameters**

- `plateNo` (int): plate no.

**Returns**

bool: `True` if the call succeeded, `False` otherwise.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.RemovePlateMatFromPlate(1)
print(result)
```

### RemoveSupportFromNode

**Description**

Removes the support from node.

**Parameters**

- `NodeIDs` (list): node i ds.

**Returns**

None: This function does not return a value.

**Example**

```python
from openstaad import ops

s = ops.connect()
s.RemoveSupportFromNode([1, 2])
```

## Delete

### DeleteAllControlDependentRelations

**Description**

Deletes the all control dependent relations.

**Parameters**

None.

**Returns**

bool: `True` if the call succeeded, `False` otherwise.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.DeleteAllControlDependentRelations()
print(result)
```

### DeleteSupport

**Description**

Deletes the support.

**Parameters**

- `supportNo` (int): support no.

**Returns**

raw: The raw return value from the underlying OpenSTAAD COM call. Refer to the official Bentley OpenSTAAD API reference for this method's exact return semantics.

**Example**

```python
from openstaad import ops

s = ops.connect()
result = s.DeleteSupport(1)
print(result)
```
