### Properties: Rule Localization Example Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/checking/RuleResources An example of a .properties file used for localizing rule resources. This file defines keys for the rule's author, unique ID, version, date, default name, description, and localized parameter names and descriptions. ```properties # The required rule information. # Note: These should be only in the English properties file. AUTHOR=The author of the rule AUTHOR_TAG=MyTag UID=12345 VERSION=1.0 DATE=2018-01-01 # The localization of the name and description of the rule DEFAULT_NAME=My Rule DEFAULT_DESCRIPTION=This rule checks the quality of the model. # The localization of a parameter which parameter ID is rpComponentFilter rpComponentFilter.NAME = Components to Check rpComponentFilter.DESCRIPTION = This filter specifies the set of components to check ``` -------------------------------- ### onCheckingStarted Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/ui/View Action to take when checking is about to start. The default implementation does nothing. ```APIDOC ## onCheckingStarted ### Description Action to take when checking is about to start. The default implementation does nothing. ### Method (Implicitly called by the application when checking starts) ### Endpoint N/A (Callback method) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example N/A ### Response #### Success Response (No return value specified, void) #### Response Example N/A ### Since 9.10.8 ``` -------------------------------- ### Get Ray3d Properties (Java) Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive3d/Ray3d Methods to retrieve the origin and direction vectors of a `Ray3d` object. `getOrigin()` returns the starting point of the ray, and `getDirection()` returns the normalized direction vector. ```java Vector3d getOrigin() Returns the origin of this ray. Returns: the origin of this ray Since: 9.10.2 ``` ```java Vector3d getDirection() Returns the direction of this ray. Returns: the direction of this ray Since: 9.10.2 ``` -------------------------------- ### IntegerSetting Constructor and Methods Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/settings/IntegerSetting This section details the constructor and key methods of the IntegerSetting class, allowing for the creation and management of integer-based settings. ```APIDOC ## IntegerSetting Class ### Description The intended base class for Integer valued custom settings. ### Constructor * **IntegerSetting()**: Initializes a new instance of the `IntegerSetting` class. ### Methods * **getValue()** (Integer): Returns the current value of the setting. * **setValue(Integer value)**: Sets the value of the setting. * **invalidReason(Integer value)** (Optional): Checks the validity of a given integer value. The default implementation considers any integer valid. ``` -------------------------------- ### Get Custom BCF Servers in Java Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/bcflive/class-use/BCFServer Retrieves custom BCFServer configurations, grouped by integration name. This allows for management of specific server setups tailored to different integrations. ```java Map> getCustomBCFServers() ``` -------------------------------- ### Run Checking Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/checking/Checking Initiates the checking process. ```APIDOC ## POST /checking/run ### Description Runs the checking process. You can specify whether to check only selected components. ### Method POST ### Endpoint /checking/run ### Parameters #### Query Parameters - **checkSelected** (boolean) - Optional - If true, only selected components will be checked. Defaults to false. ### Request Example None (request body not applicable for this operation, uses query parameters) ### Response #### Success Response (200) - **results** (Collection) - The results of the checking process. #### Response Example ```json { "results": [ { "rule": "Rule1", "component": "ComponentA", "decision": "PASSED", "severity": "INFO" } ] } ``` ``` -------------------------------- ### Create MSegment3d Instance Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive3d/MSegment3d Creates a new MSegment3d instance using the provided start and end points. This method is static and part of the MSegment3d interface. ```java static MSegment3d create(Vector3d startPoint, Vector3d endPoint) ``` -------------------------------- ### MVector3d Creation Methods Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/linearalgebra/MVector3d Provides static methods to create new MVector3d instances with various initializations. ```APIDOC ## MVector3d Creation ### create static MVector3d create() Returns a new instance with all components set to zero. #### Returns - a new zero vector ### create static MVector3d create(double xyz) Returns a new instance with all components set to the given value. #### Parameters - **xyz** (double) - Required - the value set to all components of the returned vector #### Returns - a new instance with all components set to the given value ### create static MVector3d create(Vector3d vector) Returns a new instance with the same component values as in the given vector. #### Parameters - **vector** (Vector3d) - Required - 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 ### create static MVector3d create(double x, double y, double z) Returns a new instance with the given component values. #### Parameters - **x** (double) - Required - the X component value - **y** (double) - Required - the Y component value - **z** (double) - Required - the Z component value #### Returns - a vector with the given component values ``` -------------------------------- ### Get Bounding Box Vertices (Java) Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive2d/AABB2d Retrieves the vertices of a 2D axis-aligned bounding box in counter-clockwise order. Returns an empty list if the box is degenerate. This method does not specify the starting vertex. ```java List getVertices() // Returns: the vertices of this bounding box in counter clockwise order // Since: 9.10.2 ``` -------------------------------- ### Query and Filter BIM Components in Java Source: https://context7.com/context7/solibri_github_io_developer-platform_javadoc/llms.txt This Java example shows how to use the Solibri Model Checker API to retrieve components (like walls) from a BIM model. It demonstrates filtering by component type, accessing components by GUID, iterating through component properties, and retrieving spatial hierarchy and elevation data. This requires the Solibri SMC API library. ```java import com.solibri.smc.api.model.Model; import com.solibri.smc.api.model.Component; import com.solibri.smc.api.model.ComponentType; import com.solibri.smc.api.model.PropertySet; import com.solibri.smc.api.model.Property; import com.solibri.smc.api.filter.ComponentFilter; import java.util.Set; import java.util.Optional; public class ComponentQueryExample { public void queryComponents(Model model) { // Get all walls in the model ComponentFilter wallFilter = ComponentFilter.componentTypeIs(ComponentType.WALL); Set walls = model.getComponents(wallFilter); System.out.println("Total walls: " + walls.size()); // Get components by IFC GUID Optional component = model.getComponentByGuid("2O2Fr$t4X7Zf8NOew3FLzJ"); component.ifPresent(c -> System.out.println("Found: " + c.getName())); // Iterate through all components for (Component comp : walls) { // Get basic information String name = comp.getName(); ComponentType type = comp.getComponentType(); String ifcType = comp.getIfcEntityType(); Optional guid = comp.getGUID(); System.out.println("Component: " + name + " [" + type + ", " + ifcType + "]"); // Access properties for (PropertySet pset : comp.getPropertySets()) { System.out.println(" PropertySet: " + pset.getName()); // Get specific property Optional> loadBearing = pset.getProperty("LoadBearing"); loadBearing.ifPresent(prop -> System.out.println(" LoadBearing: " + prop.getValue()) ); // Iterate all properties for (Property prop : pset.getProperties()) { System.out.println(" " + prop.getName() + ": " + prop.getValue()); } } // Spatial hierarchy comp.getFloor().ifPresent(floor -> System.out.println(" Floor: " + floor.getName()) ); comp.getBuilding().ifPresent(building -> System.out.println(" Building: " + building.getName()) ); comp.getSite().ifPresent(site -> System.out.println(" Site: " + site.getName()) ); // Elevation information double bottomElev = comp.getGlobalBottomElevation(); double topElev = comp.getGlobalTopElevation(); System.out.println(" Elevation: " + bottomElev + " to " + topElev); } // Get federated sub-models model.getSubModels().forEach(subModel -> { System.out.println("Sub-model: " + subModel.getName()); System.out.println(" Transform: " + subModel.getTransformationMatrix()); }); } } ``` -------------------------------- ### Set Start Point for Lines and Segments Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/linearalgebra/class-use/Vector2d Methods to define the starting point of 2D line segments. These methods are available on MLine2d and MSegment2d objects, taking a Vector2d to specify the new start point. ```java void MLine2d.setStartPoint(Vector2d startPoint) void MSegment2d.setStartPoint(Vector2d startPoint) ``` -------------------------------- ### Settings and General Information Source: https://solibri.github.io/Developer-Platform/latest/javadoc/index-all Retrieve general and unit settings. ```APIDOC ## GET /api/generalSettings/threadCount ### Description Returns the count of threads chosen in general settings. ### Method GET ### Endpoint /api/generalSettings/threadCount ### Parameters None ### Request Example None ### Response #### Success Response (200) - **threadCount** (integer) - The number of threads configured. ``` ```APIDOC ## GET /api/unitSettings/timeFormat ### Description Returns the formatter for time-only formatting. ### Method GET ### Endpoint /api/unitSettings/timeFormat ### Parameters None ### Request Example None ### Response #### Success Response (200) - **timeFormat** (string) - The format string for time. ``` -------------------------------- ### IntegerSetting Constructor and Methods - Java Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/settings/IntegerSetting This snippet shows the basic structure of the IntegerSetting class in Java, including its constructor and key methods for managing integer settings. It demonstrates how to initialize an IntegerSetting, retrieve its current value, set a new value, and check the validity of a potential value. This class is intended as a base for custom integer settings. ```java public abstract class IntegerSetting extends Object implements Setting { public IntegerSetting() { } public Integer getValue() { } public Optional invalidReason(Integer value) { } public void setValue(Integer value) { } } ``` -------------------------------- ### Set MLine2d Start Point Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive2d/MLine2d This method sets the starting point of an existing MLine2d object. It takes a Vector2d object as a parameter and updates the line's start point. The interface does not take ownership of the provided point. This functionality is available from version 9.10.2. ```java void setStartPoint(Vector2d startPoint) ``` -------------------------------- ### Set MLine2d Start and End Points Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive2d/MLine2d This method simultaneously sets both the start and end points of an MLine2d object. It requires two Vector2d objects as parameters, one for the start point and one for the end point. The method does not assume ownership of the input points. It has been available since version 9.10.2. ```java void set(Vector2d startPoint, Vector2d endPoint) ``` -------------------------------- ### Create MVector3d Instances Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/linearalgebra/MVector3d Provides static methods to create new MVector3d instances with various initializations, including zero vectors, vectors with uniform components, vectors with specified components, and vectors copied from existing Vector3d objects. ```Java static MVector3d create() static MVector3d create(double xyz) static MVector3d create(double x, double y, double z) static MVector3d create(Vector3d vector) ``` -------------------------------- ### Product and Project Information Source: https://solibri.github.io/Developer-Platform/latest/javadoc/index-all Methods for retrieving general information about the Solibri SMC product and the current project. ```APIDOC ## GET /api/smc/product/version ### Description Retrieves the version of the Solibri SMC product currently running. ### Method GET ### Endpoint /api/smc/product/version ### Parameters None ### Request Example None ### Response #### Success Response (200) - **version** (string) - The product version string. #### Response Example ```json { "version": "9.12.1" } ``` ## GET /api/smc/project ### Description Provides access to information related to the saved project file (.smc). ### Method GET ### Endpoint /api/smc/project ### Parameters None ### Request Example None ### Response #### Success Response (200) - **projectAccess** (object) - An object for accessing project file information. #### Response Example ```json { "projectAccess": {} } ``` ``` -------------------------------- ### Set MSegment3d Start Point Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive3d/MSegment3d Sets the starting point of the MSegment3d to the value of the given Vector3d. The segment does not take ownership of the input point. This is useful for precise adjustments to the segment's origin. ```java void setStartPoint(Vector3d startPoint) ``` -------------------------------- ### SettingDialog Interface Methods Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/settings/SettingDialog This section details the methods available within the SettingDialog interface, including their descriptions, return types, and usage. ```APIDOC ## SettingDialog Interface ### Description SettingDialog defines a custom dialog for custom settings. ### Methods #### `getUniqueId()` * **Description**: The unique ID of the setting dialog. This needs to be globally unique. * **Return Type**: `String` * **Since**: 9.12.0 #### `getName()` * **Description**: The internationalized name of the setting dialog. The default implementation returns value based on properties files value with key "NAME". Returns the ID of the setting dialog if no property is found. * **Return Type**: `String` * **Since**: 9.12.0 #### `getDescription()` * **Description**: The internationalized description of the setting dialog. The default implementation returns value based on properties files value with key "DESCRIPTION". Returns the name of the setting dialog if no property is found. * **Return Type**: `String` * **Since**: 9.12.0 #### `getIcon()` * **Description**: Returns the icon for the setting dialog. The default implementation tries to find icon from file called icon.png and uses that if it is found from the same package as the view. If icon.png does not exist, the properties file for the view is searched for property called ICON and the relative path given in that property is used. * **Return Type**: `Icon` * **Since**: 9.12.0 #### `getSettingGroups()` * **Description**: Returns a list of the setting groups that are included in this dialog. * **Return Type**: `List>` * **Since**: 9.12.0 ``` -------------------------------- ### Set MSegment3d Start and End Points Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive3d/MSegment3d Sets both the start and end points of the MSegment3d. This method does not take ownership of the provided Vector3d objects. It's a common operation for updating segment geometry. ```java void set(Vector3d startPoint, Vector3d endPoint) ``` -------------------------------- ### Vector3d Creation Methods Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/linearalgebra/Vector3d Methods for creating new Vector3d instances. ```APIDOC ## Vector3d Creation Methods ### Description Methods to create new Vector3d objects, either from existing vectors or component values. ### Methods #### create(Vector3d vector) - **Method**: `static Vector3d` - **Endpoint**: N/A (static method) - **Description**: Returns a new vector with the component values of the given vector. - **Parameters**: - **vector** (Vector3d) - Required - The vector whose component values are set to the new vector. - **Returns**: - **Type**: `Vector3d` - **Description**: A new vector with the component values of the given vector. #### create(double x, double y, double z) - **Method**: `static Vector3d` - **Endpoint**: N/A (static method) - **Description**: Returns a new vector with the given component values. - **Parameters**: - **x** (double) - Required - The X component value. - **y** (double) - Required - The Y component value. - **z** (double) - Required - The Z component value. - **Returns**: - **Type**: `Vector3d` - **Description**: A new vector with the given component values. #### centroidOf(Collection vectors) - **Method**: `static MVector3d` - **Endpoint**: N/A (static method) - **Description**: Returns the centroid (the average vector) of the given collection of vectors. - **Parameters**: - **vectors** (Collection) - Required - The vectors for which the centroid is computed. - **Returns**: - **Type**: `MVector3d` - **Description**: The centroid of the given collection of vectors. ``` -------------------------------- ### Compare Segment Equality within Tolerance in XY-plane Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive2d/Segment2d Checks if the start and end points of this segment are within a specified tolerance of the start and end points of another segment in the XY-plane. This method is useful for approximate geometric comparisons. ```java /** * Returns true if the start and end points of this segment are within tolerance of the start and end points of other in the XY-plane. * * @param other the segment that is checked for equality within tolerance * @param tolerance the allowed difference in distance between points * @return true if the start and end points of this segment are within tolerance of the start and end points of other in the XY-plane * @since 9.10.2 */ default boolean equalsWithTolerance(Segment2d other, double tolerance) ``` -------------------------------- ### MAABB3d Creation Methods Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive3d/MAABB3d Methods for creating new MAABB3d instances. ```APIDOC ## POST /MAABB3d/create (from AABB3d) ### Description Returns a new instance of a bounding box with the same bounds as in the given bounding box. ### Method POST ### Endpoint /MAABB3d/create ### Parameters #### Request Body - **boundingBox** (AABB3d) - Required - The bounding box whose bounds are set to the returned box ### Request Example { "boundingBox": { "lowerBound": {"x": 0, "y": 0, "z": 0}, "upperBound": {"x": 10, "y": 10, "z": 10} } } ### Response #### Success Response (200) - **MAABB3d** (object) - A new bounding box with the same bounds as the input - **lowerBound** (object) - **x** (double) - **y** (double) - **z** (double) - **upperBound** (object) - **x** (double) - **y** (double) - **z** (double) #### Response Example { "lowerBound": {"x": 0, "y": 0, "z": 0}, "upperBound": {"x": 10, "y": 10, "z": 10} } ### Throws - **IllegalArgumentException** - if given bounding box is not valid, meaning that lowerBound is greater than upperBound in any dimension ``` ```APIDOC ## POST /MAABB3d/create (from points) ### Description Returns the minimum volume axis-aligned bounding box for the given collection of points. ### Method POST ### Endpoint /MAABB3d/create ### Parameters #### Request Body - **points** (Collection) - Required - The points for which the minimum volume axis-aligned bounding box is computed ### Request Example { "points": [ {"x": 1, "y": 2, "z": 3}, {"x": 4, "y": 5, "z": 6} ] } ### Response #### Success Response (200) - **MAABB3d** (object) - The minimum volume axis-aligned bounding box - **lowerBound** (object) - **x** (double) - **y** (double) - **z** (double) - **upperBound** (object) - **x** (double) - **y** (double) - **z** (double) #### Response Example { "lowerBound": {"x": 1, "y": 2, "z": 3}, "upperBound": {"x": 4, "y": 5, "z": 6} } ### Since 9.10.2 ``` ```APIDOC ## POST /MAABB3d/create (from bounds) ### Description Returns a bounding box with the given bounds. If lowerBound is greater than upperBound in any dimension, IllegalArgumentException is thrown. To construct bounding box from any set of opposing corners, `create(Collection)` should be used instead. ### Method POST ### Endpoint /MAABB3d/create ### Parameters #### Request Body - **lowerBound** (Vector3d) - Required - The lower bound for the bounding box - **upperBound** (Vector3d) - Required - The upper bound for the bounding box ### Request Example { "lowerBound": {"x": 0, "y": 0, "z": 0}, "upperBound": {"x": 10, "y": 10, "z": 10} } ### Response #### Success Response (200) - **MAABB3d** (object) - A bounding box with the given bounds - **lowerBound** (object) - **x** (double) - **y** (double) - **z** (double) - **upperBound** (object) - **x** (double) - **y** (double) - **z** (double) #### Response Example { "lowerBound": {"x": 0, "y": 0, "z": 0}, "upperBound": {"x": 10, "y": 10, "z": 10} } ### Throws - **IllegalArgumentException** - if lowerBound is greater than upperBound in any dimension ### Since 9.10.2 ``` -------------------------------- ### Get Bitmap Image Properties (Java) Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/visualization/Bitmap Retrieves specific properties of a bitmap visualization item. Methods include getting the image data, its dimensions (width and height), and orientation vectors (normal and up). These are essential for rendering and positioning the bitmap in a 3D view. ```Java BufferedImage getImage() Returns the image. Returns: the image Since: 9.10.2 ``` ```Java double getHeight() Returns the height of image. Returns: the height of image Since: 9.10.2 ``` ```Java double getWidth() Returns the width of image. Returns: the width of image Since: 9.10.2 ``` ```Java Vector3d getNormal() Returns a vector indicating where this bitmap faces. Example: An image is placed on the xy-plane and faces up, towards the positive z-direction. Its normal is (0, 0, 1). This vector is orthogonal to `getUp()` if they are both non-zero vectors. Returns: a unit vector indicating where this bitmap faces or a zero vector Since: 9.12.0 ``` ```Java Vector3d getUp() Returns a vector indicating the 'up' direction of this bitmap's 2D content. For example, a letter "T" lying in the xy-plane, facing up towards the positive z-direction with its bottom side parallel to the x-axis, has the y-axis as its 'up' direction. Its 'up' vector is then (0, 1, 0). This vector is orthogonal to `getNormal()` if they are both non-zero vectors. Returns: a unit vector indicating the 'up' direction of this bitmap's 2D content or a zero vector Since: 9.12.0 ``` ```Java Vector3d getCenter() Returns a point indicating the center position of this bitmap. Returns: a point indicating the position of this bitmap in 3D space. Since: 9.12.0 ``` -------------------------------- ### Visualization API - Visualization Package Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/visualization/class-use/Visualization This section describes the static creation method for Visualization objects within the com.solibri.smc.api.visualization package. ```APIDOC ## Visualization `create()` ### Description Creates an empty `Visualization` with no components, section planes or visualization items. ### Method POST ### Endpoint N/A (Static method within a class) ### Parameters None ### Request Example None ### Response #### Success Response (200) - **Visualization** - An empty Visualization object. #### Response Example None (programmatic response) ``` -------------------------------- ### Color and Settings Information Source: https://solibri.github.io/Developer-Platform/latest/javadoc/index-all Methods for accessing color components and proxy settings. ```APIDOC ## GET /api/colors/argb/{id}/red ### Description Retrieves the red component value of an ARGB color. ### Method GET ### Endpoint /api/colors/argb/{id}/red ### Parameters #### Path Parameters - **id** (string) - Required - The identifier of the ARGB color. ### Request Example None ### Response #### Success Response (200) - **red** (integer) - The red component value in the range [0, 255]. #### Response Example ```json { "red": 255 } ``` ## GET /api/settings/proxy ### Description Retrieves the proxy settings configured in the application. ### Method GET ### Endpoint /api/settings/proxy ### Parameters None ### Request Example None ### Response #### Success Response (200) - **proxySettings** (object) - An object containing the proxy configuration. #### Response Example ```json { "proxySettings": {} } ``` ``` -------------------------------- ### Get Width Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/model/profile/CProfile Retrieves the width of the C-shaped profile. ```APIDOC ## GET /profile/cshape/width ### Description Returns the width of the C-shaped profile. ### Method GET ### Endpoint `/profile/cshape/width` ### Parameters None ### Response #### Success Response (200) - **width** (Double) - The width of the profile. #### Response Example ```json { "width": 50.2 } ``` ``` -------------------------------- ### Get Depth Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/model/profile/CProfile Retrieves the depth of the C-shaped profile. ```APIDOC ## GET /profile/cshape/depth ### Description Returns the depth of the C-shaped profile. ### Method GET ### Endpoint `/profile/cshape/depth` ### Parameters None ### Response #### Success Response (200) - **depth** (Double) - The depth of the profile. #### Response Example ```json { "depth": 100.5 } ``` ``` -------------------------------- ### Handle information takeoff started event in Java Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/ui/View The `onItoStarted()` method is called when an information takeoff (ITO) process is triggered in Solibri. Custom views can use this to prepare for or initiate ITO-related tasks. ```java default void onItoStarted() { // Actions before ITO starts } ``` -------------------------------- ### Material and System Methods Source: https://solibri.github.io/Developer-Platform/latest/javadoc/index-all Methods for accessing material and functional system information. ```APIDOC ## GET /material/fraction ### Description Retrieves the fraction of a material, if it exists. Returns an empty Optional if not present. ### Method GET ### Endpoint /material/fraction ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```json {} ``` ### Response #### Success Response (200) - **fraction** (float or null) - The fraction of the material, or null if not present. #### Response Example ```json { "fraction": 0.75 } ``` ## GET /component/functionalSystems ### Description Retrieves a set of functional systems associated with a component. ### Method GET ### Endpoint /component/functionalSystems ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```json {} ``` ### Response #### Success Response (200) - **functionalSystems** (array) - An array of strings representing the functional systems. #### Response Example ```json { "functionalSystems": ["HVAC", "Plumbing"] } ``` ``` -------------------------------- ### ARGBColor Representation Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/visualization/ARGBColor Methods for getting integer representations of the ARGBColor. ```APIDOC ## GET /representation ### Description Get integer representations of the ARGBColor. ### Method GET ### Endpoint /representation ### Parameters #### Query Parameters - **signed** (boolean) - Optional - If true, returns a signed 32-bit integer (default). If false, returns an unsigned 32-bit integer. ### Request Example ``` GET /representation?signed=false ``` ### Response #### Success Response (200) - **argb** (integer) - The 32-bit integer representation of the color. #### Response Example ```json { "argb": 3221225472 } ``` ``` -------------------------------- ### Plane Interface Documentation Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive3d/Plane This section details the methods available for the Plane interface, including creating planes, calculating distances, and projecting points. ```APIDOC ## Plane Interface Interface for handling planes in 3D. A plane is a flat, two-dimensional surface that extends infinitely far. Plane is defined by a point on the plane and the plane's normal vector. Since: 9.10.2 ### Methods - **`boolean contains(Vector3d point, double tolerance)`**: Checks if the distance of the given point for this plane is less than the given tolerance. - **`static Plane create(Vector3d pointOnPlane, Vector3d planeNormal)`**: Returns the plane defined by the given points. - **`double dihedralAngle(Plane plane)`**: Calculates the dihedral angle between this plane and the given plane. - **`double distance(Vector3d point)`**: Calculates the distance of this plane from the given point. - **`double distanceSquared(Vector3d point)`**: Calculates the distance of this plane from the given point squared. - **`Vector3d getNormal()`**: Returns the normal of the plane. - **`Vector3d getPoint()`**: Returns a point on the plane used to define the plane. - **`Optional intersect(Plane plane)`**: Calculates the intersection between this plane and the given plane and returns the resulting line. - **`MVector3d project(Vector3d point)`**: Projects the given point onto this plane performing an orthogonal projection. - **`Optional project(Vector3d point, Vector3d direction)`**: Projects the given point onto this plane in the direction of the given direction vector. - **`double signedDistance(Vector3d point)`**: Calculates the signed distance of this plane from the given point. - **`Optional signedDistance(Vector3d point, Vector3d direction)`**: Calculates the signed distance of this plane from the given point with some direction vector. ### Method Details #### `create` ```java static Plane create(Vector3d pointOnPlane, Vector3d planeNormal) ``` **Description**: Returns the plane defined by the given points. **Parameters**: - `pointOnPlane` (Vector3d) - an arbitrary point on the plane - `planeNormal` (Vector3d) - the normal of the plane **Returns**: the plane defined by the given points **Since**: 9.10.2 #### `getPoint` ```java Vector3d getPoint() ``` **Description**: Returns a point on the plane used to define the plane. **Returns**: the plane point **Since**: 9.10.2 #### `getNormal` ```java Vector3d getNormal() ``` **Description**: Returns the normal of the plane. The vector is of unit length. **Returns**: the normal of the plane **Since**: 9.10.2 #### `distanceSquared` ```java double distanceSquared(Vector3d point) ``` **Description**: Calculates the distance of this plane from the given point squared. **Parameters**: - `point` (Vector3d) - the point **Returns**: the distance squared **Since**: 9.10.2 #### `distance` ```java double distance(Vector3d point) ``` **Description**: Calculates the distance of this plane from the given point. **Parameters**: - `point` (Vector3d) - the point **Returns**: the distance **Since**: 9.10.2 #### `signedDistance` (1-argument) ```java double signedDistance(Vector3d point) ``` **Description**: Calculates the signed distance of this plane from the given point. The sign tells which side of the plane the given point is on. If the sign is positive, the point is on the side that the normal vector is pointing towards, otherwise the point is on the "backside" on the plane. **Parameters**: - `point` (Vector3d) - the point **Returns**: the distance **Since**: 9.10.2 #### `signedDistance` (2-argument) ```java Optional signedDistance(Vector3d point, Vector3d direction) ``` **Description**: Calculates the signed distance of this plane from the given point with some direction vector. If the sign is positive, to get from the point to the plane, the travel goes to the positive direction according to the direction vector, otherwise the negative direction. The sign tells which side of the plane the given point is on. If the direction vector would never reach the plane, the resulting Optional is empty. **Parameters**: - `point` (Vector3d) - the point - `direction` (Vector3d) - the direction **Returns**: the distance **Since**: 9.10.2 #### `contains` ```java boolean contains(Vector3d point, double tolerance) ``` **Description**: Checks if the distance of the given point for this plane is less than the given tolerance. This can be used to test if a point is on the plane by making epsilon zero or reasonably small. **Parameters**: - `point` (Vector3d) - the point - `tolerance` (double) - the tolerance **Returns**: true if the given point is on the plane, false otherwise **Since**: 9.10.2 #### `project` (1-argument) ```java MVector3d project(Vector3d point) ``` **Description**: Projects the given point onto this plane performing an orthogonal projection. **Parameters**: - `point` (Vector3d) - the point **Returns**: the projected point **Since**: 9.10.2 #### `project` (2-argument) ```java Optional project(Vector3d point, Vector3d direction) ``` **Description**: Projects the given point onto this plane in the direction of the given direction vector. If the direction vector makes it impossible to project the point, an empty Optional is returned. **Parameters**: - `point` (Vector3d) - the point that is project onto this plane - `direction` (Vector3d) - the direction of the projecting ``` -------------------------------- ### Get Girth Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/model/profile/CProfile Retrieves the girth (length) of the C-shaped profile. ```APIDOC ## GET /profile/cshape/girth ### Description Returns the length of girth of the C-shaped profile. ### Method GET ### Endpoint `/profile/cshape/girth` ### Parameters None ### Response #### Success Response (200) - **girth** (Double) - The length of girth of the profile. #### Response Example ```json { "girth": 210.4 } ``` ``` -------------------------------- ### get() - SelectionBasket Method Source: https://solibri.github.io/Developer-Platform/latest/javadoc/index-all Returns the selected components in the selection basket. ```APIDOC ## GET /api/selectionbasket ### Description Returns the selected components in the selection basket. ### Method GET ### Endpoint /api/selectionbasket ### Parameters N/A ### Request Example N/A ### Response #### Success Response (200) - **components** (Array) - A list of selected components. #### Response Example { "components": [ { ... component data ... } ] } ``` -------------------------------- ### Create Line2d Instance in Java Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive2d/Line2d Demonstrates how to create a new instance of the Line2d interface using two Vector2d points. This method is static and requires the first and second bootstrapping points as input. ```java static Line2d create(Vector2d firstPoint, Vector2d secondPoint) ``` -------------------------------- ### Get Wall Thickness Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/model/profile/CProfile Retrieves the wall thickness of the C-shaped profile. ```APIDOC ## GET /profile/cshape/wallThickness ### Description Returns the wall thickness of the C-shaped profile. ### Method GET ### Endpoint `/profile/cshape/wallThickness` ### Parameters None ### Response #### Success Response (200) - **wallThickness** (Double) - The wall thickness of the profile. #### Response Example ```json { "wallThickness": 5.0 } ``` ``` -------------------------------- ### Set MLine3d Start and End Points in Java Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/primitive3d/MLine3d These methods allow for modifying the start and end points of an existing MLine3d object. The `set` method updates both points simultaneously, while `setStartPoint` and `setEndPoint` update individual points. These methods do not take ownership of the provided Vector3d objects. ```java void set(Vector3d startPoint, Vector3d endPoint) ``` ```java void setStartPoint(Vector3d startPoint) ``` ```java void setEndPoint(Vector3d endPoint) ``` -------------------------------- ### GeneralSettings Interface Source: https://solibri.github.io/Developer-Platform/latest/javadoc/index-all Provides access to general settings of the Solibri software. ```APIDOC ## Interface GeneralSettings ### Description Provides access to general settings of the software. ### Method N/A ### Endpoint N/A ### Parameters N/A ### Request Example N/A ### Response #### Success Response (200) N/A #### Response Example N/A ``` -------------------------------- ### Vector2d Creation Methods Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/geometry/linearalgebra/MVector2d Provides static methods for creating new MVector2d instances. ```APIDOC ## Static Factory Methods for MVector2d ### create static MVector2d create() #### Description Returns a 2-dimensional vector with the X and Y values set to 0. #### Method `static MVector2d create()` #### Response Example ```json { "example": "MVector2d(x=0.0, y=0.0)" } ``` ### create static MVector2d 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. #### Response Example ```json { "example": "MVector2d(x=value_of_x, y=value_of_y)" } ``` ### create 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 MVector2d create(Vector2d vec)` #### Parameters - **vec** (Vector2d) - The vector used for setting the values of the created vector. #### Response Example ```json { "example": "MVector2d(x=vec.x, y=vec.y)" } ``` ### to2dVectors static List to2dVectors(List vectors) #### Description Returns the vectors in the given list projected to the XY-plane. The order of the vectors is preserved. #### Method `static List to2dVectors(List vectors)` #### Parameters - **vectors** (List) - Vectors that are projected to the XY-plane. #### Response Example ```json { "example": "List of projected vectors" } ``` ``` -------------------------------- ### get(Quantities.Type) - Quantities Method Source: https://solibri.github.io/Developer-Platform/latest/javadoc/index-all Returns the value of the quantity of a given type. ```APIDOC ## GET /api/quantities/{type} ### Description Returns the value of the quantity of the given type. ### Method GET ### Endpoint /api/quantities/{type} ### Parameters #### Path Parameters - **type** (Quantities.Type) - Required - The type of quantity to retrieve. ### Request Example N/A ### Response #### Success Response (200) - **value** (Number) - The value of the specified quantity. #### Response Example { "value": 10.5 } ``` -------------------------------- ### Classification API - Filter Source: https://solibri.github.io/Developer-Platform/latest/javadoc/index-all Get the total filter that selects which components this classification should classify. ```APIDOC ## GET /api/classification/filter ### Description Get the total filter that selects which components this classification should classify. ### Method GET ### Endpoint /api/classification/filter ### Parameters None ### Request Example None ### Response #### Success Response (200) - **filter** (Filter) - The filter object that defines component selection criteria. #### Response Example ```json { "filter": { "type": "AND", "conditions": [...] } } ``` ``` -------------------------------- ### Java: Create an empty presentation Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/communication/Presentation Demonstrates how to create an empty presentation using the `create()` method. This presentation can be created with or without a name and may be attached to the open project. ```java Presentation presentation = Presentation.create(); ``` -------------------------------- ### Handle Rule and Information Parameters/Resources (Java) Source: https://solibri.github.io/Developer-Platform/latest/javadoc/index-all Static methods to retrieve handlers for rule parameters, rule resources, and information parameters. These are key for configuring and accessing rule and information data. ```java com.solibri.smc.api.checking.RuleParameters.of(Rule) com.solibri.smc.api.checking.RuleResources.of(Rule) com.solibri.smc.api.info.InformationParameters.of(ParametricInformation) ``` -------------------------------- ### Get Internal Fillet Radius Source: https://solibri.github.io/Developer-Platform/latest/javadoc/com/solibri/smc/api/model/profile/CProfile Retrieves the internal fillet radius of the C-shaped profile. ```APIDOC ## GET /profile/cshape/internalFilletRadius ### Description Returns an optional of the internal fillet radius of the C-shaped profile. ### Method GET ### Endpoint `/profile/cshape/internalFilletRadius` ### Parameters None ### Response #### Success Response (200) - **internalFilletRadius** (Optional) - An optional containing the internal fillet radius of the profile, if present. #### Response Example ```json { "internalFilletRadius": 2.5 } ``` ``` -------------------------------- ### Project API - File Information Source: https://solibri.github.io/Developer-Platform/latest/javadoc/index-all Get the file location and save status of a Solibri project. ```APIDOC ## GET /api/project/file ### Description Return the location of the file (.smc) where the project is saved. ### Method GET ### Endpoint /api/project/file ### Parameters None ### Request Example None ### Response #### Success Response (200) - **filePath** (String) - The absolute path to the project file. #### Response Example ```json { "filePath": "/path/to/your/project.smc" } ``` ## GET /api/project/fileStatus ### Description Get the `Project.SaveStatus` of the project file. ### Method GET ### Endpoint /api/project/fileStatus ### Parameters None ### Request Example None ### Response #### Success Response (200) - **saveStatus** (Project.SaveStatus) - The save status of the project file (e.g., SAVED, MODIFIED). #### Response Example ```json { "saveStatus": "MODIFIED" } ``` ```