Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
97eb31a
chore: update CHANGELOG for v0.9.0 (#1753)
pyansys-ci-bot Feb 17, 2025
1547839
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Mar 10, 2025
5a48878
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Mar 27, 2025
4109456
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Apr 8, 2025
e00316b
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu May 20, 2025
1afa37a
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Jun 11, 2025
7c595bb
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Jun 24, 2025
6a23076
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Jul 7, 2025
62ca792
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Jul 9, 2025
40c19c1
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Jul 28, 2025
40a13e2
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Sep 3, 2025
269ec5b
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Sep 22, 2025
6217f4a
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Sep 24, 2025
7a728c4
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Sep 25, 2025
6c462de
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Sep 30, 2025
3611a99
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Oct 8, 2025
c5a4e86
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Oct 11, 2025
ecd7567
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Oct 13, 2025
8b628a2
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Nov 18, 2025
864a537
Exposure of enclosure APIs
smereu Nov 18, 2025
d73f2e4
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Nov 18, 2025
50274ab
chore: adding changelog file 2383.added.md [dependabot-skip]
pyansys-ci-bot Nov 18, 2025
1b3aa8b
fix use of distance + misc. fixes
smereu Nov 18, 2025
2dbfb80
Merge branch 'main' into feat/expose_enclosure_methods
smereu Nov 18, 2025
364f8bf
Merge branch 'feat/expose_enclosure_methods' of https://github.com/an…
smereu Nov 19, 2025
78131d4
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Nov 19, 2025
26685e6
Update prepare_tools.py
smereu Nov 19, 2025
a92ec2c
Merge branch 'feat/expose_enclosure_methods' of https://github.com/an…
smereu Nov 19, 2025
3a197f2
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Nov 19, 2025
b2e516b
Delete doc/changelog.d/1753.maintenance.md
RobPasMue Nov 19, 2025
e56f6f7
Update src/ansys/geometry/core/tools/prepare_tools.py
smereu Nov 19, 2025
d84cbab
Update src/ansys/geometry/core/tools/prepare_tools.py
smereu Nov 19, 2025
16fb69e
Update src/ansys/geometry/core/tools/prepare_tools.py
smereu Nov 19, 2025
aae9c92
Update src/ansys/geometry/core/tools/prepare_tools.py
smereu Nov 19, 2025
e0bc94b
add conversion method + misc. clean-up
smereu Nov 19, 2025
1982bf9
Merge branch 'feat/expose_enclosure_methods' of https://github.com/an…
smereu Nov 19, 2025
0b86c1d
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Nov 19, 2025
ef762a2
Update _incompatible_tests.yml
smereu Nov 19, 2025
9553f3b
Merge branch 'feat/expose_enclosure_methods' of https://github.com/an…
smereu Nov 19, 2025
1f23144
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Nov 19, 2025
9969796
Merge branch 'main' into feat/expose_enclosure_methods
RobPasMue Nov 20, 2025
1ad54c3
Update src/ansys/geometry/core/tools/prepare_tools.py
RobPasMue Nov 20, 2025
141022b
Update tests/integration/test_prepare_tools.py
RobPasMue Nov 20, 2025
395363a
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Nov 20, 2025
fc46879
Merge branch 'main' into feat/expose_enclosure_methods
RobPasMue Nov 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions doc/changelog.d/2383.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Expose enclosure methods
15 changes: 15 additions & 0 deletions src/ansys/geometry/core/_grpc/_services/base/prepare_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,18 @@ def remove_logo(self, **kwargs) -> dict:
def detect_helixes(self, **kwargs) -> dict:
"""Detect helixes in geometry."""
pass

@abstractmethod
def create_box_enclosure(self, **kwargs) -> dict:
"""Create a box enclosure around bodies."""
pass

@abstractmethod
def create_cylinder_enclosure(self, **kwargs) -> dict:
"""Create a cylinder enclosure around bodies."""
pass

@abstractmethod
def create_sphere_enclosure(self, **kwargs) -> dict:
"""Create a sphere enclosure around bodies."""
pass
26 changes: 26 additions & 0 deletions src/ansys/geometry/core/_grpc/_services/v0/conversions.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
TrimmedCurve as GRPCTrimmedCurve,
TrimmedSurface as GRPCTrimmedSurface,
)
from ansys.api.geometry.v0.preparetools_pb2 import EnclosureOptions as GRPCEnclosureOptions
import pint

from ansys.geometry.core.errors import GeometryRuntimeError
Expand Down Expand Up @@ -95,6 +96,7 @@
from ansys.geometry.core.sketch.nurbs import SketchNurbs
from ansys.geometry.core.sketch.polygon import Polygon
from ansys.geometry.core.sketch.segment import SketchSegment
from ansys.geometry.core.tools.prepare_tools import EnclosureOptions


def from_point3d_to_grpc_point(point: "Point3D") -> GRPCPoint:
Expand Down Expand Up @@ -1410,3 +1412,27 @@ def serialize_entity_identifier(entity):
for entity in getattr(response, "deleted_bodies", [])
],
}


