65 lines
1.8 KiB
Markdown
65 lines
1.8 KiB
Markdown
# union_rsolid
|
|
|
|
## API Definition
|
|
|
|
```python
|
|
def union_rsolid(
|
|
*solids: Union[Solid, Sequence[Solid]],
|
|
clean: bool = True,
|
|
glue: bool = _DEFAULT_UNION_GLUE,
|
|
tol: Optional[float] = None,
|
|
tracking_policy: TrackingPolicy | str = TrackingPolicy.FULL,
|
|
) -> Solid
|
|
```
|
|
|
|
*Source: operations.py*
|
|
|
|
## Import Surface
|
|
|
|
- top-level: `from simplecadapi import union_rsolid`
|
|
|
|
## Description
|
|
|
|
Compute the boolean union and return one solid.
|
|
|
|
Accepts standalone `Solid` objects, lists of `Solid`, and nested sequences,
|
|
but always returns exactly one `Solid`. If the kernel cannot produce
|
|
exactly one solid result, the API raises a clear error instead of
|
|
returning multiple pieces.
|
|
|
|
## Parameters
|
|
|
|
### solids
|
|
|
|
- **Description**: One or more Solid objects or sequences of Solid. Nested sequences are flattened before processing.
|
|
|
|
### clean
|
|
|
|
- **Description**: Unify same-domain faces and remove splitter edges when possible.
|
|
|
|
### glue
|
|
|
|
- **Description**: Enable OCC glue mode for touching or partially overlapping inputs. Defaults to True for SimpleCAD's standard union behavior.
|
|
|
|
### tol
|
|
|
|
- **Type**: `Optional fuzzy-boolean tolerance used by the OCC union kernel. When`
|
|
- **Description**: omitted, SimpleCAD chooses a conservative scale-aware tolerance.
|
|
|
|
### tracking_policy
|
|
|
|
- **Description**: `TrackingPolicy.FULL` computes topology history and lineage. `TrackingPolicy.GRAPH` preserves the canonical union node, parameters, inputs, result topology references, and replay while omitting `TopoDelta` and history-derived topology lineage. Geometry options `clean`, `glue`, and `tol` are unchanged.
|
|
|
|
## Returns
|
|
|
|
Solid: The merged union result.
|
|
|
|
## Examples
|
|
|
|
```python
|
|
body = make_box_rsolid(10, 4, 4, bottom_face_center=(0, 0, 0))
|
|
rib = make_box_rsolid(2, 4, 4, bottom_face_center=(4, 0, 0))
|
|
merged = union_rsolid(body, rib)
|
|
print(merged.get_volume())
|
|
```
|