From 97eb31adfd9dde4f1ecfa364d7408b09d17bfafd Mon Sep 17 00:00:00 2001 From: PyAnsys CI Bot <92810346+pyansys-ci-bot@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:31:37 +0100 Subject: [PATCH 01/11] chore: update CHANGELOG for v0.9.0 (#1753) --- doc/changelog.d/1258.test.md | 1 - doc/changelog.d/1706.maintenance.md | 1 - doc/changelog.d/1707.added.md | 1 - doc/changelog.d/1708.added.md | 1 - doc/changelog.d/1709.dependencies.md | 1 - doc/changelog.d/1711.fixed.md | 1 - doc/changelog.d/1712.added.md | 1 - doc/changelog.d/1713.test.md | 1 - doc/changelog.d/1714.fixed.md | 1 - doc/changelog.d/1715.fixed.md | 1 - doc/changelog.d/1716.added.md | 1 - doc/changelog.d/1717.maintenance.md | 1 - doc/changelog.d/1719.dependencies.md | 1 - doc/changelog.d/1720.dependencies.md | 1 - doc/changelog.d/1722.maintenance.md | 1 - doc/changelog.d/1723.added.md | 1 - doc/changelog.d/1725.fixed.md | 1 - doc/changelog.d/1726.dependencies.md | 1 - doc/changelog.d/1727.test.md | 1 - doc/changelog.d/1728.dependencies.md | 1 - doc/changelog.d/1729.dependencies.md | 1 - doc/changelog.d/1730.documentation.md | 1 - doc/changelog.d/1732.added.md | 1 - doc/changelog.d/1736.dependencies.md | 1 - doc/changelog.d/1737.maintenance.md | 1 - doc/changelog.d/1739.maintenance.md | 1 - doc/changelog.d/1740.added.md | 1 - doc/changelog.d/1741.added.md | 1 - doc/changelog.d/1742.dependencies.md | 1 - doc/changelog.d/1743.dependencies.md | 1 - doc/changelog.d/1744.dependencies.md | 1 - doc/changelog.d/1745.test.md | 1 - doc/changelog.d/1746.dependencies.md | 1 - doc/changelog.d/1747.dependencies.md | 1 - doc/changelog.d/1749.dependencies.md | 1 - doc/changelog.d/1750.maintenance.md | 1 - doc/changelog.d/1753.maintenance.md | 1 + doc/source/changelog.rst | 67 +++++++++++++++++++++++++++ 38 files changed, 68 insertions(+), 36 deletions(-) delete mode 100644 doc/changelog.d/1258.test.md delete mode 100644 doc/changelog.d/1706.maintenance.md delete mode 100644 doc/changelog.d/1707.added.md delete mode 100644 doc/changelog.d/1708.added.md delete mode 100644 doc/changelog.d/1709.dependencies.md delete mode 100644 doc/changelog.d/1711.fixed.md delete mode 100644 doc/changelog.d/1712.added.md delete mode 100644 doc/changelog.d/1713.test.md delete mode 100644 doc/changelog.d/1714.fixed.md delete mode 100644 doc/changelog.d/1715.fixed.md delete mode 100644 doc/changelog.d/1716.added.md delete mode 100644 doc/changelog.d/1717.maintenance.md delete mode 100644 doc/changelog.d/1719.dependencies.md delete mode 100644 doc/changelog.d/1720.dependencies.md delete mode 100644 doc/changelog.d/1722.maintenance.md delete mode 100644 doc/changelog.d/1723.added.md delete mode 100644 doc/changelog.d/1725.fixed.md delete mode 100644 doc/changelog.d/1726.dependencies.md delete mode 100644 doc/changelog.d/1727.test.md delete mode 100644 doc/changelog.d/1728.dependencies.md delete mode 100644 doc/changelog.d/1729.dependencies.md delete mode 100644 doc/changelog.d/1730.documentation.md delete mode 100644 doc/changelog.d/1732.added.md delete mode 100644 doc/changelog.d/1736.dependencies.md delete mode 100644 doc/changelog.d/1737.maintenance.md delete mode 100644 doc/changelog.d/1739.maintenance.md delete mode 100644 doc/changelog.d/1740.added.md delete mode 100644 doc/changelog.d/1741.added.md delete mode 100644 doc/changelog.d/1742.dependencies.md delete mode 100644 doc/changelog.d/1743.dependencies.md delete mode 100644 doc/changelog.d/1744.dependencies.md delete mode 100644 doc/changelog.d/1745.test.md delete mode 100644 doc/changelog.d/1746.dependencies.md delete mode 100644 doc/changelog.d/1747.dependencies.md delete mode 100644 doc/changelog.d/1749.dependencies.md delete mode 100644 doc/changelog.d/1750.maintenance.md create mode 100644 doc/changelog.d/1753.maintenance.md diff --git a/doc/changelog.d/1258.test.md b/doc/changelog.d/1258.test.md deleted file mode 100644 index 7cde69eb55..0000000000 --- a/doc/changelog.d/1258.test.md +++ /dev/null @@ -1 +0,0 @@ -verifying issue with empty intersect and temporal body creation \ No newline at end of file diff --git a/doc/changelog.d/1706.maintenance.md b/doc/changelog.d/1706.maintenance.md deleted file mode 100644 index 6f4c1c0089..0000000000 --- a/doc/changelog.d/1706.maintenance.md +++ /dev/null @@ -1 +0,0 @@ -update CHANGELOG for v0.8.2 \ No newline at end of file diff --git a/doc/changelog.d/1707.added.md b/doc/changelog.d/1707.added.md deleted file mode 100644 index 2602f1720f..0000000000 --- a/doc/changelog.d/1707.added.md +++ /dev/null @@ -1 +0,0 @@ -design activation changes \ No newline at end of file diff --git a/doc/changelog.d/1708.added.md b/doc/changelog.d/1708.added.md deleted file mode 100644 index 52cde5ead5..0000000000 --- a/doc/changelog.d/1708.added.md +++ /dev/null @@ -1 +0,0 @@ -add contributors \ No newline at end of file diff --git a/doc/changelog.d/1709.dependencies.md b/doc/changelog.d/1709.dependencies.md deleted file mode 100644 index 3c05c97bf8..0000000000 --- a/doc/changelog.d/1709.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump ansys-api-geometry from 0.4.33 to 0.4.34 \ No newline at end of file diff --git a/doc/changelog.d/1711.fixed.md b/doc/changelog.d/1711.fixed.md deleted file mode 100644 index 277af98686..0000000000 --- a/doc/changelog.d/1711.fixed.md +++ /dev/null @@ -1 +0,0 @@ -re enable fmd tests \ No newline at end of file diff --git a/doc/changelog.d/1712.added.md b/doc/changelog.d/1712.added.md deleted file mode 100644 index 0d2f01063a..0000000000 --- a/doc/changelog.d/1712.added.md +++ /dev/null @@ -1 +0,0 @@ -Implementation of inspect & repair geometry \ No newline at end of file diff --git a/doc/changelog.d/1713.test.md b/doc/changelog.d/1713.test.md deleted file mode 100644 index 4c10d27211..0000000000 --- a/doc/changelog.d/1713.test.md +++ /dev/null @@ -1 +0,0 @@ -Expand pattern tests \ No newline at end of file diff --git a/doc/changelog.d/1714.fixed.md b/doc/changelog.d/1714.fixed.md deleted file mode 100644 index e58c41f4d9..0000000000 --- a/doc/changelog.d/1714.fixed.md +++ /dev/null @@ -1 +0,0 @@ -support body mirror on linux \ No newline at end of file diff --git a/doc/changelog.d/1715.fixed.md b/doc/changelog.d/1715.fixed.md deleted file mode 100644 index 9af9372ee1..0000000000 --- a/doc/changelog.d/1715.fixed.md +++ /dev/null @@ -1 +0,0 @@ -use sketch plane for imprint/project curves \ No newline at end of file diff --git a/doc/changelog.d/1716.added.md b/doc/changelog.d/1716.added.md deleted file mode 100644 index e90bde071a..0000000000 --- a/doc/changelog.d/1716.added.md +++ /dev/null @@ -1 +0,0 @@ -launch core service from envar \ No newline at end of file diff --git a/doc/changelog.d/1717.maintenance.md b/doc/changelog.d/1717.maintenance.md deleted file mode 100644 index c655a0905a..0000000000 --- a/doc/changelog.d/1717.maintenance.md +++ /dev/null @@ -1 +0,0 @@ -pre-commit automatic update \ No newline at end of file diff --git a/doc/changelog.d/1719.dependencies.md b/doc/changelog.d/1719.dependencies.md deleted file mode 100644 index 883bfafc7c..0000000000 --- a/doc/changelog.d/1719.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump ansys-sphinx-theme[autoapi] from 1.2.6 to 1.2.7 in the docs-deps group \ No newline at end of file diff --git a/doc/changelog.d/1720.dependencies.md b/doc/changelog.d/1720.dependencies.md deleted file mode 100644 index 0f3ca21a1e..0000000000 --- a/doc/changelog.d/1720.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump ansys-api-geometry from 0.4.34 to 0.4.35 \ No newline at end of file diff --git a/doc/changelog.d/1722.maintenance.md b/doc/changelog.d/1722.maintenance.md deleted file mode 100644 index 61a75a0ef5..0000000000 --- a/doc/changelog.d/1722.maintenance.md +++ /dev/null @@ -1 +0,0 @@ -update SECURITY.md versions supported \ No newline at end of file diff --git a/doc/changelog.d/1723.added.md b/doc/changelog.d/1723.added.md deleted file mode 100644 index 27a925f003..0000000000 --- a/doc/changelog.d/1723.added.md +++ /dev/null @@ -1 +0,0 @@ -workflow enhancements for better tool results \ No newline at end of file diff --git a/doc/changelog.d/1725.fixed.md b/doc/changelog.d/1725.fixed.md deleted file mode 100644 index 5bec5d4ba9..0000000000 --- a/doc/changelog.d/1725.fixed.md +++ /dev/null @@ -1 +0,0 @@ -revert boolean ops logic and hold-off on commands-based implementation (temporarily) \ No newline at end of file diff --git a/doc/changelog.d/1726.dependencies.md b/doc/changelog.d/1726.dependencies.md deleted file mode 100644 index aae2364dc8..0000000000 --- a/doc/changelog.d/1726.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump ansys-sphinx-theme[autoapi] from 1.2.7 to 1.3.0 in the docs-deps group \ No newline at end of file diff --git a/doc/changelog.d/1727.test.md b/doc/changelog.d/1727.test.md deleted file mode 100644 index d4caa81efc..0000000000 --- a/doc/changelog.d/1727.test.md +++ /dev/null @@ -1 +0,0 @@ -set body name \ No newline at end of file diff --git a/doc/changelog.d/1728.dependencies.md b/doc/changelog.d/1728.dependencies.md deleted file mode 100644 index 16cad54f2c..0000000000 --- a/doc/changelog.d/1728.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump ansys-sphinx-theme[autoapi] from 1.3.0 to 1.3.1 in the docs-deps group \ No newline at end of file diff --git a/doc/changelog.d/1729.dependencies.md b/doc/changelog.d/1729.dependencies.md deleted file mode 100644 index 7cfa83a813..0000000000 --- a/doc/changelog.d/1729.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump ansys-api-geometry from 0.4.35 to 0.4.36 \ No newline at end of file diff --git a/doc/changelog.d/1730.documentation.md b/doc/changelog.d/1730.documentation.md deleted file mode 100644 index deb88451eb..0000000000 --- a/doc/changelog.d/1730.documentation.md +++ /dev/null @@ -1 +0,0 @@ -update CONTRIBUTING.md \ No newline at end of file diff --git a/doc/changelog.d/1732.added.md b/doc/changelog.d/1732.added.md deleted file mode 100644 index 07b49458c3..0000000000 --- a/doc/changelog.d/1732.added.md +++ /dev/null @@ -1 +0,0 @@ -add face color, round info, bring measure tools to linux \ No newline at end of file diff --git a/doc/changelog.d/1736.dependencies.md b/doc/changelog.d/1736.dependencies.md deleted file mode 100644 index 5c12517a19..0000000000 --- a/doc/changelog.d/1736.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump trame-vtk from 2.8.14 to 2.8.15 \ No newline at end of file diff --git a/doc/changelog.d/1737.maintenance.md b/doc/changelog.d/1737.maintenance.md deleted file mode 100644 index c655a0905a..0000000000 --- a/doc/changelog.d/1737.maintenance.md +++ /dev/null @@ -1 +0,0 @@ -pre-commit automatic update \ No newline at end of file diff --git a/doc/changelog.d/1739.maintenance.md b/doc/changelog.d/1739.maintenance.md deleted file mode 100644 index 9e32bd93f9..0000000000 --- a/doc/changelog.d/1739.maintenance.md +++ /dev/null @@ -1 +0,0 @@ -keep simba-plugin-geometry tag \ No newline at end of file diff --git a/doc/changelog.d/1740.added.md b/doc/changelog.d/1740.added.md deleted file mode 100644 index c7191a660d..0000000000 --- a/doc/changelog.d/1740.added.md +++ /dev/null @@ -1 +0,0 @@ -conservative approach to single design per modeler \ No newline at end of file diff --git a/doc/changelog.d/1741.added.md b/doc/changelog.d/1741.added.md deleted file mode 100644 index bdcedd10cd..0000000000 --- a/doc/changelog.d/1741.added.md +++ /dev/null @@ -1 +0,0 @@ -export glb \ No newline at end of file diff --git a/doc/changelog.d/1742.dependencies.md b/doc/changelog.d/1742.dependencies.md deleted file mode 100644 index 14c7ab84ee..0000000000 --- a/doc/changelog.d/1742.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump jupytext from 1.16.6 to 1.16.7 in the docs-deps group \ No newline at end of file diff --git a/doc/changelog.d/1743.dependencies.md b/doc/changelog.d/1743.dependencies.md deleted file mode 100644 index d499e54ae5..0000000000 --- a/doc/changelog.d/1743.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump ansys-api-geometry from 0.4.36 to 0.4.37 \ No newline at end of file diff --git a/doc/changelog.d/1744.dependencies.md b/doc/changelog.d/1744.dependencies.md deleted file mode 100644 index 184bfb5bf9..0000000000 --- a/doc/changelog.d/1744.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump myst-parser from 4.0.0 to 4.0.1 in the docs-deps group \ No newline at end of file diff --git a/doc/changelog.d/1745.test.md b/doc/changelog.d/1745.test.md deleted file mode 100644 index 5a737e92ac..0000000000 --- a/doc/changelog.d/1745.test.md +++ /dev/null @@ -1 +0,0 @@ -activate 8 linux tests \ No newline at end of file diff --git a/doc/changelog.d/1746.dependencies.md b/doc/changelog.d/1746.dependencies.md deleted file mode 100644 index d9c564d265..0000000000 --- a/doc/changelog.d/1746.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump ansys-api-geometry from 0.4.37 to 0.4.38 \ No newline at end of file diff --git a/doc/changelog.d/1747.dependencies.md b/doc/changelog.d/1747.dependencies.md deleted file mode 100644 index 186365ae6f..0000000000 --- a/doc/changelog.d/1747.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump numpy from 2.2.2 to 2.2.3 \ No newline at end of file diff --git a/doc/changelog.d/1749.dependencies.md b/doc/changelog.d/1749.dependencies.md deleted file mode 100644 index daaa01a760..0000000000 --- a/doc/changelog.d/1749.dependencies.md +++ /dev/null @@ -1 +0,0 @@ -bump panel from 1.6.0 to 1.6.1 \ No newline at end of file diff --git a/doc/changelog.d/1750.maintenance.md b/doc/changelog.d/1750.maintenance.md deleted file mode 100644 index ed0a9ae502..0000000000 --- a/doc/changelog.d/1750.maintenance.md +++ /dev/null @@ -1 +0,0 @@ -enhancements to GLB export and object ``plot()`` methods \ No newline at end of file diff --git a/doc/changelog.d/1753.maintenance.md b/doc/changelog.d/1753.maintenance.md new file mode 100644 index 0000000000..97e5671828 --- /dev/null +++ b/doc/changelog.d/1753.maintenance.md @@ -0,0 +1 @@ +update CHANGELOG for v0.9.0 \ No newline at end of file diff --git a/doc/source/changelog.rst b/doc/source/changelog.rst index 3583da64d4..cabf5ee6b2 100644 --- a/doc/source/changelog.rst +++ b/doc/source/changelog.rst @@ -9,6 +9,73 @@ This document contains the release notes for the PyAnsys Geometry project. .. towncrier release notes start +`0.9.0 `_ - 2025-02-17 +===================================================================================== + +Added +^^^^^ + +- design activation changes `#1707 `_ +- add contributors `#1708 `_ +- Implementation of inspect & repair geometry `#1712 `_ +- launch core service from envar `#1716 `_ +- workflow enhancements for better tool results `#1723 `_ +- add face color, round info, bring measure tools to linux `#1732 `_ +- conservative approach to single design per modeler `#1740 `_ +- export glb `#1741 `_ + + +Dependencies +^^^^^^^^^^^^ + +- bump ansys-api-geometry from 0.4.33 to 0.4.34 `#1709 `_ +- bump ansys-sphinx-theme[autoapi] from 1.2.6 to 1.2.7 in the docs-deps group `#1719 `_ +- bump ansys-api-geometry from 0.4.34 to 0.4.35 `#1720 `_ +- bump ansys-sphinx-theme[autoapi] from 1.2.7 to 1.3.0 in the docs-deps group `#1726 `_ +- bump ansys-sphinx-theme[autoapi] from 1.3.0 to 1.3.1 in the docs-deps group `#1728 `_ +- bump ansys-api-geometry from 0.4.35 to 0.4.36 `#1729 `_ +- bump trame-vtk from 2.8.14 to 2.8.15 `#1736 `_ +- bump jupytext from 1.16.6 to 1.16.7 in the docs-deps group `#1742 `_ +- bump ansys-api-geometry from 0.4.36 to 0.4.37 `#1743 `_ +- bump myst-parser from 4.0.0 to 4.0.1 in the docs-deps group `#1744 `_ +- bump ansys-api-geometry from 0.4.37 to 0.4.38 `#1746 `_ +- bump numpy from 2.2.2 to 2.2.3 `#1747 `_ +- bump panel from 1.6.0 to 1.6.1 `#1749 `_ + + +Documentation +^^^^^^^^^^^^^ + +- update CONTRIBUTING.md `#1730 `_ + + +Fixed +^^^^^ + +- re enable fmd tests `#1711 `_ +- support body mirror on linux `#1714 `_ +- use sketch plane for imprint/project curves `#1715 `_ +- revert boolean ops logic and hold-off on commands-based implementation (temporarily) `#1725 `_ + + +Maintenance +^^^^^^^^^^^ + +- update CHANGELOG for v0.8.2 `#1706 `_ +- pre-commit automatic update `#1717 `_, `#1737 `_ +- update SECURITY.md versions supported `#1722 `_ +- keep simba-plugin-geometry tag `#1739 `_ +- enhancements to GLB export and object ``plot()`` methods `#1750 `_ + + +Test +^^^^ + +- verifying issue with empty intersect and temporal body creation `#1258 `_ +- Expand pattern tests `#1713 `_ +- set body name `#1727 `_ +- activate 8 linux tests `#1745 `_ + `0.8.2 `_ - 2025-01-29 ===================================================================================== From b76d58b7e2d65469ae19beb4e54f7af7377dfde0 Mon Sep 17 00:00:00 2001 From: smereu Date: Thu, 4 Dec 2025 22:27:12 -0600 Subject: [PATCH 02/11] v1 implementation of beam.py --- .../geometry/core/_grpc/_services/v1/beams.py | 182 +++++++++++++++++- 1 file changed, 175 insertions(+), 7 deletions(-) diff --git a/src/ansys/geometry/core/_grpc/_services/v1/beams.py b/src/ansys/geometry/core/_grpc/_services/v1/beams.py index c45305b103..41f8822ac8 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/beams.py @@ -26,6 +26,16 @@ from ansys.geometry.core.errors import protect_grpc from ..base.beams import GRPCBeamsService +from ..base.conversions import to_distance +from .conversions import ( + build_grpc_id, + from_grpc_curve_to_curve, + from_grpc_frame_to_frame, + from_grpc_material_to_material, + from_grpc_point_to_point3d, + from_plane_to_grpc_plane, + from_point3d_to_grpc_point, +) class GRPCBeamsServiceV1(GRPCBeamsService): @@ -43,26 +53,184 @@ class GRPCBeamsServiceV1(GRPCBeamsService): @protect_grpc def __init__(self, channel: grpc.Channel): # noqa: D102 - from ansys.api.discovery.v1.assignments.beams import BeamsStub + from ansys.api.discovery.v1.engineeringdata.beamprofiledata_pb2_grpc import ( + BeamProfileDataStub, + ) - self.stub = BeamsStub(channel) + self.beam_commands_stub = BeamProfileDataStub @protect_grpc def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 - raise NotImplementedError + from ansys.api.discovery.v1.commonmessages_pb2 import Line + from ansys.api.discovery.v1.engineeringdata.beamprofiledata_pb2 import ( + CreateBeamProfileSegmentsRequest, + CreateBeamProfileSegmentsRequestData, + ) + + # Create the gRPC Line objects + lines = [] + for segment in kwargs["segments"]: + lines.append( + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) + ) + + # Create the request - assumes all inputs are valid and of the proper type + request = CreateBeamProfileSegmentsRequest( + request_data=[ + CreateBeamProfileSegmentsRequestData( + profile_id=kwargs["profile_id"], + parent_id=build_grpc_id(kwargs["parent_id"]), + lines=lines, + ) + ] + ) + + # Call the gRPC service + response = self.beam_commands_stub.CreateSegments(request) + + # Return the response - formatted as a dictionary + return { + "beam_ids": [ + [beam.id for beam in response_data.beams_ids] + for response_data in response.response_data + ] + } @protect_grpc def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 - raise NotImplementedError + from ansys.api.discovery.v1.commonmessages_pb2 import Line + from ansys.api.discovery.v1.engineeringdata.beamprofiledata_pb2 import ( + CreateBeamProfileSegmentsRequest, + CreateBeamProfileSegmentsRequestData, + ) + + from ansys.geometry.core.shapes.parameterization import Interval, ParamUV + + # Create the gRPC Line objects + lines = [] + for segment in kwargs["segments"]: + lines.append( + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) + ) + + # Create the request - assumes all inputs are valid and of the proper type + request = CreateBeamProfileSegmentsRequest( + request_data=[ + CreateBeamProfileSegmentsRequestData( + profile_id=kwargs["profile_id"], + parent_id=build_grpc_id(kwargs["parent_id"]), + lines=lines, + ) + ] + ) + + # Call the gRPC service + response = self.beam_commands_stub.CreateDescriptiveSegments(request) + + # Return the response - formatted as a dictionary + return { + "created_beams": [ + { + "cross_section": { + "section_anchor": beam.cross_section.section_anchor, + "section_angle": beam.cross_section.section_angle, + "section_frame": from_grpc_frame_to_frame(beam.cross_section.section_frame), + "section_profile": [ + [ + { + "geometry": from_grpc_curve_to_curve(curve.curve), + "start": from_grpc_point_to_point3d(curve.start), + "end": from_grpc_point_to_point3d(curve.end), + "interval": Interval(curve.interval_start, curve.interval_end), + "length": to_distance(curve.length).value, + } + for curve in curve_list.curves + ] + for curve_list in beam.cross_section.section_profile + ], + }, + "properties": { + "area": beam.properties.area, + "centroid": ParamUV(beam.properties.centroid_x, beam.properties.centroid_y), + "warping_constant": beam.properties.warping_constant, + "ixx": beam.properties.ixx, + "ixy": beam.properties.ixy, + "iyy": beam.properties.iyy, + "shear_center": ParamUV( + beam.properties.shear_center_x, beam.properties.shear_center_y + ), + "torsional_constant": beam.properties.torsional_constant, + }, + "id": beam.id.id, + "start": from_grpc_point_to_point3d(beam.shape.start), + "end": from_grpc_point_to_point3d(beam.shape.end), + "name": beam.name, + "is_deleted": beam.is_deleted, + "is_reversed": beam.is_reversed, + "is_rigid": beam.is_rigid, + "material": from_grpc_material_to_material(beam.material), + "shape": { + "geometry": from_grpc_curve_to_curve(beam.shape.curve), + "start": from_grpc_point_to_point3d(beam.shape.start), + "end": from_grpc_point_to_point3d(beam.shape.end), + "interval": Interval(beam.shape.interval_start, beam.shape.interval_end), + "length": to_distance(beam.shape.length).value, + }, + "beam_type": beam.type, + } + for response_data in response.response_data + for beam in response_data.beams + ], + } @protect_grpc def delete_beam(self, **kwargs) -> dict: # noqa: D102 - raise NotImplementedError + from ansys.api.discovery.v1.commonmessages_pb2 import MultipleEntitiesRequest + + # Create the request - assumes all inputs are valid and of the proper type + request = MultipleEntitiesRequest(ids=[build_grpc_id(kwargs["beam_id"])]) + + # Call the gRPC service + _ = self.beam_commands_stub.Delete(request) + + # Return the response - formatted as a dictionary + return {} @protect_grpc def delete_beam_profile(self, **kwargs) -> dict: # noqa: D102 raise NotImplementedError @protect_grpc - def create_beam_circular_profile(self, **kwargs) -> dict: # noqa: D102 - raise NotImplementedError + def create_beam_circular_profile(self, **kwargs) -> dict: # noqa: D10 + from ansys.api.discovery.v1.engineeringdata.beamprofiledata_pb2 import ( + CreateBeamProfileCircularRequest, + CreateBeamProfileCircularRequestData, + ) + + from .conversions import from_length_to_grpc_quantity + + # Create the request - assumes all inputs are valid and of the proper type + request = CreateBeamProfileCircularRequest( + request_data=[ + CreateBeamProfileCircularRequestData( + origin=from_point3d_to_grpc_point(kwargs["center"]), + radius=from_length_to_grpc_quantity(kwargs["radius"]), + plane=from_plane_to_grpc_plane(kwargs["plane"]), + name=kwargs["name"], + ) + ] + ) + + # Call the gRPC service + response = self.beam_commands_stub.CreateCircular(request) + + # Return the response - formatted as a dictionary + # Note: response.ids is a repeated field, we return the first one + created_beam_entity = response.ids[0] + return {"id": created_beam_entity} From 4631b58720a46115bcdd09e7c5d7a30148c862af Mon Sep 17 00:00:00 2001 From: smereu Date: Thu, 4 Dec 2025 22:32:13 -0600 Subject: [PATCH 03/11] clean-up --- src/ansys/geometry/core/_grpc/_services/v1/beams.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/geometry/core/_grpc/_services/v1/beams.py b/src/ansys/geometry/core/_grpc/_services/v1/beams.py index 41f8822ac8..0c022bae55 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/beams.py @@ -233,4 +233,4 @@ def create_beam_circular_profile(self, **kwargs) -> dict: # noqa: D10 # Return the response - formatted as a dictionary # Note: response.ids is a repeated field, we return the first one created_beam_entity = response.ids[0] - return {"id": created_beam_entity} + return {"id": created_beam_entity.id} From d11f4eb10c943bb240a2cbfcefc8874b7b121617 Mon Sep 17 00:00:00 2001 From: pyansys-ci-bot <92810346+pyansys-ci-bot@users.noreply.github.com> Date: Fri, 5 Dec 2025 04:32:18 +0000 Subject: [PATCH 04/11] chore: adding changelog file 2444.maintenance.md [dependabot-skip] --- doc/changelog.d/2444.maintenance.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/changelog.d/2444.maintenance.md diff --git a/doc/changelog.d/2444.maintenance.md b/doc/changelog.d/2444.maintenance.md new file mode 100644 index 0000000000..a42f1cf393 --- /dev/null +++ b/doc/changelog.d/2444.maintenance.md @@ -0,0 +1 @@ +Chore: v1 implementation of beam stub From 7d79c12d749551eb2ecf75ca98947f01cca24787 Mon Sep 17 00:00:00 2001 From: smereu <39596710+smereu@users.noreply.github.com> Date: Fri, 5 Dec 2025 13:09:00 -0600 Subject: [PATCH 05/11] Update src/ansys/geometry/core/_grpc/_services/v1/beams.py Co-authored-by: Jacob Kerstetter <83893427+jacobrkerstetter@users.noreply.github.com> --- src/ansys/geometry/core/_grpc/_services/v1/beams.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/geometry/core/_grpc/_services/v1/beams.py b/src/ansys/geometry/core/_grpc/_services/v1/beams.py index 0c022bae55..dc2820714f 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/beams.py @@ -81,7 +81,7 @@ def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 request = CreateBeamProfileSegmentsRequest( request_data=[ CreateBeamProfileSegmentsRequestData( - profile_id=kwargs["profile_id"], + profile_id=build_grpc_id(kwargs["profile_id"]), parent_id=build_grpc_id(kwargs["parent_id"]), lines=lines, ) From 5145e888c2d2fa1694fb437ec5c9cef3805c3df4 Mon Sep 17 00:00:00 2001 From: smereu <39596710+smereu@users.noreply.github.com> Date: Fri, 5 Dec 2025 13:09:21 -0600 Subject: [PATCH 06/11] Update src/ansys/geometry/core/_grpc/_services/v1/beams.py Co-authored-by: Jacob Kerstetter <83893427+jacobrkerstetter@users.noreply.github.com> --- src/ansys/geometry/core/_grpc/_services/v1/beams.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/geometry/core/_grpc/_services/v1/beams.py b/src/ansys/geometry/core/_grpc/_services/v1/beams.py index dc2820714f..2409ec535a 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/beams.py @@ -123,7 +123,7 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 request = CreateBeamProfileSegmentsRequest( request_data=[ CreateBeamProfileSegmentsRequestData( - profile_id=kwargs["profile_id"], + profile_id=build_grpc_id(kwargs["profile_id"]), parent_id=build_grpc_id(kwargs["parent_id"]), lines=lines, ) From f27357e4d175015ef1c46fa83c661da9f6d42776 Mon Sep 17 00:00:00 2001 From: smereu Date: Fri, 5 Dec 2025 13:25:48 -0600 Subject: [PATCH 07/11] Misc fixes from code review --- .../geometry/core/_grpc/_services/v0/beams.py | 17 +++++--- .../geometry/core/_grpc/_services/v1/beams.py | 42 +++++++++++++------ 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/ansys/geometry/core/_grpc/_services/v0/beams.py b/src/ansys/geometry/core/_grpc/_services/v0/beams.py index b946b7117a..21cd9cbcf6 100644 --- a/src/ansys/geometry/core/_grpc/_services/v0/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v0/beams.py @@ -34,6 +34,7 @@ from_grpc_frame_to_frame, from_grpc_material_to_material, from_grpc_point_to_point3d, + from_line_to_grpc_line, from_plane_to_grpc_plane, from_point3d_to_grpc_point, ) @@ -67,9 +68,11 @@ def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), + from_line_to_grpc_line( + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) ) @@ -99,9 +102,11 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), + from_line_to_grpc_line( + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) ) diff --git a/src/ansys/geometry/core/_grpc/_services/v1/beams.py b/src/ansys/geometry/core/_grpc/_services/v1/beams.py index 0c022bae55..2191679fb0 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/beams.py @@ -33,6 +33,7 @@ from_grpc_frame_to_frame, from_grpc_material_to_material, from_grpc_point_to_point3d, + from_line_to_grpc_line, from_plane_to_grpc_plane, from_point3d_to_grpc_point, ) @@ -53,11 +54,15 @@ class GRPCBeamsServiceV1(GRPCBeamsService): @protect_grpc def __init__(self, channel: grpc.Channel): # noqa: D102 + from ansys.api.discovery.v1.design.extensions.beam_pb2_grpc import ( + BeamStub, + ) from ansys.api.discovery.v1.engineeringdata.beamprofiledata_pb2_grpc import ( BeamProfileDataStub, ) - self.beam_commands_stub = BeamProfileDataStub + self.beam_profile_commands_stub = BeamProfileDataStub(channel) + self.beam_commands_stub = BeamStub(channel) @protect_grpc def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 @@ -71,9 +76,11 @@ def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), + from_line_to_grpc_line( + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) ) @@ -89,7 +96,7 @@ def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 ) # Call the gRPC service - response = self.beam_commands_stub.CreateSegments(request) + response = self.beam_profile_commands_stub.CreateSegments(request) # Return the response - formatted as a dictionary return { @@ -113,9 +120,11 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), + from_line_to_grpc_line( + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) ) @@ -131,7 +140,7 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 ) # Call the gRPC service - response = self.beam_commands_stub.CreateDescriptiveSegments(request) + response = self.beam_profile_commands_stub.CreateDescriptiveSegments(request) # Return the response - formatted as a dictionary return { @@ -204,10 +213,19 @@ def delete_beam(self, **kwargs) -> dict: # noqa: D102 @protect_grpc def delete_beam_profile(self, **kwargs) -> dict: # noqa: D102 - raise NotImplementedError + from ansys.api.discovery.v1.commonmessages_pb2 import MultipleEntitiesRequest + + # Create the request - assumes all inputs are valid and of the proper type + request = MultipleEntitiesRequest(ids=[build_grpc_id(kwargs["beam_id"])]) + + # Call the gRPC service + _ = self.beam_profile_commands_stub.Delete(request) + + # Return the response - formatted as a dictionary + return {} @protect_grpc - def create_beam_circular_profile(self, **kwargs) -> dict: # noqa: D10 + def create_beam_circular_profile(self, **kwargs) -> dict: # noqa: D102 from ansys.api.discovery.v1.engineeringdata.beamprofiledata_pb2 import ( CreateBeamProfileCircularRequest, CreateBeamProfileCircularRequestData, @@ -228,7 +246,7 @@ def create_beam_circular_profile(self, **kwargs) -> dict: # noqa: D10 ) # Call the gRPC service - response = self.beam_commands_stub.CreateCircular(request) + response = self.beam_profile_commands_stub.CreateCircular(request) # Return the response - formatted as a dictionary # Note: response.ids is a repeated field, we return the first one From 44c9df32584e838109df08684e411533f40c4d9d Mon Sep 17 00:00:00 2001 From: smereu Date: Mon, 8 Dec 2025 14:18:17 -0600 Subject: [PATCH 08/11] Fix beam tests Fix beam tests --- .../geometry/core/_grpc/_services/v0/beams.py | 6 +-- .../geometry/core/_grpc/_services/v1/beams.py | 31 ++++++----- .../core/_grpc/_services/v1/conversions.py | 51 +++++++++++++++++-- 3 files changed, 67 insertions(+), 21 deletions(-) diff --git a/src/ansys/geometry/core/_grpc/_services/v0/beams.py b/src/ansys/geometry/core/_grpc/_services/v0/beams.py index 21cd9cbcf6..f0d3627bca 100644 --- a/src/ansys/geometry/core/_grpc/_services/v0/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v0/beams.py @@ -68,12 +68,10 @@ def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - from_line_to_grpc_line( Line( start=from_point3d_to_grpc_point(segment[0]), end=from_point3d_to_grpc_point(segment[1]), ) - ) ) # Create the request - assumes all inputs are valid and of the proper type @@ -102,12 +100,12 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - from_line_to_grpc_line( + Line( start=from_point3d_to_grpc_point(segment[0]), end=from_point3d_to_grpc_point(segment[1]), ) - ) + ) # Create the request - assumes all inputs are valid and of the proper type diff --git a/src/ansys/geometry/core/_grpc/_services/v1/beams.py b/src/ansys/geometry/core/_grpc/_services/v1/beams.py index ac8c668f81..ff61df6f88 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/beams.py @@ -24,16 +24,19 @@ import grpc from ansys.geometry.core.errors import protect_grpc +from ansys.geometry.core.misc.measurements import DEFAULT_UNITS from ..base.beams import GRPCBeamsService from ..base.conversions import to_distance from .conversions import ( build_grpc_id, + from_grpc_angle_to_angle, from_grpc_curve_to_curve, from_grpc_frame_to_frame, + from_grpc_quantity_to_distance, + from_grpc_quantity_to_float, from_grpc_material_to_material, from_grpc_point_to_point3d, - from_line_to_grpc_line, from_plane_to_grpc_plane, from_point3d_to_grpc_point, ) @@ -76,12 +79,12 @@ def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - from_line_to_grpc_line( + Line( start=from_point3d_to_grpc_point(segment[0]), end=from_point3d_to_grpc_point(segment[1]), ) - ) + ) # Create the request - assumes all inputs are valid and of the proper type @@ -120,12 +123,12 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - from_line_to_grpc_line( + Line( start=from_point3d_to_grpc_point(segment[0]), end=from_point3d_to_grpc_point(segment[1]), ) - ) + ) # Create the request - assumes all inputs are valid and of the proper type @@ -148,7 +151,7 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 { "cross_section": { "section_anchor": beam.cross_section.section_anchor, - "section_angle": beam.cross_section.section_angle, + "section_angle": (from_grpc_angle_to_angle(beam.cross_section.section_angle)).m_as(DEFAULT_UNITS.SERVER_ANGLE), "section_frame": from_grpc_frame_to_frame(beam.cross_section.section_frame), "section_profile": [ [ @@ -165,16 +168,16 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 ], }, "properties": { - "area": beam.properties.area, + "area": from_grpc_quantity_to_float(beam.properties.area), "centroid": ParamUV(beam.properties.centroid_x, beam.properties.centroid_y), - "warping_constant": beam.properties.warping_constant, - "ixx": beam.properties.ixx, - "ixy": beam.properties.ixy, - "iyy": beam.properties.iyy, + "warping_constant": from_grpc_quantity_to_float(beam.properties.warping_constant), + "ixx": from_grpc_quantity_to_float(beam.properties.ixx), + "ixy": from_grpc_quantity_to_float(beam.properties.ixy), + "iyy": from_grpc_quantity_to_float(beam.properties.iyy), "shear_center": ParamUV( beam.properties.shear_center_x, beam.properties.shear_center_y ), - "torsional_constant": beam.properties.torsional_constant, + "torsional_constant": from_grpc_quantity_to_float(beam.properties.torsional_constant), }, "id": beam.id.id, "start": from_grpc_point_to_point3d(beam.shape.start), @@ -189,7 +192,7 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 "start": from_grpc_point_to_point3d(beam.shape.start), "end": from_grpc_point_to_point3d(beam.shape.end), "interval": Interval(beam.shape.interval_start, beam.shape.interval_end), - "length": to_distance(beam.shape.length).value, + "length": from_grpc_quantity_to_distance(beam.shape.length) }, "beam_type": beam.type, } @@ -216,7 +219,7 @@ def delete_beam_profile(self, **kwargs) -> dict: # noqa: D102 from ansys.api.discovery.v1.commonmessages_pb2 import MultipleEntitiesRequest # Create the request - assumes all inputs are valid and of the proper type - request = MultipleEntitiesRequest(ids=[build_grpc_id(kwargs["beam_id"])]) + request = MultipleEntitiesRequest(ids=[build_grpc_id(kwargs["id"])]) # Call the gRPC service _ = self.beam_profile_commands_stub.Delete(request) diff --git a/src/ansys/geometry/core/_grpc/_services/v1/conversions.py b/src/ansys/geometry/core/_grpc/_services/v1/conversions.py index 0d56db5807..c346079341 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/conversions.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/conversions.py @@ -375,9 +375,9 @@ def from_grpc_frame_to_frame(frame: GRPCFrame) -> "Frame": return Frame( Point3D( input=[ - frame.origin.x, - frame.origin.y, - frame.origin.z, + frame.origin.x.value_in_geometry_units, + frame.origin.y.value_in_geometry_units, + frame.origin.z.value_in_geometry_units, ], unit=DEFAULT_UNITS.SERVER_LENGTH, ), @@ -1365,6 +1365,21 @@ def from_length_to_grpc_quantity(input: "Distance") -> GRPCQuantity: """ return GRPCQuantity(value_in_geometry_units=input.value.m_as(DEFAULT_UNITS.SERVER_LENGTH)) +def from_grpc_quantity_to_distance(input: "GRPCQuantity") -> Distance: + """Convert a gRPC quantity to ``Distance`` containing a length. + + Parameters + ---------- + input : GRPCQuantity + Source measurement data. + + Returns + ------- + Distance + Converted Distance quantity. + """ + return Distance(input.value_in_geometry_units, DEFAULT_UNITS.SERVER_LENGTH) + def from_angle_to_grpc_quantity(input: "Measurement") -> GRPCQuantity: """Convert a ``Measurement`` containing an angle to a gRPC quantity. @@ -1381,6 +1396,21 @@ def from_angle_to_grpc_quantity(input: "Measurement") -> GRPCQuantity: """ return GRPCQuantity(value_in_geometry_units=input.value.m_as(DEFAULT_UNITS.SERVER_ANGLE)) +def from_grpc_angle_to_angle(grpc_quantity: GRPCQuantity) -> "pint.Quantity": + """Convert a gRPC quantity representing an angle to a pint Quantity. + + Parameters + ---------- + grpc_quantity : GRPCQuantity + Source gRPC quantity data. + + Returns + ------- + Measurement + Converted angle quantity with server angle units. + """ + return pint.Quantity(grpc_quantity.value_in_geometry_units, DEFAULT_UNITS.SERVER_ANGLE) + def from_grpc_volume_to_volume(grpc_quantity: GRPCQuantity) -> "pint.Quantity": """Convert a gRPC quantity representing volume to a pint Quantity. @@ -1397,6 +1427,21 @@ def from_grpc_volume_to_volume(grpc_quantity: GRPCQuantity) -> "pint.Quantity": """ return pint.Quantity(grpc_quantity.value_in_geometry_units, DEFAULT_UNITS.SERVER_VOLUME) +def from_grpc_quantity_to_float(grpc_quantity: GRPCQuantity) -> float: + """Convert a gRPC quantity to a float. + + Parameters + ---------- + grpc_quantity : GRPCQuantity + Source gRPC quantity data. + + Returns + ------- + float + The float value contained in the quantity. + """ + return grpc_quantity.value_in_geometry_units + def from_parameter_to_grpc_quantity(value: float) -> GRPCQuantity: """Convert a dimensionless parameter to a gRPC quantity. From 068ef31c7fc7db5b83eaa7afb2bd63f5bc70d2d5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 20:18:36 +0000 Subject: [PATCH 09/11] chore: auto fixes from pre-commit hooks --- .../geometry/core/_grpc/_services/v0/beams.py | 19 ++++------ .../geometry/core/_grpc/_services/v1/beams.py | 38 ++++++++++--------- .../core/_grpc/_services/v1/conversions.py | 3 ++ 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/ansys/geometry/core/_grpc/_services/v0/beams.py b/src/ansys/geometry/core/_grpc/_services/v0/beams.py index f0d3627bca..b946b7117a 100644 --- a/src/ansys/geometry/core/_grpc/_services/v0/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v0/beams.py @@ -34,7 +34,6 @@ from_grpc_frame_to_frame, from_grpc_material_to_material, from_grpc_point_to_point3d, - from_line_to_grpc_line, from_plane_to_grpc_plane, from_point3d_to_grpc_point, ) @@ -68,10 +67,10 @@ def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), - ) + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) # Create the request - assumes all inputs are valid and of the proper type @@ -100,12 +99,10 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), - ) - + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) # Create the request - assumes all inputs are valid and of the proper type diff --git a/src/ansys/geometry/core/_grpc/_services/v1/beams.py b/src/ansys/geometry/core/_grpc/_services/v1/beams.py index ff61df6f88..f20aa44265 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/beams.py @@ -33,10 +33,10 @@ from_grpc_angle_to_angle, from_grpc_curve_to_curve, from_grpc_frame_to_frame, - from_grpc_quantity_to_distance, - from_grpc_quantity_to_float, from_grpc_material_to_material, from_grpc_point_to_point3d, + from_grpc_quantity_to_distance, + from_grpc_quantity_to_float, from_plane_to_grpc_plane, from_point3d_to_grpc_point, ) @@ -79,12 +79,10 @@ def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), - ) - + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) # Create the request - assumes all inputs are valid and of the proper type @@ -123,12 +121,10 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), - ) - + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) # Create the request - assumes all inputs are valid and of the proper type @@ -151,7 +147,9 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 { "cross_section": { "section_anchor": beam.cross_section.section_anchor, - "section_angle": (from_grpc_angle_to_angle(beam.cross_section.section_angle)).m_as(DEFAULT_UNITS.SERVER_ANGLE), + "section_angle": ( + from_grpc_angle_to_angle(beam.cross_section.section_angle) + ).m_as(DEFAULT_UNITS.SERVER_ANGLE), "section_frame": from_grpc_frame_to_frame(beam.cross_section.section_frame), "section_profile": [ [ @@ -170,14 +168,18 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 "properties": { "area": from_grpc_quantity_to_float(beam.properties.area), "centroid": ParamUV(beam.properties.centroid_x, beam.properties.centroid_y), - "warping_constant": from_grpc_quantity_to_float(beam.properties.warping_constant), + "warping_constant": from_grpc_quantity_to_float( + beam.properties.warping_constant + ), "ixx": from_grpc_quantity_to_float(beam.properties.ixx), "ixy": from_grpc_quantity_to_float(beam.properties.ixy), "iyy": from_grpc_quantity_to_float(beam.properties.iyy), "shear_center": ParamUV( beam.properties.shear_center_x, beam.properties.shear_center_y ), - "torsional_constant": from_grpc_quantity_to_float(beam.properties.torsional_constant), + "torsional_constant": from_grpc_quantity_to_float( + beam.properties.torsional_constant + ), }, "id": beam.id.id, "start": from_grpc_point_to_point3d(beam.shape.start), @@ -192,7 +194,7 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 "start": from_grpc_point_to_point3d(beam.shape.start), "end": from_grpc_point_to_point3d(beam.shape.end), "interval": Interval(beam.shape.interval_start, beam.shape.interval_end), - "length": from_grpc_quantity_to_distance(beam.shape.length) + "length": from_grpc_quantity_to_distance(beam.shape.length), }, "beam_type": beam.type, } diff --git a/src/ansys/geometry/core/_grpc/_services/v1/conversions.py b/src/ansys/geometry/core/_grpc/_services/v1/conversions.py index c346079341..456c8cde17 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/conversions.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/conversions.py @@ -1365,6 +1365,7 @@ def from_length_to_grpc_quantity(input: "Distance") -> GRPCQuantity: """ return GRPCQuantity(value_in_geometry_units=input.value.m_as(DEFAULT_UNITS.SERVER_LENGTH)) + def from_grpc_quantity_to_distance(input: "GRPCQuantity") -> Distance: """Convert a gRPC quantity to ``Distance`` containing a length. @@ -1396,6 +1397,7 @@ def from_angle_to_grpc_quantity(input: "Measurement") -> GRPCQuantity: """ return GRPCQuantity(value_in_geometry_units=input.value.m_as(DEFAULT_UNITS.SERVER_ANGLE)) + def from_grpc_angle_to_angle(grpc_quantity: GRPCQuantity) -> "pint.Quantity": """Convert a gRPC quantity representing an angle to a pint Quantity. @@ -1427,6 +1429,7 @@ def from_grpc_volume_to_volume(grpc_quantity: GRPCQuantity) -> "pint.Quantity": """ return pint.Quantity(grpc_quantity.value_in_geometry_units, DEFAULT_UNITS.SERVER_VOLUME) + def from_grpc_quantity_to_float(grpc_quantity: GRPCQuantity) -> float: """Convert a gRPC quantity to a float. From 73a7a8a52e28cb833802d99b336d3604aac6e652 Mon Sep 17 00:00:00 2001 From: smereu Date: Mon, 8 Dec 2025 14:19:25 -0600 Subject: [PATCH 10/11] fix formatting --- .../geometry/core/_grpc/_services/v0/beams.py | 19 ++++------ .../geometry/core/_grpc/_services/v1/beams.py | 38 ++++++++++--------- .../core/_grpc/_services/v1/conversions.py | 3 ++ 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/ansys/geometry/core/_grpc/_services/v0/beams.py b/src/ansys/geometry/core/_grpc/_services/v0/beams.py index f0d3627bca..b946b7117a 100644 --- a/src/ansys/geometry/core/_grpc/_services/v0/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v0/beams.py @@ -34,7 +34,6 @@ from_grpc_frame_to_frame, from_grpc_material_to_material, from_grpc_point_to_point3d, - from_line_to_grpc_line, from_plane_to_grpc_plane, from_point3d_to_grpc_point, ) @@ -68,10 +67,10 @@ def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), - ) + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) # Create the request - assumes all inputs are valid and of the proper type @@ -100,12 +99,10 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), - ) - + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) # Create the request - assumes all inputs are valid and of the proper type diff --git a/src/ansys/geometry/core/_grpc/_services/v1/beams.py b/src/ansys/geometry/core/_grpc/_services/v1/beams.py index ff61df6f88..f20aa44265 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/beams.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/beams.py @@ -33,10 +33,10 @@ from_grpc_angle_to_angle, from_grpc_curve_to_curve, from_grpc_frame_to_frame, - from_grpc_quantity_to_distance, - from_grpc_quantity_to_float, from_grpc_material_to_material, from_grpc_point_to_point3d, + from_grpc_quantity_to_distance, + from_grpc_quantity_to_float, from_plane_to_grpc_plane, from_point3d_to_grpc_point, ) @@ -79,12 +79,10 @@ def create_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), - ) - + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) # Create the request - assumes all inputs are valid and of the proper type @@ -123,12 +121,10 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 lines = [] for segment in kwargs["segments"]: lines.append( - - Line( - start=from_point3d_to_grpc_point(segment[0]), - end=from_point3d_to_grpc_point(segment[1]), - ) - + Line( + start=from_point3d_to_grpc_point(segment[0]), + end=from_point3d_to_grpc_point(segment[1]), + ) ) # Create the request - assumes all inputs are valid and of the proper type @@ -151,7 +147,9 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 { "cross_section": { "section_anchor": beam.cross_section.section_anchor, - "section_angle": (from_grpc_angle_to_angle(beam.cross_section.section_angle)).m_as(DEFAULT_UNITS.SERVER_ANGLE), + "section_angle": ( + from_grpc_angle_to_angle(beam.cross_section.section_angle) + ).m_as(DEFAULT_UNITS.SERVER_ANGLE), "section_frame": from_grpc_frame_to_frame(beam.cross_section.section_frame), "section_profile": [ [ @@ -170,14 +168,18 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 "properties": { "area": from_grpc_quantity_to_float(beam.properties.area), "centroid": ParamUV(beam.properties.centroid_x, beam.properties.centroid_y), - "warping_constant": from_grpc_quantity_to_float(beam.properties.warping_constant), + "warping_constant": from_grpc_quantity_to_float( + beam.properties.warping_constant + ), "ixx": from_grpc_quantity_to_float(beam.properties.ixx), "ixy": from_grpc_quantity_to_float(beam.properties.ixy), "iyy": from_grpc_quantity_to_float(beam.properties.iyy), "shear_center": ParamUV( beam.properties.shear_center_x, beam.properties.shear_center_y ), - "torsional_constant": from_grpc_quantity_to_float(beam.properties.torsional_constant), + "torsional_constant": from_grpc_quantity_to_float( + beam.properties.torsional_constant + ), }, "id": beam.id.id, "start": from_grpc_point_to_point3d(beam.shape.start), @@ -192,7 +194,7 @@ def create_descriptive_beam_segments(self, **kwargs) -> dict: # noqa: D102 "start": from_grpc_point_to_point3d(beam.shape.start), "end": from_grpc_point_to_point3d(beam.shape.end), "interval": Interval(beam.shape.interval_start, beam.shape.interval_end), - "length": from_grpc_quantity_to_distance(beam.shape.length) + "length": from_grpc_quantity_to_distance(beam.shape.length), }, "beam_type": beam.type, } diff --git a/src/ansys/geometry/core/_grpc/_services/v1/conversions.py b/src/ansys/geometry/core/_grpc/_services/v1/conversions.py index c346079341..456c8cde17 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/conversions.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/conversions.py @@ -1365,6 +1365,7 @@ def from_length_to_grpc_quantity(input: "Distance") -> GRPCQuantity: """ return GRPCQuantity(value_in_geometry_units=input.value.m_as(DEFAULT_UNITS.SERVER_LENGTH)) + def from_grpc_quantity_to_distance(input: "GRPCQuantity") -> Distance: """Convert a gRPC quantity to ``Distance`` containing a length. @@ -1396,6 +1397,7 @@ def from_angle_to_grpc_quantity(input: "Measurement") -> GRPCQuantity: """ return GRPCQuantity(value_in_geometry_units=input.value.m_as(DEFAULT_UNITS.SERVER_ANGLE)) + def from_grpc_angle_to_angle(grpc_quantity: GRPCQuantity) -> "pint.Quantity": """Convert a gRPC quantity representing an angle to a pint Quantity. @@ -1427,6 +1429,7 @@ def from_grpc_volume_to_volume(grpc_quantity: GRPCQuantity) -> "pint.Quantity": """ return pint.Quantity(grpc_quantity.value_in_geometry_units, DEFAULT_UNITS.SERVER_VOLUME) + def from_grpc_quantity_to_float(grpc_quantity: GRPCQuantity) -> float: """Convert a gRPC quantity to a float. From a037479eea70ce18ffca1160433d1bcf65559857 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 20:22:21 +0000 Subject: [PATCH 11/11] chore: auto fixes from pre-commit hooks --- src/ansys/geometry/core/_grpc/_services/v1/conversions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ansys/geometry/core/_grpc/_services/v1/conversions.py b/src/ansys/geometry/core/_grpc/_services/v1/conversions.py index 0494d642e5..9eb2f770a2 100644 --- a/src/ansys/geometry/core/_grpc/_services/v1/conversions.py +++ b/src/ansys/geometry/core/_grpc/_services/v1/conversions.py @@ -1475,6 +1475,7 @@ def from_grpc_angle_to_angle(grpc_quantity: GRPCQuantity) -> "pint.Quantity": """ return pint.Quantity(grpc_quantity.value_in_geometry_units, DEFAULT_UNITS.SERVER_ANGLE) + def from_area_to_grpc_quantity(input: "Measurement") -> GRPCQuantity: """Convert a ``Measurement`` containing an area to a gRPC quantity.