def from_enclosure_options_to_grpc_enclosure_options(
enclosure_options: "EnclosureOptions",
) -> GRPCEnclosureOptions:
"""Convert enclosure_options to grpc definition.

Parameters
----------
enclosure_options : EnclosureOptions
Definition of the enclosure options.

Returns
-------
GRPCEnclosureOptions
Grpc converted definition.
"""
frame = enclosure_options.frame
return GRPCEnclosureOptions(
create_shared_topology=enclosure_options.create_shared_topology,
subtract_bodies=enclosure_options.subtract_bodies,
frame=from_frame_to_grpc_frame(frame) if frame is not None else None,
cushion_proportion=enclosure_options.cushion_proportion,
)
100 changes: 99 additions & 1 deletion src/ansys/geometry/core/_grpc/_services/v0/prepare_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@

from ..base.conversions import from_measurement_to_server_length
from ..base.prepare_tools import GRPCPrepareToolsService
from .conversions import build_grpc_id
from .conversions import (
build_grpc_id,
from_enclosure_options_to_grpc_enclosure_options,
serialize_tracker_command_response,
)


class GRPCPrepareToolsServiceV0(GRPCPrepareToolsService):
Expand Down Expand Up @@ -295,3 +299,97 @@ def detect_helixes(self, **kwargs) -> dict: # noqa: D102
for helix in response.helixes
]
}

@protect_grpc
def create_box_enclosure(self, **kwargs) -> dict: # noqa: D102
from ansys.api.geometry.v0.models_pb2 import Body as GRPCBody
from ansys.api.geometry.v0.preparetools_pb2 import CreateEnclosureBoxRequest

grpc_enclosure_options = from_enclosure_options_to_grpc_enclosure_options(
kwargs["enclosure_options"]
)

# Create the request - assumes all inputs are valid and of the proper type
request = CreateEnclosureBoxRequest(
bodies=[GRPCBody(id=body.id) for body in kwargs["bodies"]],
x_low=from_measurement_to_server_length(kwargs["x_low"]),
x_high=from_measurement_to_server_length(kwargs["x_high"]),
y_low=from_measurement_to_server_length(kwargs["y_low"]),
y_high=from_measurement_to_server_length(kwargs["y_high"]),
z_low=from_measurement_to_server_length(kwargs["z_low"]),
z_high=from_measurement_to_server_length(kwargs["z_high"]),
enclosure_options=grpc_enclosure_options,
)

# Call the gRPC service
response = self.stub.CreateEnclosureBox(request)

# Return the response - formatted as a dictionary
serialized_tracker_response = serialize_tracker_command_response(
response=response.command_response
)
return {
"success": response.success,
"created_bodies": [body.id for body in response.created_bodies],
"tracker_response": serialized_tracker_response,
}

@protect_grpc
def create_cylinder_enclosure(self, **kwargs) -> dict: # noqa: D102
from ansys.api.geometry.v0.models_pb2 import Body as GRPCBody
from ansys.api.geometry.v0.preparetools_pb2 import CreateEnclosureCylinderRequest

grpc_enclosure_options = from_enclosure_options_to_grpc_enclosure_options(
kwargs["enclosure_options"]
)

# Create the request - assumes all inputs are valid and of the proper type
request = CreateEnclosureCylinderRequest(
bodies=[GRPCBody(id=body.id) for body in kwargs["bodies"]],
axial_distance_low=from_measurement_to_server_length(kwargs["axial_distance_low"]),
axial_distance_high=from_measurement_to_server_length(kwargs["axial_distance_high"]),
radial_distance=from_measurement_to_server_length(kwargs["radial_distance"]),
enclosure_options=grpc_enclosure_options,
)

# Call the gRPC service
response = self.stub.CreateEnclosureCylinder(request)

# Return the response - formatted as a dictionary
serialized_tracker_response = serialize_tracker_command_response(
response=response.command_response
)
return {
"success": response.success,
"created_bodies": [body.id for body in response.created_bodies],
"tracker_response": serialized_tracker_response,
}

@protect_grpc
def create_sphere_enclosure(self, **kwargs) -> dict: # noqa: D102
from ansys.api.geometry.v0.models_pb2 import Body as GRPCBody
from ansys.api.geometry.v0.preparetools_pb2 import CreateEnclosureSphereRequest

grpc_enclosure_options = from_enclosure_options_to_grpc_enclosure_options(
kwargs["enclosure_options"]
)

# Create the request - assumes all inputs are valid and of the proper type
request = CreateEnclosureSphereRequest(
bodies=[GRPCBody(id=body.id) for body in kwargs["bodies"]],
radial_distance=from_measurement_to_server_length(kwargs["radial_distance"]),
enclosure_options=grpc_enclosure_options,
)

# Call the gRPC service
response = self.stub.CreateEnclosureSphere(request)

# Return the response - formatted as a dictionary
serialized_tracker_response = serialize_tracker_command_response(
response=response.command_response
)
return {
"success": response.success,
"created_bodies": [body.id for body in response.created_bodies],
"tracker_response": serialized_tracker_response,
}
12 changes: 12 additions & 0 deletions src/ansys/geometry/core/_grpc/_services/v1/prepare_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,3 +82,15 @@ def remove_logo(self, **kwargs) -> dict: # noqa: D102
@protect_grpc
def detect_helixes(self, **kwargs) -> dict: # noqa: D102
raise NotImplementedError

@protect_grpc
def create_box_enclosure(self, **kwargs) -> dict: # noqa: D102
raise NotImplementedError

@protect_grpc
def create_cylinder_enclosure(self, **kwargs) -> dict: # noqa: D102
raise NotImplementedError

@protect_grpc
def create_sphere_enclosure(self, **kwargs) -> dict: # noqa: D102
raise NotImplementedError
Loading
Loading