IBody
#
- class ansys.geometry.core.designer.body.IBody#
Bases:
abc.ABC
Defines the common methods for a body, providing the abstract body interface.
Both the
MasterBody
class andBody
class both inherit from theIBody
class. All child classes must implement all abstract methods.
Overview#
Get the ID of the body as a string. |
|
Get the name of the body. |
|
Set the name of the body. |
|
Get the fill style of the body. |
|
Set the fill style of the body. |
|
Get the color of the body. |
|
Set the color of the body. |
|
Get a list of all faces within the body. |
|
Get a list of all edges within the body. |
|
Check if the body is still alive and has not been deleted. |
|
Check if the body is a planar body. |
|
Get the surface thickness of a surface body. |
|
Get the surface offset type of a surface body. |
|
Calculate the volume of the body. |
|
Assign a material against the active design. |
|
Add a mid-surface thickness to a surface body. |
|
Add a mid-surface offset to a surface body. |
|
Imprint all specified geometries onto specified faces of the body. |
|
Project all specified geometries onto the body. |
|
Project and imprint specified geometries onto the body. |
|
Translate the body in a specified direction and distance. |
|
Rotate the geometry body around the specified axis by a given angle. |
|
Scale the geometry body by the given value. |
|
Map the geometry body to the new specified frame. |
|
Mirror the geometry body across the specified plane. |
|
Get the collision state between bodies. |
|
Create a copy of the body under the specified parent. |
|
Tessellate the body and return the geometry as triangles. |
|
Plot the body. |
Import detail#
from ansys.geometry.core.designer.body import IBody
Method detail#
- abstract IBody.faces() list[ansys.geometry.core.designer.face.Face] #
Get a list of all faces within the body.
- Returns:
list
[Face
]
- abstract IBody.edges() list[ansys.geometry.core.designer.edge.Edge] #
Get a list of all edges within the body.
- Returns:
list
[Edge
]
- abstract IBody.surface_thickness() pint.Quantity | None #
Get the surface thickness of a surface body.
Notes
This method is only for surface-type bodies that have been assigned a surface thickness.
- abstract IBody.surface_offset() MidSurfaceOffsetType | None #
Get the surface offset type of a surface body.
Notes
This method is only for surface-type bodies that have been assigned a surface offset.
- abstract IBody.volume() pint.Quantity #
Calculate the volume of the body.
Notes
When dealing with a planar surface, a value of
0
is returned as a volume.
- abstract IBody.assign_material(material: ansys.geometry.core.materials.material.Material) None #
Assign a material against the active design.
- Parameters:
- material
Material
Source material data.
- material
- abstract IBody.add_midsurface_thickness(thickness: pint.Quantity) None #
Add a mid-surface thickness to a surface body.
- Parameters:
- thickness
Quantity
Thickness to assign.
- thickness
Notes
Only surface bodies are eligible for mid-surface thickness assignment.
- abstract IBody.add_midsurface_offset(offset: MidSurfaceOffsetType) None #
Add a mid-surface offset to a surface body.
- Parameters:
- offset_type
MidSurfaceOffsetType
Surface offset to assign.
- offset_type
Notes
Only surface bodies are eligible for mid-surface offset assignment.
- abstract IBody.imprint_curves(faces: list[ansys.geometry.core.designer.face.Face], sketch: ansys.geometry.core.sketch.sketch.Sketch) tuple[list[ansys.geometry.core.designer.edge.Edge], list[ansys.geometry.core.designer.face.Face]] #
Imprint all specified geometries onto specified faces of the body.
- abstract IBody.project_curves(direction: ansys.geometry.core.math.vector.UnitVector3D, sketch: ansys.geometry.core.sketch.sketch.Sketch, closest_face: bool, only_one_curve: bool = False) list[ansys.geometry.core.designer.face.Face] #
Project all specified geometries onto the body.
- Parameters:
- direction: UnitVector3D
Direction of the projection.
- sketch: Sketch
All curves to project on the body.
- closest_face: bool
Whether to target the closest face with the projection.
- only_one_curve: bool, default: False
Whether to project only one curve of the entire sketch. When
True
, only one curve is projected.
- Returns:
list
[Face
]All faces from the project curves operation.
Notes
The
only_one_curve
parameter allows you to optimize the server call because projecting curves is an expensive operation. This reduces the workload on the server side.
- abstract IBody.imprint_projected_curves(direction: ansys.geometry.core.math.vector.UnitVector3D, sketch: ansys.geometry.core.sketch.sketch.Sketch, closest_face: bool, only_one_curve: bool = False) list[ansys.geometry.core.designer.face.Face] #
Project and imprint specified geometries onto the body.
This method combines the
project_curves()
andimprint_curves()
method into one method. It has higher performance than calling them back-to-back when dealing with many curves. Because it is a specialized function, this method only returns the faces (and not the edges) from the imprint operation.- Parameters:
- direction: UnitVector3D
Direction of the projection.
- sketch: Sketch
All curves to project on the body.
- closest_face: bool
Whether to target the closest face with the projection.
- only_one_curve: bool, default: False
Whether to project only one curve of the entire sketch. When
True
, only one curve is projected.
- Returns:
list
[Face
]All imprinted faces from the operation.
Notes
The
only_one_curve
parameter allows you to optimize the server call because projecting curves is an expensive operation. This reduces the workload on the server side.
- abstract IBody.translate(direction: ansys.geometry.core.math.vector.UnitVector3D, distance: pint.Quantity | ansys.geometry.core.misc.measurements.Distance | ansys.geometry.core.typing.Real) None #
Translate the body in a specified direction and distance.
- Parameters:
- direction: UnitVector3D
Direction of the translation.
- distance: ~pint.Quantity | Distance | Real
Distance (magnitude) of the translation.
- Returns:
- abstract IBody.rotate(axis_origin: ansys.geometry.core.math.point.Point3D, axis_direction: ansys.geometry.core.math.vector.UnitVector3D, angle: pint.Quantity | ansys.geometry.core.misc.measurements.Angle | ansys.geometry.core.typing.Real) None #
Rotate the geometry body around the specified axis by a given angle.
- Parameters:
- axis_origin: Point3D
Origin of the rotational axis.
- axis_direction: UnitVector3D
The axis of rotation.
- angle: ~pint.Quantity | Angle | Real
Angle (magnitude) of the rotation.
- Returns:
- abstract IBody.scale(value: ansys.geometry.core.typing.Real) None #
Scale the geometry body by the given value.
- Parameters:
- value: Real
Value to scale the body by.
Notes
The calling object is directly modified when this method is called. Thus, it is important to make copies if needed.
- abstract IBody.map(frame: ansys.geometry.core.math.frame.Frame) None #
Map the geometry body to the new specified frame.
- Parameters:
- frame: Frame
Structure defining the orientation of the body.
Notes
The calling object is directly modified when this method is called. Thus, it is important to make copies if needed.
- abstract IBody.mirror(plane: ansys.geometry.core.math.plane.Plane) None #
Mirror the geometry body across the specified plane.
- Parameters:
- plane: Plane
Represents the mirror.
Notes
The calling object is directly modified when this method is called. Thus, it is important to make copies if needed.
- abstract IBody.get_collision(body: Body) CollisionType #
Get the collision state between bodies.
- Parameters:
- body: Body
Object that the collision state is checked with.
- Returns:
CollisionType
Enum that defines the collision state between bodies.
- abstract IBody.copy(parent: ansys.geometry.core.designer.component.Component, name: str = None) Body #
Create a copy of the body under the specified parent.
- Parameters:
- parent: Component
Parent component to place the new body under within the design assembly.
- name: str
Name to give the new body.
- Returns:
Body
Copy of the body.
- abstract IBody.tessellate(merge: bool = False) pyvista.PolyData | pyvista.MultiBlock #
Tessellate the body and return the geometry as triangles.
- Parameters:
- Returns:
PolyData
,MultiBlock
Merged
pyvista.PolyData
ifmerge=True
or a composite dataset.
Examples
Extrude a box centered at the origin to create a rectangular body and tessellate it:
>>> from ansys.geometry.core.misc.units import UNITS as u >>> from ansys.geometry.core.sketch import Sketch >>> from ansys.geometry.core.math import Plane, Point2D, Point3D, UnitVector3D >>> from ansys.geometry.core import Modeler >>> modeler = Modeler() >>> origin = Point3D([0, 0, 0]) >>> plane = Plane(origin, direction_x=[1, 0, 0], direction_y=[0, 0, 1]) >>> sketch = Sketch(plane) >>> box = sketch.box(Point2D([2, 0]), 4, 4) >>> design = modeler.create_design("my-design") >>> my_comp = design.add_component("my-comp") >>> body = my_comp.extrude_sketch("my-sketch", sketch, 1 * u.m) >>> blocks = body.tessellate() >>> blocks >>> MultiBlock(0x7F94EC757460) N Blocks: 6 X Bounds: 0.000, 4.000 Y Bounds: -1.000, 0.000 Z Bounds: -0.500, 4.500
Merge the body:
>>> mesh = body.tessellate(merge=True) >>> mesh PolyData (0x7f94ec75f3a0) N Cells: 12 N Points: 24 X Bounds: 0.000e+00, 4.000e+00 Y Bounds: -1.000e+00, 0.000e+00 Z Bounds: -5.000e-01, 4.500e+00 N Arrays: 0
- abstract IBody.plot(merge: bool = False, screenshot: str | None = None, use_trame: bool | None = None, **plotting_options: dict | None) None #
Plot the body.
- Parameters:
- mergebool, default:
False
Whether to merge the body into a single mesh. When
False
(default), the number of triangles are preserved and only the topology is merged. WhenTrue
, the individual faces of the tessellation are merged.- screenshot
str
, default:None
Path for saving a screenshot of the image that is being represented.
- use_tramebool, default:
None
Whether to enable the use of trame. The default is
None
, in which case theUSE_TRAME
global setting is used.- **plotting_options
dict
, default:None
Keyword arguments for plotting. For allowable keyword arguments, see the
Plotter.add_mesh
method.
- mergebool, default:
Examples
Extrude a box centered at the origin to create rectangular body and plot it:
>>> from ansys.geometry.core.misc.units import UNITS as u >>> from ansys.geometry.core.sketch import Sketch >>> from ansys.geometry.core.math import Plane, Point2D, Point3D, UnitVector3D >>> from ansys.geometry.core import Modeler >>> modeler = Modeler() >>> origin = Point3D([0, 0, 0]) >>> plane = Plane(origin, direction_x=[1, 0, 0], direction_y=[0, 0, 1]) >>> sketch = Sketch(plane) >>> box = sketch.box(Point2D([2, 0]), 4, 4) >>> design = modeler.create_design("my-design") >>> mycomp = design.add_component("my-comp") >>> body = mycomp.extrude_sketch("my-sketch", sketch, 1 * u.m) >>> body.plot()
Plot the body and color each face individually:
>>> body.plot(multi_colors=True)
- IBody.intersect(other: Body | collections.abc.Iterable[Body], keep_other: bool = False) None #
Intersect two (or more) bodies.
- Parameters:
- Raises:
ValueError
If the bodies do not intersect.
Notes
The
self
parameter is directly modified with the result, and theother
parameter is consumed. Thus, it is important to make copies if needed. If thekeep_other
parameter is set toTrue
, the intersected body is retained.
- IBody.subtract(other: Body | collections.abc.Iterable[Body], keep_other: bool = False) None #
Subtract two (or more) bodies.
- Parameters:
- Raises:
ValueError
If the subtraction results in an empty (complete) subtraction.
Notes
The
self
parameter is directly modified with the result, and theother
parameter is consumed. Thus, it is important to make copies if needed. If thekeep_other
parameter is set toTrue
, the subtracted body is retained.
- IBody.unite(other: Body | collections.abc.Iterable[Body], keep_other: bool = False) None #
Unite two (or more) bodies.
- Parameters:
Notes
The
self
parameter is directly modified with the result, and theother
parameter is consumed. Thus, it is important to make copies if needed. If thekeep_other
parameter is set toTrue
, the united body is retained.