### Configure Solibri Installation Path in Maven
Source: https://solibri.github.io/Developer-Platform/9.10.3/getting-started
This XML snippet shows how to configure the Solibri installation path within the 'pom.xml' file. It includes separate configurations for Windows and macOS operating systems, essential for building and deploying Solibri rules.
```xml
C:/Program Files/Solibri/Solibri
/Applications/Solibri
```
--------------------------------
### MVector3d Creation Methods
Source: https://solibri.github.io/Developer-Platform/24.9.0/javadoc/com/solibri/geometry/linearalgebra/MVector3d
Provides static methods for creating new MVector3d instances with various initializations.
```APIDOC
## MVector3d Creation Methods
### create
static MVector3d create()
Returns a new instance with all components set to zero.
**Returns:**
a new zero vector
**Since:**
9.10.2
---
### create
static MVector3d create(double xyz)
Returns a new instance with all components set to the given value.
**Parameters:**
- **xyz** (double) - the value set to all components of the returned vector
**Returns:**
a new instance with all components set to the given value
**Since:**
9.10.2
---
### create
static MVector3d create(Vector3d vector)
Returns a new instance with the same component values as in the given vector.
**Parameters:**
- **vector** (Vector3d) - the vector used for setting the values of the returned vector
**Returns:**
a new instance with the same component values as in the given vector
**Since:**
9.10.2
---
### create
static MVector3d create(double x, double y, double z)
Returns a new instance with the given component values.
**Parameters:**
- **x** (double) - the X component value
- **y** (double) - the Y component value
- **z** (double) - the Z component value
**Returns:**
a vector with the given component values
**Since:**
9.10.2
```
--------------------------------
### Configure Solibri Installation Path in Maven
Source: https://solibri.github.io/Developer-Platform/9.10.2/getting-started
Shows how to configure the Solibri installation path within the pom.xml file for Maven builds. This is crucial for ensuring the generated rule JAR is correctly placed in the Solibri installation directory.
```xml
C:/Program Files/Solibri/Solibri
/Applications/Solibri
```
--------------------------------
### MLine3d API
Source: https://solibri.github.io/Developer-Platform/9.13.7/javadoc/com/solibri/geometry/primitive3d/MLine3d
This section details the methods available for the MLine3d interface, including creation, setting start/end points, and setting both points.
```APIDOC
## MLine3d Interface
### Description
Interface for handling lines in 3D.
### Methods
#### `static MLine3d create(Vector3d firstPoint, Vector3d secondPoint)`
Creates a new instance of MLine3d.
- **Parameters**
- `firstPoint` (Vector3d) - The first point of the line.
- `secondPoint` (Vector3d) - The second point of the line.
- **Returns**
- `MLine3d` - A new MLine3d instance.
- **Since**
- 9.10.2
#### `void setStartPoint(Vector3d startPoint)`
Sets the starting point of this line.
- **Parameters**
- `startPoint` (Vector3d) - The value to set as the starting point.
- **Since**
- 9.10.2
#### `void setEndPoint(Vector3d endPoint)`
Sets the end point of this line.
- **Parameters**
- `endPoint` (Vector3d) - The value to set as the end point.
- **Since**
- 9.10.2
#### `void set(Vector3d startPoint, Vector3d endPoint)`
Sets the start and end points of this line.
- **Parameters**
- `startPoint` (Vector3d) - The value to set as the starting point.
- `endPoint` (Vector3d) - The value to set as the end point.
- **Since**
- 9.10.2
### Inherited Methods from `Line3d`
- `distance`
- `distanceSqr`
- `getDirection`
- `getFirstPoint`
- `getIntersectionPoint`
- `getSecondPoint`
- `intersects`
```
--------------------------------
### Configure Solibri Installation Path (XML)
Source: https://solibri.github.io/Developer-Platform/24.12.0/getting-started
This snippet shows how to configure the Solibri installation path within the pom.xml file. It provides separate configurations for Windows and macOS, ensuring the built jar file is correctly placed in the Solibri installation directory for Solibri Office to recognize the new rule.
```xml
C:/Program Files/Solibri/Solibri
/Applications/Solibri
```
--------------------------------
### MVector3d Creation Methods
Source: https://solibri.github.io/Developer-Platform/9.13.1/javadoc/com/solibri/geometry/linearalgebra/MVector3d
Methods for creating new MVector3d instances with various initializations.
```APIDOC
## MVector3d Creation
### create()
**Description**: Returns a new instance with all components set to zero.
**Method**: static
**Endpoint**: N/A (Class method)
**Parameters**: None
**Response**:
#### Success Response (200)
- **MVector3d** (object) - A new zero vector.
#### Response Example
```json
{
"x": 0.0,
"y": 0.0,
"z": 0.0
}
```
### create(double xyz)
**Description**: Returns a new instance with all components set to the given value.
**Method**: static
**Endpoint**: N/A (Class method)
**Parameters**:
#### Path Parameters
- **xyz** (double) - Required - The value to set for all components.
**Response**:
#### Success Response (200)
- **MVector3d** (object) - A new instance with all components set to the given value.
#### Response Example
```json
{
"x": xyz,
"y": xyz,
"z": xyz
}
```
### create(Vector3d vector)
**Description**: Returns a new instance with the same component values as in the given vector.
**Method**: static
**Endpoint**: N/A (Class method)
**Parameters**:
#### Path Parameters
- **vector** (Vector3d) - Required - The vector used for setting the values of the returned vector.
**Response**:
#### Success Response (200)
- **MVector3d** (object) - A new instance with the same component values as the input vector.
#### Response Example
```json
{
"x": vector.x,
"y": vector.y,
"z": vector.z
}
```
### create(double x, double y, double z)
**Description**: Returns a new instance with the given component values.
**Method**: static
**Endpoint**: N/A (Class method)
**Parameters**:
#### Path Parameters
- **x** (double) - Required - The X component value.
- **y** (double) - Required - The Y component value.
- **z** (double) - Required - The Z component value.
**Response**:
#### Success Response (200)
- **MVector3d** (object) - A vector with the given component values.
#### Response Example
```json
{
"x": x,
"y": y,
"z": z
}
```
```
--------------------------------
### Implement Check Method in Java
Source: https://solibri.github.io/Developer-Platform/latest/getting-started
Provides an example of the 'check' method implementation for a Solibri API rule. This method processes individual components, creates results, and associates them with components.
```Java
@Override
public void check(Component component, Checking context) {
String key = component.getUUID().toString();
Result result = context.getResultService().createResult(key);
String stringParameterValue = stringParameter.getValue();
result.setName(stringParameterValue);
result.setDescription("Description");
result.addInvolvedComponent(component);
}
```
--------------------------------
### Vector3d Creation Methods
Source: https://solibri.github.io/Developer-Platform/24.5.0/javadoc/com/solibri/geometry/linearalgebra/MVector3d
Documentation for static methods used to create new Vector3d instances.
```APIDOC
## Static MVector3d create()
### Description
Returns a new instance with all components set to zero.
### Method
`static MVector3d create()`
### Endpoint
N/A (Static method)
### Parameters
None
### Request Example
```json
{
"description": "Creating a zero vector."
}
```
### Response
#### Success Response (MVector3d)
- **Instance** (MVector3d) - A new zero vector.
#### Response Example
```json
{
"vector": {
"x": 0.0,
"y": 0.0,
"z": 0.0
}
}
```
## Static MVector3d create(double xyz)
### Description
Returns a new instance with all components set to the given value.
### Method
`static MVector3d create(double xyz)`
### Endpoint
N/A (Static method)
### Parameters
#### Path Parameters
- **xyz** (double) - Required - The value to set for all components of the returned vector.
### Request Example
```json
{
"description": "Creating a vector with all components set to 5.0.",
"xyz": 5.0
}
```
### Response
#### Success Response (MVector3d)
- **Instance** (MVector3d) - A new vector with all components set to the provided value.
#### Response Example
```json
{
"vector": {
"x": 5.0,
"y": 5.0,
"z": 5.0
}
}
```
## Static MVector3d create(Vector3d vector)
### Description
Returns a new instance with the same component values as in the given vector.
### Method
`static MVector3d create(Vector3d vector)`
### Endpoint
N/A (Static method)
### Parameters
#### Request Body
- **vector** (Vector3d) - Required - The vector used for setting the values of the returned vector.
### Request Example
```json
{
"description": "Creating a vector by copying another vector.",
"vector": {
"x": 1.0,
"y": 2.0,
"z": 3.0
}
}
```
### Response
#### Success Response (MVector3d)
- **Instance** (MVector3d) - A new vector with the same component values as the input vector.
#### Response Example
```json
{
"vector": {
"x": 1.0,
"y": 2.0,
"z": 3.0
}
}
```
## Static MVector3d create(double x, double y, double z)
### Description
Returns a new instance with the given component values.
### Method
`static MVector3d create(double x, double y, double z)`
### Endpoint
N/A (Static method)
### Parameters
#### Path Parameters
- **x** (double) - Required - The X component value.
- **y** (double) - Required - The Y component value.
- **z** (double) - Required - The Z component value.
### Request Example
```json
{
"description": "Creating a vector with specific x, y, and z values.",
"x": 1.5,
"y": -2.5,
"z": 0.5
}
```
### Response
#### Success Response (MVector3d)
- **Instance** (MVector3d) - A vector with the given component values.
#### Response Example
```json
{
"vector": {
"x": 1.5,
"y": -2.5,
"z": 0.5
}
}
```
## Static List to3dVectors(List extends Vector2d> vectors)
### Description
Returns a list of 3-dimensional vectors with the X and Y components from the given vectors and the Z component set to 0. The order of the vectors is preserved.
### Method
`static List to3dVectors(List extends Vector2d> vectors)`
### Endpoint
N/A (Static method)
### Parameters
#### Request Body
- **vectors** (List) - Required - Vectors in the XY-plane that are used for setting the X and Y components of the returned vectors.
### Request Example
```json
{
"description": "Converting a list of 2D vectors to 3D vectors.",
"vectors": [
{"x": 1.0, "y": 2.0},
{"x": 3.0, "y": 4.0}
]
}
```
### Response
#### Success Response (List)
- **List** (List) - A list of 3-dimensional vectors with X and Y components from the input and Z set to 0.
#### Response Example
```json
{
"vectors": [
{"x": 1.0, "y": 2.0, "z": 0.0},
{"x": 3.0, "y": 4.0, "z": 0.0}
]
}
```
```
--------------------------------
### Implement Solibri Rule Check Method
Source: https://solibri.github.io/Developer-Platform/9.10.2/getting-started
Provides an example implementation of the 'check' method in a Solibri rule. This method processes individual components, creates results, and associates them with the component.
```java
@Override
public void check(Component component, Checking context) {
String key = component.getUUID().toString();
Result result = context.getResultService().createResult(key);
String stringParameterValue = stringParameter.getValue();
result.setName(stringParameterValue);
result.setDescription("Description");
result.addInvolvedComponent(component);
}
```
--------------------------------
### Vector3d Creation Methods
Source: https://solibri.github.io/Developer-Platform/24.12.0/javadoc/com/solibri/geometry/linearalgebra/MVector3d
Provides static methods for creating new Vector3d instances with various initializations.
```APIDOC
## Static Methods for Vector3d Creation
### create()
- **Description**: Returns a new instance with all components set to zero.
- **Method**: static
- **Returns**: `MVector3d` - A new zero vector.
- **Since**: 9.10.2
### create(double xyz)
- **Description**: Returns a new instance with all components set to the given value.
- **Parameters**:
- `xyz` (double) - The value to set for all components.
- **Method**: static
- **Returns**: `MVector3d` - A new instance with all components set to the given value.
- **Since**: 9.10.2
### create(Vector3d vector)
- **Description**: Returns a new instance with the same component values as the given vector.
- **Parameters**:
- `vector` (Vector3d) - The vector used for setting the values.
- **Method**: static
- **Returns**: `MVector3d` - A new instance with the same component values.
- **Since**: 9.10.2
### create(double x, double y, double z)
- **Description**: Returns a new instance with the given component values.
- **Parameters**:
- `x` (double) - The X component value.
- `y` (double) - The Y component value.
- `z` (double) - The Z component value.
- **Method**: static
- **Returns**: `MVector3d` - A vector with the given component values.
- **Since**: 9.10.2
### to3dVectors(List extends Vector2d> vectors)
- **Description**: Returns a list of 3-dimensional vectors with X and Y components from the given 2D vectors and Z component set to 0. Preserves the order.
- **Parameters**:
- `vectors` (List extends Vector2d>) - Vectors in the XY-plane to set X and Y components.
- **Method**: static
- **Returns**: `List` - A list of 3D vectors.
- **Since**: 9.10.2
```
--------------------------------
### Model Component by Guid
Source: https://solibri.github.io/Developer-Platform/9.13.3/javadoc/index-all
Gets a model component by its IFC GUID.
```APIDOC
## getComponentByGuid
### Description
Gets the component with the given IFC GUID.
### Method
GET
### Endpoint
`/api/model/component/guid`
### Parameters
#### Query Parameters
- **guid** (string) - Required - The IFC GUID of the component.
### Response
#### Success Response (200)
- **component** (object) - The component object.
- **id** (string) - The unique identifier of the component.
- **name** (string) - The name of the component.
- **type** (string) - The type of the component.
#### Response Example
```json
{
"component": {
"id": "comp-67890",
"name": "Slab_002",
"type": "IfcSlab"
}
}
```
```
--------------------------------
### MLine3d Interface Documentation
Source: https://solibri.github.io/Developer-Platform/9.13.2/javadoc/com/solibri/geometry/primitive3d/MLine3d
This section details the methods available for the MLine3d interface, including creating new instances and setting line endpoints.
```APIDOC
## MLine3d Interface
### Description
Interface for handling lines in 3D space. It extends the `Line3d` interface and provides methods for creating and modifying 3D lines.
### Methods
#### `create(Vector3d firstPoint, Vector3d secondPoint)`
### Description
Creates a new MLine3d instance.
### Method
`static MLine3d`
### Endpoint
N/A (This is a static factory method within the interface)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```java
MLine3d newLine = MLine3d.create(new Vector3d(0,0,0), new Vector3d(1,1,1));
```
### Response
#### Success Response (200)
- **MLine3d** (MLine3d) - A new instance of MLine3d.
#### Response Example
```java
// Returns a MLine3d object representing the line from (0,0,0) to (1,1,1)
```
#### `setStartPoint(Vector3d startPoint)`
### Description
Sets the starting point of this line.
### Method
`void`
### Endpoint
N/A (Instance method)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```java
Vector3d newStart = new Vector3d(2, 2, 2);
myLine.setStartPoint(newStart);
```
### Response
#### Success Response (200)
No content is returned upon successful execution.
#### Response Example
```
// No response body
```
#### `setEndPoint(Vector3d endPoint)`
### Description
Sets the end point of this line.
### Method
`void`
### Endpoint
N/A (Instance method)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```java
Vector3d newEnd = new Vector3d(3, 3, 3);
myLine.setEndPoint(newEnd);
```
### Response
#### Success Response (200)
No content is returned upon successful execution.
#### Response Example
```
// No response body
```
#### `set(Vector3d startPoint, Vector3d endPoint)`
### Description
Sets the start and end points of this line.
### Method
`void`
### Endpoint
N/A (Instance method)
### Parameters
#### Path Parameters
None
#### Query Parameters
None
#### Request Body
None
### Request Example
```java
Vector3d newStart = new Vector3d(4, 4, 4);
Vector3d newEnd = new Vector3d(5, 5, 5);
myLine.set(newStart, newEnd);
```
### Response
#### Success Response (200)
No content is returned upon successful execution.
#### Response Example
```
// No response body
```
### Inherited Methods from `Line3d`
- `distance`
- `distanceSqr`
- `getDirection`
- `getFirstPoint`
- `getIntersectionPoint`
- `getSecondPoint`
- `intersects`
```
--------------------------------
### ModelComponent By Guid API
Source: https://solibri.github.io/Developer-Platform/9.13.6/javadoc/index-all
Gets a component from the model using its IFC GUID.
```APIDOC
## GET /api/model/component/by-guid
### Description
Gets the component with the given IFC GUID.
### Method
GET
### Endpoint
/api/model/component/by-guid
### Parameters
#### Query Parameters
- **guid** (string) - Required - The IFC GUID of the component.
### Response
#### Success Response (200)
- **component** (object) - The component object.
#### Response Example
{
"component": {
"id": "comp_xyz",
"name": "Door"
}
}
```
--------------------------------
### MVector2d Creation Methods
Source: https://solibri.github.io/Developer-Platform/9.12.6/javadoc/com/solibri/geometry/linearalgebra/MVector2d
Provides static methods for creating new MVector2d instances with various initializations.
```APIDOC
## MVector2d Creation
### Description
Static methods to create new mutable 2D vectors.
### Methods
#### `create()`
##### Description
Returns a 2-dimensional vector with the X and Y values set to 0.
##### Method
`static MVector2d create()`
##### Returns
a vector with all components set to 0.
#### `create(double x, double y)`
##### Description
Returns a 2-dimensional vector with the given component values.
##### Method
`static MVector2d create(double x, double y)`
##### Parameters
- **x** (double) - the value of the X component
- **y** (double) - the value of the Y component
##### Returns
a 2-dimensional vector with the given component values.
#### `create(Vector2d vec)`
##### Description
Returns a 2-dimensional vector with the X and Y values set to those of the given vector.
##### Method
`static MVector2d create(Vector2d vec)`
##### Parameters
- **vec** (Vector2d) - the vector used for setting the values of the created vector
##### Returns
a 2-dimensional vector with the values set to those of the given vector.
```
--------------------------------
### Get Model IFC GUIDs
Source: https://solibri.github.io/Developer-Platform/9.12.7/solibri-api-v1
Retrieves a list of IFC GUIDs for a specific model.
```APIDOC
## GET /models/{modelId}/ifc-guids
### Description
Retrieves a list of IFC GUIDs associated with a specific model.
### Method
GET
### Endpoint
/models/{modelId}/ifc-guids
### Parameters
#### Path Parameters
- **modelId** (string) - Required - The unique identifier of the model.
### Response
#### Success Response (200)
- **ifcGuidList** (array) - A list of IFC GUID strings.
#### Response Example
```json
[
"1$X1v5MXr3Buiox$k6BAhK",
"10pglqEGT2cQr8PnzBOj2n",
"20naGoyUXDkuMa2t7ZoZUh"
]
```
#### Error Responses
- **404** - Not Found: The specified model was not found.
```
--------------------------------
### Triangle3d Creation
Source: https://solibri.github.io/Developer-Platform/9.13.4/javadoc/com/solibri/geometry/primitive3d/Triangle3d
Static methods for creating new Triangle3d instances.
```APIDOC
## Triangle3d Creation
### create
* **Description**: Creates a new Triangle3d instance from a list of points.
* **Method**: POST
* **Endpoint**: `/triangle3d/create`
* **Parameters**:
* **Request Body**:
* `points` (List extends Vector3d>) - Required - List of points.
* **Response**:
* **Success Response (200)**: Triangle3d - The newly created instance.
* **Throws**:
* `IllegalArgumentException` - if the list does not contain exactly three points.
* **Since**: 9.10.2
### create
* **Description**: Creates a new Triangle3d instance from three Vector3d points.
* **Method**: POST
* **Endpoint**: `/triangle3d/create`
* **Parameters**:
* **Request Body**:
* `firstPoint` (Vector3d) - Required - The first point.
* `secondPoint` (Vector3d) - Required - The second point.
* `thirdPoint` (Vector3d) - Required - The third point.
* **Response**:
* **Success Response (200)**: Triangle3d - The newly created instance.
* **Throws**:
* `IllegalArgumentException` - if the list does not contain exactly three points.
* **Since**: 9.10.2
### create
* **Description**: Creates a new Triangle3d instance by copying another triangle.
* **Method**: POST
* **Endpoint**: `/triangle3d/create`
* **Parameters**:
* **Request Body**:
* `other` (Triangle3d) - Required - The other triangle to copy.
* **Response**:
* **Success Response (200)**: Triangle3d - The newly created instance.
* **Since**: 9.10.2
```
--------------------------------
### Component Retrieval and Filtering (Java)
Source: https://solibri.github.io/Developer-Platform/9.13.2/javadoc/com/solibri/smc/api/model/class-use/Component
Provides Java code examples for retrieving components based on filters and type, getting components by unique IDs (BIM Authoring Tool ID and GUID), and accessing grouped components. These methods are essential for querying and manipulating component data.
```java
Set getComponents(ComponentFilter filter, Class type) where T extends Component;
Optional getComponentByBatId(String batId);
Optional getComponentByGuid(String guid);
Set getComponents(ComponentFilter filter);
Set getGroupedComponents();
```
--------------------------------
### MVector2d Creation
Source: https://solibri.github.io/Developer-Platform/24.5.0/javadoc/com/solibri/geometry/linearalgebra/MVector2d
Provides methods to create new MVector2d instances with various initializations.
```APIDOC
## MVector2d Creation
### Description
Methods for creating new MVector2d objects.
### Method
`static MVector2d create()`
### Description
Returns a 2-dimensional vector with the X and Y values set to 0.
### Method
`static MVector2d create(double x, double y)`
### Description
Returns a 2-dimensional vector with the given component values.
### Method
`static MVector2d create(Vector2d vec)`
### Description
Returns a 2-dimensional vector with the X and Y values set to those of the given vector.
### Method
`static List to2dVectors(List extends Vector3d> vectors)`
### Description
Returns the vectors in the given list projected to the XY-plane.
```
--------------------------------
### MVector3d Creation Methods
Source: https://solibri.github.io/Developer-Platform/9.12.3/javadoc/com/solibri/geometry/linearalgebra/MVector3d
This section covers the static methods available for creating new MVector3d instances with various initializations.
```APIDOC
## Static Methods for MVector3d Creation
### create()
#### Description
Returns a new instance with all components set to zero.
#### Method
`static MVector3d create()`
#### Returns
- `MVector3d` - a new zero vector
#### Since
9.10.2
### create(double xyz)
#### Description
Returns a new instance with all components set to the given value.
#### Method
`static MVector3d create(double xyz)`
#### Parameters
- **xyz** (double) - Required - The value to set for all components of the returned vector.
#### Returns
- `MVector3d` - A new instance with all components set to the given value.
#### Since
9.10.2
### create(Vector3d vector)
#### Description
Returns a new instance with the same component values as in the given vector.
#### Method
`static MVector3d create(Vector3d vector)`
#### Parameters
- **vector** (Vector3d) - Required - The vector used for setting the values of the returned vector.
#### Returns
- `MVector3d` - A new instance with the same component values as in the given vector.
#### Since
9.10.2
### create(double x, double y, double z)
#### Description
Returns a new instance with the given component values.
#### Method
`static MVector3d create(double x, double y, double z)`
#### Parameters
- **x** (double) - Required - The X component value.
- **y** (double) - Required - The Y component value.
- **z** (double) - Required - The Z component value.
#### Returns
- `MVector3d` - A vector with the given component values.
#### Since
9.10.2
### to3dVectors(List extends Vector2d> vectors)
#### Description
Returns a list of 3-dimensional vectors with the X and Y components from the given vectors and the Z component set to 0. The order of the vectors is preserved.
#### Method
`static List to3dVectors(List extends Vector2d> vectors)`
#### Parameters
- **vectors** (List extends Vector2d>) - Required - Vectors in the XY-plane that are used for setting the X and Y components of the returned vectors.
#### Returns
- `List` - A list of 3-dimensional vectors with the X and Y components from the given vectors and the Z component set to 0.
#### Since
9.10.2
```
--------------------------------
### Get IFC GUIDs API
Source: https://solibri.github.io/Developer-Platform/9.12.10/solibri-api-v1
Retrieves a list of IFC GUIDs present in a given model.
```APIDOC
## GET /models/{modelId}/ifc_guids
### Description
Retrieves a list of IFC GUIDs present in a given model.
### Method
GET
### Endpoint
/models/{modelId}/ifc_guids
### Parameters
#### Path Parameters
- **modelId** (string) - Required - The unique identifier of the model.
### Response
#### Success Response (200)
- **items** (array of strings) - A list of IFC GUIDs.
### Response Example
```json
[
"1$X1v5MXr3Buiox$k6BAhK",
"10pglqEGT2cQr8PnzBOj2n",
"20naGoyUXDkuMa2t7ZoZUh"
]
```
```
--------------------------------
### Get Presentation IFC GUIDs API
Source: https://solibri.github.io/Developer-Platform/25.3.0/solibri-api-v1
Retrieves the list of IFC GUIDs associated with a specific presentation.
```APIDOC
## GET /presentations/{presentationId}/ifc-guids
### Description
Retrieves the list of IFC GUIDs associated with a specific presentation.
### Method
GET
### Endpoint
/presentations/{presentationId}/ifc-guids
### Parameters
#### Path Parameters
- **presentationId** (string) - Required - The unique identifier of the presentation.
### Response
#### Success Response (200)
- **IfcGuidList** (array) - A list of IFC GUIDs.
### Response Example
```json
[
"1$X1v5MXr3Buiox$k6BAhK",
"10pglqEGT2cQr8PnzBOj2n",
"20naGoyUXDkuMa2t7ZoZUh"
]
```
#### Error Responses
- **400** - Bad Request
- **424** - No presentation found with given presentationId
```
--------------------------------
### Triangle3d Creation
Source: https://solibri.github.io/Developer-Platform/9.12.5/javadoc/com/solibri/geometry/primitive3d/Triangle3d
Methods for creating new Triangle3d instances.
```APIDOC
## Triangle3d Creation
### Description
Static methods to create new Triangle3d instances.
### Methods
#### `create(List extends Vector3d> points)`
Creates a new Triangle3d instance from a list of points.
**Parameters:**
- `points` (List) - Required - A list containing exactly three Vector3d points.
**Returns:**
- `Triangle3d` - The newly created triangle instance.
**Throws:**
- `IllegalArgumentException` - If the list does not contain exactly three points.
**Since:** 9.10.2
#### `create(Vector3d firstPoint, Vector3d secondPoint, Vector3d thirdPoint)`
Creates a new Triangle3d instance from three Vector3d points.
**Parameters:**
- `firstPoint` (Vector3d) - Required - The first point of the triangle.
- `secondPoint` (Vector3d) - Required - The second point of the triangle.
- `thirdPoint` (Vector3d) - Required - The third point of the triangle.
**Returns:**
- `Triangle3d` - The newly created triangle instance.
**Throws:**
- `IllegalArgumentException` - If any of the points are null or if the list does not contain exactly three points.
**Since:** 9.10.2
#### `create(Triangle3d other)`
Creates a new Triangle3d instance by copying another triangle.
**Parameters:**
- `other` (Triangle3d) - Required - The triangle to copy.
**Returns:**
- `Triangle3d` - The newly created triangle instance.
**Since:** 9.10.2
```
--------------------------------
### Get Start Point of Segment3d
Source: https://solibri.github.io/Developer-Platform/9.12.4/javadoc/com/solibri/geometry/primitive3d/Segment3d
Retrieves the starting point of a 3D segment. This method returns a Vector3d object representing the start of the segment.
```java
Vector3d getStartPoint()
```
--------------------------------
### MVector3d Creation Methods
Source: https://solibri.github.io/Developer-Platform/9.13.4/javadoc/com/solibri/geometry/linearalgebra/MVector3d
Provides static methods for creating new MVector3d instances with various initializations.
```APIDOC
## MVector3d Creation Methods
### create
static MVector3d create()
Returns a new instance with all components set to zero.
Returns:
a new zero vector
Since:
9.10.2
### create
static MVector3d create(double xyz)
Returns a new instance with all components set to the given value.
Parameters:
`xyz` - the value set to all components of the returned vector
Returns:
a new instance with all components set to the given value
Since:
9.10.2
### create
static MVector3d create(Vector3d vector)
Returns a new instance with the same component values as in the given vector.
Parameters:
`vector` - the vector used for setting the values of the returned vector
Returns:
a new instance with the same component values as in the given vector
Since:
9.10.2
### create
static MVector3d create(double x, double y, double z)
Returns a new instance with the given component values.
Parameters:
`x` - the X component value
`y` - the Y component value
`z` - the Z component value
Returns:
a vector with the given component values
Since:
9.10.2
```
--------------------------------
### MVector2d Creation Methods
Source: https://solibri.github.io/Developer-Platform/9.12.5/javadoc/com/solibri/geometry/linearalgebra/MVector2d
Provides static methods for creating new MVector2d instances.
```APIDOC
## MVector2d Static Creation Methods
### Description
Provides static methods for creating new MVector2d instances with zero values, specified coordinates, or from existing vectors.
### Methods
#### `create()`
- **Method:** `static MVector2d create()`
- **Description:** Returns a 2-dimensional vector with the X and Y values set to 0.
- **Returns:** A vector with all components set to 0.
- **Since:** 9.10.2
#### `create(double x, double y)`
- **Method:** `static MVector2d create(double x, double y)`
- **Description:** Returns a 2-dimensional vector with the given component values.
- **Parameters:**
- `x` (double) - The value of the X component.
- `y` (double) - The value of the Y component.
- **Returns:** A 2-dimensional vector with the given component values.
- **Since:** 9.10.2
#### `create(Vector2d vec)`
- **Method:** `static MVector2d create(Vector2d vec)`
- **Description:** Returns a 2-dimensional vector with the X and Y values set to those of the given vector.
- **Parameters:**
- `vec` (Vector2d) - The vector used for setting the values of the created vector.
- **Returns:** A 2-dimensional vector with the values set to those of the given vector.
- **Since:** 9.10.2
```
--------------------------------
### Get Start Point of a Segment3d
Source: https://solibri.github.io/Developer-Platform/9.12.1/javadoc/com/solibri/geometry/primitive3d/Segment3d
Retrieves the starting point of a `Segment3d`. This method returns a `Vector3d` object representing the coordinates of the segment's start. Available since version 9.10.2.
```java
Vector3d
getStartPoint()
```
--------------------------------
### Triangle3d Creation
Source: https://solibri.github.io/Developer-Platform/9.13.1/javadoc/com/solibri/geometry/primitive3d/Triangle3d
Methods for creating new Triangle3d instances with different parameter sets.
```APIDOC
## Triangle3d Creation
### static Triangle3d create(List extends Vector3d> points)
Creates a new instance of Triangle3d from a list of points.
- **Parameters**
- `points` (List) - Required - A list containing exactly three Vector3d points.
- **Returns**
- `Triangle3d` - The newly created triangle instance.
- **Throws**
- `IllegalArgumentException` - If the list does not contain exactly three points.
- **Since**
- 9.10.2
### static Triangle3d create(Vector3d firstPoint, Vector3d secondPoint, Vector3d thirdPoint)
Creates a new instance of Triangle3d from three individual points.
- **Parameters**
- `firstPoint` (Vector3d) - Required - The first vertex of the triangle.
- `secondPoint` (Vector3d) - Required - The second vertex of the triangle.
- `thirdPoint` (Vector3d) - Required - The third vertex of the triangle.
- **Returns**
- `Triangle3d` - The newly created triangle instance.
- **Throws**
- `IllegalArgumentException` - If any of the points are null or if the creation process fails.
- **Since**
- 9.10.2
### static Triangle3d create(Triangle3d other)
Creates a new instance of Triangle3d as a copy of another triangle.
- **Parameters**
- `other` (Triangle3d) - Required - The triangle to copy.
- **Returns**
- `Triangle3d` - The newly created triangle instance.
- **Since**
- 9.10.2
```
--------------------------------
### Get Component GUID
Source: https://solibri.github.io/Developer-Platform/25.3.0/javadoc/com/solibri/smc/api/model/Component
Retrieves the Globally Unique Identifier (GUID) of the component as specified in the IFC (Industry Foundation Classes) standard. This is a mandatory identifier for IFC entities.
```java
String getGUID()
```
--------------------------------
### Triangle3d Creation
Source: https://solibri.github.io/Developer-Platform/9.13.5/javadoc/com/solibri/geometry/primitive3d/Triangle3d
Methods for creating new Triangle3d instances.
```APIDOC
## Triangle3d Creation
### Description
Methods for creating new Triangle3d instances with different parameters.
### Method
`static Triangle3d create(List extends Vector3d> points)`
### Description
Creates a new Triangle3d instance from a list of points.
### Parameters
#### Path Parameters
- `points` (List) - Required - List of points defining the triangle.
### Throws
- `IllegalArgumentException` - if the list does not contain exactly three points.
### Method
`static Triangle3d create(Vector3d firstPoint, Vector3d secondPoint, Vector3d thirdPoint)`
### Description
Creates a new Triangle3d instance from three individual points.
### Parameters
#### Path Parameters
- `firstPoint` (Vector3d) - Required - The first point of the triangle.
- `secondPoint` (Vector3d) - Required - The second point of the triangle.
- `thirdPoint` (Vector3d) - Required - The third point of the triangle.
### Throws
- `IllegalArgumentException` - if the list does not contain exactly three points.
### Method
`static Triangle3d create(Triangle3d other)`
### Description
Creates a new Triangle3d instance as a copy of another triangle.
### Parameters
#### Path Parameters
- `other` (Triangle3d) - Required - The triangle to copy.
### Since
9.10.2
```
--------------------------------
### GET /selectionBasket
Source: https://solibri.github.io/Developer-Platform/9.12.0/solibri-api-v1
Retrieves the IFC GUIDs of all currently selected components.
```APIDOC
## GET /selectionBasket
### Description
Get IFC guids of the selected components.
### Method
GET
### Endpoint
/selectionBasket
### Parameters
None
### Request Example
None
### Response
#### Success Response (200)
- **ifcGuids** (array) - List of IFC GUIDs of the components that are selected.
#### Response Example
```json
{
"ifcGuids": [
"guid1",
"guid2"
]
}
```
```
--------------------------------
### MLine3d Interface Methods
Source: https://solibri.github.io/Developer-Platform/24.5.0/javadoc/com/solibri/geometry/primitive3d/MLine3d
This section details the methods available for the MLine3d interface, including creation, setting points, and inherited methods.
```APIDOC
## MLine3d Interface
### Description
Interface for handling lines in 3D. Extends `Line3d`.
### Methods
#### `create`
```java
static MLine3d create(Vector3d firstPoint, Vector3d secondPoint)
```
**Description**: Creates a new `MLine3d` instance.
**Parameters**:
- `firstPoint` (Vector3d) - The first point of the line.
- `secondPoint` (Vector3d) - The second point of the line.
**Returns**:
- A new `MLine3d` instance.
#### `setStartPoint`
```java
void setStartPoint(Vector3d startPoint)
```
**Description**: Sets the starting point of this line.
**Parameters**:
- `startPoint` (Vector3d) - The point to set as the starting point.
#### `setEndPoint`
```java
void setEndPoint(Vector3d endPoint)
```
**Description**: Sets the end point of this line.
**Parameters**:
- `endPoint` (Vector3d) - The point to set as the end point.
#### `set`
```java
void set(Vector3d startPoint, Vector3d endPoint)
```
**Description**: Sets the start and end points of this line.
**Parameters**:
- `startPoint` (Vector3d) - The starting point of the line.
- `endPoint` (Vector3d) - The end point of the line.
### Inherited Methods from `Line3d`
- `distance`
- `distanceSqr`
- `getDirection`
- `getFirstPoint`
- `getIntersectionPoint`
- `getSecondPoint`
- `intersects`
```
--------------------------------
### Get Component by IFC GUID - Java
Source: https://solibri.github.io/Developer-Platform/9.12.0/javadoc/com/solibri/smc/api/model/Model
Retrieves a component from the model using its IFC GUID. Returns an Optional containing the component if found, otherwise an empty Optional. Requires the 'guid' parameter.
```java
Optional getComponentByGuid(String guid)
```