compas-dev / compas-dev/compas_occ
from_extrusion in OCCBrep does not support COMPAS core curves
- Dominant language
- Python
- Stars
- 27
- Forks
- 9
- PR merge metrics
- No merged PRs in 30d
Description
# Feature Request
As a developer using COMPAS core geometry workflows, I want `OCCBrep.from_extrusion` to accept COMPAS core curves (e.g., `Polyline`, `Line`, or `Curve`) so that I can integrate OCC BREP modeling into existing COMPAS-based geometry pipelines without manually converting curves into OCC-specific types.
## Details
### Is your feature request related to a problem? Please describe.
Yes. The `OCCBrep.from_extrusion` function currently requires an `OCCBrepEdge` as input, which in turn expects a curve in the OCC-specific format (e.g., from `OCCCurve`). However, `OCCCurve` does not directly accept core COMPAS curves like `Polyline`, and passing a list of COMPAS `Point` objects results in an argument mismatch in the `BRepBuilderAPI_MakeEdge` constructor.
#### example:
```python
from compas.geometry import Vector
from compas_occ.brep import OCCBrep, OCCBrepEdge
from compas_occ.geometry import OCCCurve
curve = OCCCurve(floor_edge.points) # floor_edge.points is a list of compas.geometry.Point
brep_edge = OCCBrepEdge.from_curve(curve) # ❌ This fails with argument type error
brep_extrusion = OCCBrep.from_extrusion(brep_edge, Vector(0, 0, floor_to_floor_height))
```
Error:
```
Traceback (most recent call last):
File "", line 1, in
File "c:\Users\wangy\.local\share\mamba\envs\cea_compas\lib\site-packages\compas_occ\brep\brepedge.py", line 548, in from_curve
builder = BRepBuilderAPI.BRepBuilderAPI_MakeEdge(curve.occ_curve)
File "c:\Users\wangy\.local\share\mamba\envs\cea_compas\lib\site-packages\OCC\Core\BRepBuilderAPI.py", line 2094, in __init__
_BRepBuilderAPI.BRepBuilderAPI_MakeEdge_swiginit(self, _BRepBuilderAPI.new_BRepBuilderAPI_MakeEdge(*args))
TypeError: Wrong number or type of arguments for overloaded function 'new_BRepBuilderAPI_MakeEdge'.
```
**Describe the solution you'd like**
Allow `OCCBrep.from_extrusion` to accept COMPAS core curves (e.g., Polyline, Line, Curve, etc.) directly and internally handle their conversion to valid OCC curves for BREP construction.
Alternatively, provide a convenience function or automatic casting within `OCCBrepEdge.from_curve` or `OCCCurve` to handle COMPAS core geometries robustly.
**Describe alternatives you've considered**
- Manually converting COMPAS core geometry into OCC-compatible geometry (e.g., writing custom functions to create OCCCurve manually) is cumbersome and error-prone.
- Wrapping extrusion logic with intermediate OCC objects, but this breaks abstraction and compatibility between core COMPAS and compas_occ.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.