From ec0d6d6545ece46f98d64350484cfce306ec63d3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Mar 2026 19:11:58 +0000 Subject: [PATCH 1/2] Initial plan From bc37434034fcaeba27c3986d6bc48c5404086eb3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Mar 2026 19:17:41 +0000 Subject: [PATCH 2/2] Add PrepareTools example notebook and update doc configuration Co-authored-by: jacobrkerstetter <83893427+jacobrkerstetter@users.noreply.github.com> --- .../_static/thumbnails/prepare_tools.png | Bin 0 -> 92175 bytes doc/source/conf.py | 1 + doc/source/examples.rst | 4 +- .../examples/05_tools/prepare_tools.mystnb | 287 ++++++++++++++++++ 4 files changed, 291 insertions(+), 1 deletion(-) create mode 100644 doc/source/_static/thumbnails/prepare_tools.png create mode 100644 doc/source/examples/05_tools/prepare_tools.mystnb diff --git a/doc/source/_static/thumbnails/prepare_tools.png b/doc/source/_static/thumbnails/prepare_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..f4797b008392e3961fd016e4e0e35d528bbd7ed5 GIT binary patch literal 92175 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%0Ab=;Gk;$k_(%zc2vu(dBaN<%I7{7 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.NegRM=T4*!@%9cIgf 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 literal 0 HcmV?d00001 diff --git a/doc/source/conf.py b/doc/source/conf.py index 11c972d870..4db310e58d 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -328,6 +328,7 @@ def intersphinx_pyansys_geometry(switcher_version: str): "examples/04_applied/02_naca_fluent": "_static/thumbnails/naca_fluent.png", "examples/04_applied/03_ahmed_body_fluent": "_static/thumbnails/ahmed_body.png", "examples/05_tools/repair_tools": "_static/thumbnails/repair_tools.png", + "examples/05_tools/prepare_tools": "_static/thumbnails/prepare_tools.png", "examples/99_misc/template": "_static/thumbnails/101_getting_started.png", } nbsphinx_epilog = """ diff --git a/doc/source/examples.rst b/doc/source/examples.rst index 03061a441e..4994cb768b 100644 --- a/doc/source/examples.rst +++ b/doc/source/examples.rst @@ -71,12 +71,14 @@ Tools examples -------------- These examples demonstrate how to use the tools available in PyAnsys Geometry, -such as the ``RepairTools`` class for detecting and fixing geometry issues. +such as the ``RepairTools`` class for detecting and fixing geometry issues and +the ``PrepareTools`` class for preparing geometry for simulation. .. nbgallery:: :caption: Tools examples examples/05_tools/repair_tools.mystnb + examples/05_tools/prepare_tools.mystnb Miscellaneous examples ---------------------- diff --git a/doc/source/examples/05_tools/prepare_tools.mystnb b/doc/source/examples/05_tools/prepare_tools.mystnb new file mode 100644 index 0000000000..876dbb59dd --- /dev/null +++ b/doc/source/examples/05_tools/prepare_tools.mystnb @@ -0,0 +1,287 @@ +--- +jupytext: + text_representation: + extension: .mystnb + format_name: myst + format_version: 0.13 + jupytext_version: 1.19.1 +kernelspec: + display_name: Python 3 (ipykernel) + language: python + name: python3 +--- + +# Tools: Using PrepareTools to prepare geometry for simulation + +This example demonstrates how to use the ``PrepareTools`` class to prepare geometry +for simulation. The ``PrepareTools`` class provides methods for extracting flow volumes, +removing rounds, sharing topology between bodies, detecting helixes, creating enclosures, +and identifying sweepable bodies. + +The ``PrepareTools`` instance is accessible through ``modeler.prepare_tools``. +It should not be instantiated directly by the user. + ++++ + +## Perform required imports + +Perform the required imports. + +```{code-cell} ipython3 +from pathlib import Path +import requests + +from ansys.geometry.core import launch_modeler +from ansys.geometry.core.math import Point2D +from ansys.geometry.core.misc.measurements import UNITS +from ansys.geometry.core.sketch import Sketch +from ansys.geometry.core.tools.prepare_tools import EnclosureOptions +``` + +## Download example files + +Download example geometry files from the PyAnsys Geometry repository. +These files are used to demonstrate how the ``PrepareTools`` methods work +with real geometry. + +```{code-cell} ipython3 +BASE_URL = ( + "https://raw.githubusercontent.com/ansys/pyansys-geometry/main/tests/integration/files/" +) + +FILES = { + "hollow_cylinder": "hollowCylinder.scdocx", + "box_with_round": "BoxWithRound.scdocx", + "mixing_tank": "MixingTank.scdocx", + "bolt": "bolt.scdocx", + "different_shapes": "DifferentShapes.scdocx", +} + + +def download_file(filename): + """Download a file from the PyAnsys Geometry repository.""" + url = BASE_URL + filename + local_path = Path.cwd() / filename + response = requests.get(url) + response.raise_for_status() + local_path.write_bytes(response.content) + print(f"Downloaded: {filename}") + return local_path + + +file_paths = {key: download_file(name) for key, name in FILES.items()} +``` + +## Initialize the modeler + +```{code-cell} ipython3 +modeler = launch_modeler() +print(modeler) +``` + +## Extract a flow volume from faces + +``extract_volume_from_faces()`` creates a new body representing the interior volume +of a part. You provide sealing faces (which close off the volume) and inside faces +(which define the wetted interior surface). + +This is commonly used to extract a fluid domain from a solid CAD model. + +```{code-cell} ipython3 +design = modeler.open_file(file_paths["hollow_cylinder"]) +design.plot() + +body = design.bodies[0] +print(f"Body name: {body.name}") +print(f"Number of faces: {len(body.faces)}") + +# Use two end faces as sealing faces and the inner cylindrical face as the inside face +sealing_faces = [body.faces[1], body.faces[2]] +inside_faces = [body.faces[0]] + +created_bodies = modeler.prepare_tools.extract_volume_from_faces(sealing_faces, inside_faces) +print(f"Number of bodies created: {len(created_bodies)}") +design.plot() +``` + +## Extract a flow volume from edge loops + +``extract_volume_from_edge_loops()`` creates a volume from a set of edges that +define a closed loop. This is an alternative to face-based extraction when +working with open-shell or surface models. + +```{code-cell} ipython3 +design = modeler.open_file(file_paths["hollow_cylinder"]) + +body = design.bodies[0] +print(f"Number of edges: {len(body.edges)}") + +# Use two circular edges at either end of the hollow cylinder to define the sealing loop +sealing_edges = [body.edges[2], body.edges[3]] + +created_bodies = modeler.prepare_tools.extract_volume_from_edge_loops(sealing_edges) +print(f"Number of bodies created: {len(created_bodies)}") +design.plot() +``` + +## Remove rounds from geometry + +``remove_rounds()`` removes fillet or round faces from a solid body. +This is useful for simplifying geometry before meshing or simulation. + +The ``auto_shrink`` parameter controls whether the surrounding faces are extended +to fill the gap left by the removed rounds. + +```{code-cell} ipython3 +from ansys.geometry.core.designer import SurfaceType + +design = modeler.open_file(file_paths["box_with_round"]) +design.plot() + +body = design.bodies[0] +print(f"Number of faces before removing rounds: {len(body.faces)}") + +# Identify and remove the cylindrical (round) faces +round_faces = [ + face for face in body.faces if face.surface_type == SurfaceType.SURFACETYPE_CYLINDER +] +print(f"Number of round faces found: {len(round_faces)}") + +result = modeler.prepare_tools.remove_rounds(round_faces) +print(f"Remove rounds successful: {result}") +print(f"Number of faces after removing rounds: {len(body.faces)}") +design.plot() +``` + +## Share topology between bodies + +``share_topology()`` merges the topology of touching or intersecting bodies +so that they share edges and faces at their boundaries. This is required for +conformal meshing in simulation workflows. + +```{code-cell} ipython3 +design = modeler.create_design("ShareTopologyExample") + +# Create two adjacent boxes that share a face +sketch1 = Sketch() +sketch1.box(Point2D([10, 10], UNITS.mm), 10 * UNITS.mm, 10 * UNITS.mm) +design.extrude_sketch("Box1", sketch1, 10 * UNITS.mm) + +sketch2 = Sketch() +sketch2.box(Point2D([20, 10], UNITS.mm), 10 * UNITS.mm, 10 * UNITS.mm) +design.extrude_sketch("Box2", sketch2, 5 * UNITS.mm) + +# Count faces and edges before sharing topology +faces_before = sum(len(body.faces) for body in design.bodies) +edges_before = sum(len(body.edges) for body in design.bodies) +print(f"Faces before share topology: {faces_before}") +print(f"Edges before share topology: {edges_before}") + +design.plot() + +result = modeler.prepare_tools.share_topology(design.bodies) +print(f"Share topology successful: {result}") + +# Count faces and edges after sharing topology +faces_after = sum(len(body.faces) for body in design.bodies) +edges_after = sum(len(body.edges) for body in design.bodies) +print(f"Faces after share topology: {faces_after}") +print(f"Edges after share topology: {edges_after}") + +design.plot() +``` + +## Detect helixes in geometry + +``detect_helixes()`` identifies helical edges in a body, such as screw threads. +The method accepts optional ``min_radius``, ``max_radius``, and ``fit_radius_error`` +parameters to control which helixes are detected. + +```{code-cell} ipython3 +design = modeler.open_file(file_paths["bolt"]) +design.plot() + +bodies = design.bodies +print(f"Number of bodies: {len(bodies)}") + +# Detect helixes using default parameters +result = modeler.prepare_tools.detect_helixes([bodies[0]]) +print(f"Number of helixes detected: {len(result['helixes'])}") + +for i, helix in enumerate(result["helixes"]): + print(f" Helix {i + 1}: {len(helix['edges'])} edge(s)") +``` + +## Create a box enclosure around bodies + +``create_box_enclosure()`` generates a rectangular box that surrounds the specified bodies. +The distance parameters control the clearance between each body face and the enclosure wall. + +``EnclosureOptions`` controls whether the enclosed bodies are subtracted from the enclosure +and whether shared topology is applied automatically. + +```{code-cell} ipython3 +design = modeler.open_file(file_paths["box_with_round"]) +bodies = [design.bodies[0]] + +# Create an enclosure with the enclosed body subtracted (default behavior) +enclosure_options = EnclosureOptions(subtract_bodies=True) +enclosure_bodies = modeler.prepare_tools.create_box_enclosure( + bodies, 0.005, 0.01, 0.01, 0.005, 0.10, 0.10, enclosure_options +) +print(f"Number of enclosure bodies created: {len(enclosure_bodies)}") + +design.plot() +``` + +## Create a sphere enclosure around bodies + +``create_sphere_enclosure()`` generates a spherical enclosure around the given bodies. +The ``radial_distance`` parameter sets the clearance between the bodies and the sphere surface. + +```{code-cell} ipython3 +design = modeler.open_file(file_paths["box_with_round"]) +bodies = [design.bodies[0]] + +enclosure_options = EnclosureOptions() +enclosure_bodies = modeler.prepare_tools.create_sphere_enclosure(bodies, 0.1, enclosure_options) +print(f"Number of enclosure bodies created: {len(enclosure_bodies)}") + +design.plot() +``` + +## Detect sweepable bodies + +``detect_sweepable_bodies()`` checks whether each body in a list can be swept +(that is, whether it has a consistent cross-section that can be extruded along a path). +Set ``get_source_target_faces=True`` to also retrieve the source and target faces +used for the sweep. + +```{code-cell} ipython3 +design = modeler.open_file(file_paths["different_shapes"]) +bodies = design.bodies +print(f"Number of bodies: {len(bodies)}") + +# Check sweepability without retrieving source/target faces +results = modeler.prepare_tools.detect_sweepable_bodies(bodies) +for i, (is_sweepable, faces) in enumerate(results): + print(f" Body '{bodies[i].name}': sweepable={is_sweepable}") +``` + +```{code-cell} ipython3 +# Check sweepability and retrieve source/target faces for sweepable bodies +results_with_faces = modeler.prepare_tools.detect_sweepable_bodies( + bodies, get_source_target_faces=True +) +for i, (is_sweepable, faces) in enumerate(results_with_faces): + face_info = f", source/target faces={len(faces)}" if is_sweepable else "" + print(f" Body '{bodies[i].name}': sweepable={is_sweepable}{face_info}") +``` + +## Close the modeler + +Close the modeler to free up resources and release the connection. + +```{code-cell} ipython3 +modeler.close() +```