From 50b1d5b5d57d34817b3cc97a9aa018b0edd2e9d7 Mon Sep 17 00:00:00 2001 From: Jonathan Wagenet Date: Thu, 10 Apr 2025 22:12:05 -0400 Subject: [PATCH] Rename to Topology Selection and Exploration, add section on `new_edges`, elaborate on `GroupBy` --- .../filter_all_edges_circle.png | Bin .../filter_axisplane.png | Bin .../filter_dot_axisplane.png | Bin .../filter_geomtype_cylinder.png | Bin .../filter_geomtype_line.png | Bin .../filter_inner_wire_count.png | Bin .../filter_inner_wire_count_linear.png | Bin .../filter_nested.png | Bin .../filter_shape_properties.png | Bin .../group_axis_with.png | Bin .../group_axis_without.png | Bin .../group_hole_area.png | Bin .../group_length_key.png | Bin .../group_radius_key.png | Bin .../operators_filter_z_normal.png | Bin .../operators_group_area.png | Bin .../operators_sort_x.png | Bin .../selectors_new_edges.png | Bin 0 -> 16100 bytes .../selectors_select_all.png | Bin .../selectors_select_last.png | Bin .../selectors_select_new.png | Bin .../selectors_select_new_fillet.png | Bin .../selectors_select_new_none.png | Bin .../sort_along_wire.png | Bin .../sort_axis.png | Bin .../sort_distance_from_largest.png | Bin .../sort_distance_from_origin.png | Bin .../sort_not_along_wire.png | Bin .../sort_sortby_distance.png | Bin .../sort_sortby_length.png | Bin .../thumb_filter_all_edges_circle.png | Bin .../thumb_filter_axisplane.png | Bin .../thumb_filter_geomtype.png | Bin .../thumb_filter_inner_wire_count.png | Bin .../thumb_filter_nested.png | Bin .../thumb_filter_shape_properties.png | Bin .../thumb_group_axis.png | Bin .../thumb_group_hole_area.png | Bin .../thumb_group_properties_with_keys.png | Bin .../thumb_sort_along_wire.png | Bin .../thumb_sort_axis.png | Bin .../thumb_sort_distance.png | Bin .../thumb_sort_sortby.png | Bin docs/index.rst | 2 +- ...s_operators.rst => topology_selection.rst} | 111 ++++++++++++------ .../examples/filter_all_edges_circle.py | 2 +- .../examples/filter_axisplane.py | 2 +- .../examples/filter_geomtype.py | 2 +- .../examples/filter_inner_wire_count.py | 2 +- .../examples/filter_nested.py | 2 +- .../examples/filter_shape_properties.py | 2 +- .../examples/group_axis.py | 2 +- .../examples/group_hole_area.py | 2 +- .../examples/group_properties_with_keys.py | 2 +- .../examples/selectors_operators.py | 9 +- .../examples/sort_along_wire.py | 2 +- .../examples/sort_axis.py | 2 +- .../examples/sort_distance_from.py | 2 +- .../examples/sort_sortby.py | 2 +- .../filter_examples.rst | 18 +-- .../group_examples.rst | 10 +- .../sort_examples.rst | 14 +-- 62 files changed, 118 insertions(+), 72 deletions(-) rename docs/assets/{selectors_operators => topology_selection}/filter_all_edges_circle.png (100%) rename docs/assets/{selectors_operators => topology_selection}/filter_axisplane.png (100%) rename docs/assets/{selectors_operators => topology_selection}/filter_dot_axisplane.png (100%) rename docs/assets/{selectors_operators => topology_selection}/filter_geomtype_cylinder.png (100%) rename docs/assets/{selectors_operators => topology_selection}/filter_geomtype_line.png (100%) rename docs/assets/{selectors_operators => topology_selection}/filter_inner_wire_count.png (100%) rename docs/assets/{selectors_operators => topology_selection}/filter_inner_wire_count_linear.png (100%) rename docs/assets/{selectors_operators => topology_selection}/filter_nested.png (100%) rename docs/assets/{selectors_operators => topology_selection}/filter_shape_properties.png (100%) rename docs/assets/{selectors_operators => topology_selection}/group_axis_with.png (100%) rename docs/assets/{selectors_operators => topology_selection}/group_axis_without.png (100%) rename docs/assets/{selectors_operators => topology_selection}/group_hole_area.png (100%) rename docs/assets/{selectors_operators => topology_selection}/group_length_key.png (100%) rename docs/assets/{selectors_operators => topology_selection}/group_radius_key.png (100%) rename docs/assets/{selectors_operators => topology_selection}/operators_filter_z_normal.png (100%) rename docs/assets/{selectors_operators => topology_selection}/operators_group_area.png (100%) rename docs/assets/{selectors_operators => topology_selection}/operators_sort_x.png (100%) create mode 100644 docs/assets/topology_selection/selectors_new_edges.png rename docs/assets/{selectors_operators => topology_selection}/selectors_select_all.png (100%) rename docs/assets/{selectors_operators => topology_selection}/selectors_select_last.png (100%) rename docs/assets/{selectors_operators => topology_selection}/selectors_select_new.png (100%) rename docs/assets/{selectors_operators => topology_selection}/selectors_select_new_fillet.png (100%) rename docs/assets/{selectors_operators => topology_selection}/selectors_select_new_none.png (100%) rename docs/assets/{selectors_operators => topology_selection}/sort_along_wire.png (100%) rename docs/assets/{selectors_operators => topology_selection}/sort_axis.png (100%) rename docs/assets/{selectors_operators => topology_selection}/sort_distance_from_largest.png (100%) rename docs/assets/{selectors_operators => topology_selection}/sort_distance_from_origin.png (100%) rename docs/assets/{selectors_operators => topology_selection}/sort_not_along_wire.png (100%) rename docs/assets/{selectors_operators => topology_selection}/sort_sortby_distance.png (100%) rename docs/assets/{selectors_operators => topology_selection}/sort_sortby_length.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_filter_all_edges_circle.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_filter_axisplane.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_filter_geomtype.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_filter_inner_wire_count.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_filter_nested.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_filter_shape_properties.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_group_axis.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_group_hole_area.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_group_properties_with_keys.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_sort_along_wire.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_sort_axis.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_sort_distance.png (100%) rename docs/assets/{selectors_operators => topology_selection}/thumb_sort_sortby.png (100%) rename docs/{selectors_operators.rst => topology_selection.rst} (77%) rename docs/{selectors_operators => topology_selection}/examples/filter_all_edges_circle.py (95%) rename docs/{selectors_operators => topology_selection}/examples/filter_axisplane.py (94%) rename docs/{selectors_operators => topology_selection}/examples/filter_geomtype.py (87%) rename docs/{selectors_operators => topology_selection}/examples/filter_inner_wire_count.py (94%) rename docs/{selectors_operators => topology_selection}/examples/filter_nested.py (92%) rename docs/{selectors_operators => topology_selection}/examples/filter_shape_properties.py (91%) rename docs/{selectors_operators => topology_selection}/examples/group_axis.py (89%) rename docs/{selectors_operators => topology_selection}/examples/group_hole_area.py (92%) rename docs/{selectors_operators => topology_selection}/examples/group_properties_with_keys.py (96%) rename docs/{selectors_operators => topology_selection}/examples/selectors_operators.py (91%) rename docs/{selectors_operators => topology_selection}/examples/sort_along_wire.py (90%) rename docs/{selectors_operators => topology_selection}/examples/sort_axis.py (91%) rename docs/{selectors_operators => topology_selection}/examples/sort_distance_from.py (88%) rename docs/{selectors_operators => topology_selection}/examples/sort_sortby.py (94%) rename docs/{selectors_operators => topology_selection}/filter_examples.rst (89%) rename docs/{selectors_operators => topology_selection}/group_examples.rst (90%) rename docs/{selectors_operators => topology_selection}/sort_examples.rst (87%) diff --git a/docs/assets/selectors_operators/filter_all_edges_circle.png b/docs/assets/topology_selection/filter_all_edges_circle.png similarity index 100% rename from docs/assets/selectors_operators/filter_all_edges_circle.png rename to docs/assets/topology_selection/filter_all_edges_circle.png diff --git a/docs/assets/selectors_operators/filter_axisplane.png b/docs/assets/topology_selection/filter_axisplane.png similarity index 100% rename from docs/assets/selectors_operators/filter_axisplane.png rename to docs/assets/topology_selection/filter_axisplane.png diff --git a/docs/assets/selectors_operators/filter_dot_axisplane.png b/docs/assets/topology_selection/filter_dot_axisplane.png similarity index 100% rename from docs/assets/selectors_operators/filter_dot_axisplane.png rename to docs/assets/topology_selection/filter_dot_axisplane.png diff --git a/docs/assets/selectors_operators/filter_geomtype_cylinder.png b/docs/assets/topology_selection/filter_geomtype_cylinder.png similarity index 100% rename from docs/assets/selectors_operators/filter_geomtype_cylinder.png rename to docs/assets/topology_selection/filter_geomtype_cylinder.png diff --git a/docs/assets/selectors_operators/filter_geomtype_line.png b/docs/assets/topology_selection/filter_geomtype_line.png similarity index 100% rename from docs/assets/selectors_operators/filter_geomtype_line.png rename to docs/assets/topology_selection/filter_geomtype_line.png diff --git a/docs/assets/selectors_operators/filter_inner_wire_count.png b/docs/assets/topology_selection/filter_inner_wire_count.png similarity index 100% rename from docs/assets/selectors_operators/filter_inner_wire_count.png rename to docs/assets/topology_selection/filter_inner_wire_count.png diff --git a/docs/assets/selectors_operators/filter_inner_wire_count_linear.png b/docs/assets/topology_selection/filter_inner_wire_count_linear.png similarity index 100% rename from docs/assets/selectors_operators/filter_inner_wire_count_linear.png rename to docs/assets/topology_selection/filter_inner_wire_count_linear.png diff --git a/docs/assets/selectors_operators/filter_nested.png b/docs/assets/topology_selection/filter_nested.png similarity index 100% rename from docs/assets/selectors_operators/filter_nested.png rename to docs/assets/topology_selection/filter_nested.png diff --git a/docs/assets/selectors_operators/filter_shape_properties.png b/docs/assets/topology_selection/filter_shape_properties.png similarity index 100% rename from docs/assets/selectors_operators/filter_shape_properties.png rename to docs/assets/topology_selection/filter_shape_properties.png diff --git a/docs/assets/selectors_operators/group_axis_with.png b/docs/assets/topology_selection/group_axis_with.png similarity index 100% rename from docs/assets/selectors_operators/group_axis_with.png rename to docs/assets/topology_selection/group_axis_with.png diff --git a/docs/assets/selectors_operators/group_axis_without.png b/docs/assets/topology_selection/group_axis_without.png similarity index 100% rename from docs/assets/selectors_operators/group_axis_without.png rename to docs/assets/topology_selection/group_axis_without.png diff --git a/docs/assets/selectors_operators/group_hole_area.png b/docs/assets/topology_selection/group_hole_area.png similarity index 100% rename from docs/assets/selectors_operators/group_hole_area.png rename to docs/assets/topology_selection/group_hole_area.png diff --git a/docs/assets/selectors_operators/group_length_key.png b/docs/assets/topology_selection/group_length_key.png similarity index 100% rename from docs/assets/selectors_operators/group_length_key.png rename to docs/assets/topology_selection/group_length_key.png diff --git a/docs/assets/selectors_operators/group_radius_key.png b/docs/assets/topology_selection/group_radius_key.png similarity index 100% rename from docs/assets/selectors_operators/group_radius_key.png rename to docs/assets/topology_selection/group_radius_key.png diff --git a/docs/assets/selectors_operators/operators_filter_z_normal.png b/docs/assets/topology_selection/operators_filter_z_normal.png similarity index 100% rename from docs/assets/selectors_operators/operators_filter_z_normal.png rename to docs/assets/topology_selection/operators_filter_z_normal.png diff --git a/docs/assets/selectors_operators/operators_group_area.png b/docs/assets/topology_selection/operators_group_area.png similarity index 100% rename from docs/assets/selectors_operators/operators_group_area.png rename to docs/assets/topology_selection/operators_group_area.png diff --git a/docs/assets/selectors_operators/operators_sort_x.png b/docs/assets/topology_selection/operators_sort_x.png similarity index 100% rename from docs/assets/selectors_operators/operators_sort_x.png rename to docs/assets/topology_selection/operators_sort_x.png diff --git a/docs/assets/topology_selection/selectors_new_edges.png b/docs/assets/topology_selection/selectors_new_edges.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c5fb0f9f8cf5766844f9ffa9c0230eb3c10de7 GIT binary patch literal 16100 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 literal 0 HcmV?d00001 diff --git a/docs/assets/selectors_operators/selectors_select_all.png b/docs/assets/topology_selection/selectors_select_all.png similarity index 100% rename from docs/assets/selectors_operators/selectors_select_all.png rename to docs/assets/topology_selection/selectors_select_all.png diff --git a/docs/assets/selectors_operators/selectors_select_last.png b/docs/assets/topology_selection/selectors_select_last.png similarity index 100% rename from docs/assets/selectors_operators/selectors_select_last.png rename to docs/assets/topology_selection/selectors_select_last.png diff --git a/docs/assets/selectors_operators/selectors_select_new.png b/docs/assets/topology_selection/selectors_select_new.png similarity index 100% rename from docs/assets/selectors_operators/selectors_select_new.png rename to docs/assets/topology_selection/selectors_select_new.png diff --git a/docs/assets/selectors_operators/selectors_select_new_fillet.png b/docs/assets/topology_selection/selectors_select_new_fillet.png similarity index 100% rename from docs/assets/selectors_operators/selectors_select_new_fillet.png rename to docs/assets/topology_selection/selectors_select_new_fillet.png diff --git a/docs/assets/selectors_operators/selectors_select_new_none.png b/docs/assets/topology_selection/selectors_select_new_none.png similarity index 100% rename from docs/assets/selectors_operators/selectors_select_new_none.png rename to docs/assets/topology_selection/selectors_select_new_none.png diff --git a/docs/assets/selectors_operators/sort_along_wire.png b/docs/assets/topology_selection/sort_along_wire.png similarity index 100% rename from docs/assets/selectors_operators/sort_along_wire.png rename to docs/assets/topology_selection/sort_along_wire.png diff --git a/docs/assets/selectors_operators/sort_axis.png b/docs/assets/topology_selection/sort_axis.png similarity index 100% rename from docs/assets/selectors_operators/sort_axis.png rename to docs/assets/topology_selection/sort_axis.png diff --git a/docs/assets/selectors_operators/sort_distance_from_largest.png b/docs/assets/topology_selection/sort_distance_from_largest.png similarity index 100% rename from docs/assets/selectors_operators/sort_distance_from_largest.png rename to docs/assets/topology_selection/sort_distance_from_largest.png diff --git a/docs/assets/selectors_operators/sort_distance_from_origin.png b/docs/assets/topology_selection/sort_distance_from_origin.png similarity index 100% rename from docs/assets/selectors_operators/sort_distance_from_origin.png rename to docs/assets/topology_selection/sort_distance_from_origin.png diff --git a/docs/assets/selectors_operators/sort_not_along_wire.png b/docs/assets/topology_selection/sort_not_along_wire.png similarity index 100% rename from docs/assets/selectors_operators/sort_not_along_wire.png rename to docs/assets/topology_selection/sort_not_along_wire.png diff --git a/docs/assets/selectors_operators/sort_sortby_distance.png b/docs/assets/topology_selection/sort_sortby_distance.png similarity index 100% rename from docs/assets/selectors_operators/sort_sortby_distance.png rename to docs/assets/topology_selection/sort_sortby_distance.png diff --git a/docs/assets/selectors_operators/sort_sortby_length.png b/docs/assets/topology_selection/sort_sortby_length.png similarity index 100% rename from docs/assets/selectors_operators/sort_sortby_length.png rename to docs/assets/topology_selection/sort_sortby_length.png diff --git a/docs/assets/selectors_operators/thumb_filter_all_edges_circle.png b/docs/assets/topology_selection/thumb_filter_all_edges_circle.png similarity index 100% rename from docs/assets/selectors_operators/thumb_filter_all_edges_circle.png rename to docs/assets/topology_selection/thumb_filter_all_edges_circle.png diff --git a/docs/assets/selectors_operators/thumb_filter_axisplane.png b/docs/assets/topology_selection/thumb_filter_axisplane.png similarity index 100% rename from docs/assets/selectors_operators/thumb_filter_axisplane.png rename to docs/assets/topology_selection/thumb_filter_axisplane.png diff --git a/docs/assets/selectors_operators/thumb_filter_geomtype.png b/docs/assets/topology_selection/thumb_filter_geomtype.png similarity index 100% rename from docs/assets/selectors_operators/thumb_filter_geomtype.png rename to docs/assets/topology_selection/thumb_filter_geomtype.png diff --git a/docs/assets/selectors_operators/thumb_filter_inner_wire_count.png b/docs/assets/topology_selection/thumb_filter_inner_wire_count.png similarity index 100% rename from docs/assets/selectors_operators/thumb_filter_inner_wire_count.png rename to docs/assets/topology_selection/thumb_filter_inner_wire_count.png diff --git a/docs/assets/selectors_operators/thumb_filter_nested.png b/docs/assets/topology_selection/thumb_filter_nested.png similarity index 100% rename from docs/assets/selectors_operators/thumb_filter_nested.png rename to docs/assets/topology_selection/thumb_filter_nested.png diff --git a/docs/assets/selectors_operators/thumb_filter_shape_properties.png b/docs/assets/topology_selection/thumb_filter_shape_properties.png similarity index 100% rename from docs/assets/selectors_operators/thumb_filter_shape_properties.png rename to docs/assets/topology_selection/thumb_filter_shape_properties.png diff --git a/docs/assets/selectors_operators/thumb_group_axis.png b/docs/assets/topology_selection/thumb_group_axis.png similarity index 100% rename from docs/assets/selectors_operators/thumb_group_axis.png rename to docs/assets/topology_selection/thumb_group_axis.png diff --git a/docs/assets/selectors_operators/thumb_group_hole_area.png b/docs/assets/topology_selection/thumb_group_hole_area.png similarity index 100% rename from docs/assets/selectors_operators/thumb_group_hole_area.png rename to docs/assets/topology_selection/thumb_group_hole_area.png diff --git a/docs/assets/selectors_operators/thumb_group_properties_with_keys.png b/docs/assets/topology_selection/thumb_group_properties_with_keys.png similarity index 100% rename from docs/assets/selectors_operators/thumb_group_properties_with_keys.png rename to docs/assets/topology_selection/thumb_group_properties_with_keys.png diff --git a/docs/assets/selectors_operators/thumb_sort_along_wire.png b/docs/assets/topology_selection/thumb_sort_along_wire.png similarity index 100% rename from docs/assets/selectors_operators/thumb_sort_along_wire.png rename to docs/assets/topology_selection/thumb_sort_along_wire.png diff --git a/docs/assets/selectors_operators/thumb_sort_axis.png b/docs/assets/topology_selection/thumb_sort_axis.png similarity index 100% rename from docs/assets/selectors_operators/thumb_sort_axis.png rename to docs/assets/topology_selection/thumb_sort_axis.png diff --git a/docs/assets/selectors_operators/thumb_sort_distance.png b/docs/assets/topology_selection/thumb_sort_distance.png similarity index 100% rename from docs/assets/selectors_operators/thumb_sort_distance.png rename to docs/assets/topology_selection/thumb_sort_distance.png diff --git a/docs/assets/selectors_operators/thumb_sort_sortby.png b/docs/assets/topology_selection/thumb_sort_sortby.png similarity index 100% rename from docs/assets/selectors_operators/thumb_sort_sortby.png rename to docs/assets/topology_selection/thumb_sort_sortby.png diff --git a/docs/index.rst b/docs/index.rst index 2ca15bc..0af6014 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -113,8 +113,8 @@ Table Of Contents introductory_examples.rst tutorials.rst objects.rst - selectors_operators.rst operations.rst + topology_selection.rst builders.rst joints.rst assemblies.rst diff --git a/docs/selectors_operators.rst b/docs/topology_selection.rst similarity index 77% rename from docs/selectors_operators.rst rename to docs/topology_selection.rst index 9199af6..f1ef50e 100644 --- a/docs/selectors_operators.rst +++ b/docs/topology_selection.rst @@ -1,8 +1,11 @@ -####################### -Selectors and Operators -####################### +##################################### +Topology Selection and Exploration +##################################### -Selectors and operators are powerful methods to select and organize CAD objects for +:ref:`topology` is the structure of build123d geometric features and traversing the +topology of a part is often required to specify objects for an operation or to locate a +CAD feature. :ref:`selectors` allow selection of topology objects into a |ShapeList|. +:ref:`operators` are powerful methods further explore and refine a |ShapeList| for subsequent operations. .. _selectors: @@ -13,7 +16,7 @@ Selectors Selectors provide methods to extract all or a subset of a feature type in the referenced object. These methods select Edges, Faces, Solids, Vertices, or Wires in Builder objects -or from Shape objects themselves. All of these methods return a :class:`~topology.ShapeList`, +or from Shape objects themselves. All of these methods return a |ShapeList|, which is a subclass of ``list`` and may be sorted, grouped, or filtered by :ref:`operators`. @@ -53,10 +56,10 @@ a feature as long as they can contain the feature being selected. # Create sketch out of context Rectangle(1, 1).edges() -Select In Build Objects +Select In Build Context ======================== -Build objects track the last operation and their selector methods can take +Build contexts track the last operation and their selector methods can take :class:`~build_enums.Select` as criteria to specify a subset of features to extract. By default, a selector will select ``ALL`` of a feature, while ``LAST`` selects features created or altered by the most recent operation. |edges| can @@ -97,7 +100,7 @@ Create a simple part to demonstrate selectors. Select using the default criteria part.edges(Select.ALL) part.faces(Select.ALL) -.. figure:: assets/selectors_operators/selectors_select_all.png +.. figure:: assets/topology_selection/selectors_select_all.png :align: center The default ``Select.ALL`` features @@ -114,7 +117,7 @@ Select features changed in the last operation with criteria ``Select.LAST``. part.edges(Select.LAST) part.faces(Select.LAST) -.. figure:: assets/selectors_operators/selectors_select_last.png +.. figure:: assets/topology_selection/selectors_select_last.png :align: center ``Select.LAST`` features @@ -130,7 +133,7 @@ available for a ``ShapeList`` of edges! part.edges(Select.NEW) -.. figure:: assets/selectors_operators/selectors_select_new.png +.. figure:: assets/topology_selection/selectors_select_new.png :align: center ``Select.NEW`` edges where box and cylinder intersect @@ -147,7 +150,7 @@ edges are reused? part.edges(Select.NEW) -.. figure:: assets/selectors_operators/selectors_select_new_none.png +.. figure:: assets/topology_selection/selectors_select_new_none.png :align: center ``Select.NEW`` edges when box and cylinder don't intersect @@ -158,7 +161,8 @@ only completely new edges created by the operation. .. note:: - Chamfer and fillet modify the current object, but do not have new edges. + Chamfer and fillet modify the current object, but do not have new edges via + ``Select.NEW``. .. code-block:: python @@ -170,11 +174,44 @@ only completely new edges created by the operation. part.edges(Select.NEW) - .. figure:: assets/selectors_operators/selectors_select_new_fillet.png + .. figure:: assets/topology_selection/selectors_select_new_fillet.png :align: center Left, ``Select.NEW`` returns no edges after fillet. Right, ``Select.LAST`` +Select New Edges In Algebra Mode +================================ + +The utility method ``new_edges`` compares one or more shape objects to a +another "combined" shape object and returns the edges new to the combined shape. +``new_edges`` is available both Algebra mode or Builder mode, but is necessary in +Algebra Mode where ``Select.NEW`` is unavailable + +.. code-block:: python + + box = Box(5, 5, 1) + circle = Cylinder(2, 5) + part = box + circle + edges = new_edges(box, circle, combined=part) + +.. figure:: assets/topology_selection/selectors_new_edges.png + :align: center + +``new_edges`` can also find edges created during a chamfer or fillet operation by +comparing the object before the operation to the "combined" object. + +.. code-block:: python + + box = Box(5, 5, 1) + circle = Cylinder(2, 5) + part_before = box + circle + edges = part_before.edges().filter_by(lambda a: a.length == 1) + part = fillet(edges, 1) + edges = new_edges(part_before, combined=part) + +.. figure:: assets/topology_selection/operators_group_area.png + :align: center + .. _operators: ********* @@ -230,7 +267,7 @@ subclass of ``list``, so any list slice can be used. part.vertices().sort_by(Axis.X)[-4:] -.. figure:: assets/selectors_operators/operators_sort_x.png +.. figure:: assets/topology_selection/operators_sort_x.png :align: center | @@ -242,28 +279,28 @@ Examples :maxdepth: 2 :hidden: - selectors_operators/sort_examples + topology_selection/sort_examples .. grid:: 3 :gutter: 3 .. grid-item-card:: SortBy - :img-top: assets/selectors_operators/thumb_sort_sortby.png + :img-top: assets/topology_selection/thumb_sort_sortby.png :link: sort_sortby :link-type: ref .. grid-item-card:: Along Wire - :img-top: assets/selectors_operators/thumb_sort_along_wire.png + :img-top: assets/topology_selection/thumb_sort_along_wire.png :link: sort_along_wire :link-type: ref .. grid-item-card:: Axis - :img-top: assets/selectors_operators/thumb_sort_axis.png + :img-top: assets/topology_selection/thumb_sort_axis.png :link: sort_axis :link-type: ref .. grid-item-card:: Distance From - :img-top: assets/selectors_operators/thumb_sort_distance.png + :img-top: assets/topology_selection/thumb_sort_distance.png :link: sort_distance_from :link-type: ref @@ -272,10 +309,11 @@ Group A ShapeList can be grouped and sorted with the |group_by| method based on a grouping criteria. Grouping can be a great way to organize features without knowing the values of -specific feature properties. Rather than returning a ``Shapelist``, |group_by| returns -a ``GroupBy`` which can be indexed to retrieve a ``Shapelist`` for further operations. -``GroupBy`` groups can also be accessed using a key with the ``group`` method. If the -keys are unknown they can be discovered with ``key_to_group_index``. +specific feature properties. Rather than returning a ``ShapeList``, |group_by| returns +a ``GroupBy``, a list of ``ShapeList`` objects sorted by the grouping criteria. +``GroupBy`` can be printed to view the members of each group, indexed like a list to +retrieve a ``ShapeList``, and be accessed using a key with the ``group`` method. If the +group keys are unknown they can be discovered with ``key_to_group_index``. If we want only the edges from the smallest faces by area we can get the faces, then group by ``SortBy.AREA``. The ``ShapeList`` of smallest faces is available from the first @@ -286,7 +324,7 @@ return a new list of all edges in the previous list. part.faces().group_by(SortBy.AREA)[0].edges()) -.. figure:: assets/selectors_operators/operators_group_area.png +.. figure:: assets/topology_selection/operators_group_area.png :align: center | @@ -298,23 +336,23 @@ Examples :maxdepth: 2 :hidden: - selectors_operators/group_examples + topology_selection/group_examples .. grid:: 3 :gutter: 3 .. grid-item-card:: Axis and Length - :img-top: assets/selectors_operators/thumb_group_axis.png + :img-top: assets/topology_selection/thumb_group_axis.png :link: group_axis :link-type: ref .. grid-item-card:: Hole Area - :img-top: assets/selectors_operators/thumb_group_hole_area.png + :img-top: assets/topology_selection/thumb_group_hole_area.png :link: group_hole_area :link-type: ref .. grid-item-card:: Properties with Keys - :img-top: assets/selectors_operators/thumb_group_properties_with_keys.png + :img-top: assets/topology_selection/thumb_group_properties_with_keys.png :link: group_properties_with_keys :link-type: ref @@ -334,7 +372,7 @@ each face can be checked against a vector direction and filtered accordingly. part.faces().filter_by(lambda f: f.normal_at() == Vector(0, 0, 1)) -.. figure:: assets/selectors_operators/operators_filter_z_normal.png +.. figure:: assets/topology_selection/operators_filter_z_normal.png :align: center | @@ -346,38 +384,38 @@ Examples :maxdepth: 2 :hidden: - selectors_operators/filter_examples + topology_selection/filter_examples .. grid:: 3 :gutter: 3 .. grid-item-card:: GeomType - :img-top: assets/selectors_operators/thumb_filter_geomtype.png + :img-top: assets/topology_selection/thumb_filter_geomtype.png :link: filter_geomtype :link-type: ref .. grid-item-card:: All Edges Circle - :img-top: assets/selectors_operators/thumb_filter_all_edges_circle.png + :img-top: assets/topology_selection/thumb_filter_all_edges_circle.png :link: filter_all_edges_circle :link-type: ref .. grid-item-card:: Axis and Plane - :img-top: assets/selectors_operators/thumb_filter_axisplane.png + :img-top: assets/topology_selection/thumb_filter_axisplane.png :link: filter_axis_plane :link-type: ref .. grid-item-card:: Inner Wire Count - :img-top: assets/selectors_operators/thumb_filter_inner_wire_count.png + :img-top: assets/topology_selection/thumb_filter_inner_wire_count.png :link: filter_inner_wire_count :link-type: ref .. grid-item-card:: Nested Filters - :img-top: assets/selectors_operators/thumb_filter_nested.png + :img-top: assets/topology_selection/thumb_filter_nested.png :link: filter_nested :link-type: ref .. grid-item-card:: Shape Properties - :img-top: assets/selectors_operators/thumb_filter_shape_properties.png + :img-top: assets/topology_selection/thumb_filter_shape_properties.png :link: filter_shape_properties :link-type: ref @@ -391,3 +429,4 @@ Examples .. |group_by| replace:: :meth:`~topology.ShapeList.group_by` .. |filter_by| replace:: :meth:`~topology.ShapeList.filter_by` .. |filter_by_position| replace:: :meth:`~topology.ShapeList.filter_by_position` +.. |ShapeList| replace:: :class:`~topology.ShapeList` diff --git a/docs/selectors_operators/examples/filter_all_edges_circle.py b/docs/topology_selection/examples/filter_all_edges_circle.py similarity index 95% rename from docs/selectors_operators/examples/filter_all_edges_circle.py rename to docs/topology_selection/examples/filter_all_edges_circle.py index 4099962..2531158 100644 --- a/docs/selectors_operators/examples/filter_all_edges_circle.py +++ b/docs/topology_selection/examples/filter_all_edges_circle.py @@ -4,7 +4,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") with BuildPart() as part: with BuildSketch() as s: diff --git a/docs/selectors_operators/examples/filter_axisplane.py b/docs/topology_selection/examples/filter_axisplane.py similarity index 94% rename from docs/selectors_operators/examples/filter_axisplane.py rename to docs/topology_selection/examples/filter_axisplane.py index 2477360..3bb08ff 100644 --- a/docs/selectors_operators/examples/filter_axisplane.py +++ b/docs/topology_selection/examples/filter_axisplane.py @@ -4,7 +4,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") axis = Axis.Z plane = Plane.XY diff --git a/docs/selectors_operators/examples/filter_geomtype.py b/docs/topology_selection/examples/filter_geomtype.py similarity index 87% rename from docs/selectors_operators/examples/filter_geomtype.py rename to docs/topology_selection/examples/filter_geomtype.py index 245ec2d..cb791cd 100644 --- a/docs/selectors_operators/examples/filter_geomtype.py +++ b/docs/topology_selection/examples/filter_geomtype.py @@ -4,7 +4,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") with BuildPart() as part: Box(5, 5, 1) diff --git a/docs/selectors_operators/examples/filter_inner_wire_count.py b/docs/topology_selection/examples/filter_inner_wire_count.py similarity index 94% rename from docs/selectors_operators/examples/filter_inner_wire_count.py rename to docs/topology_selection/examples/filter_inner_wire_count.py index c938b18..7f8ef68 100644 --- a/docs/selectors_operators/examples/filter_inner_wire_count.py +++ b/docs/topology_selection/examples/filter_inner_wire_count.py @@ -5,7 +5,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") bracket = import_step(os.path.join(working_path, "nema-17-bracket.step")) faces = bracket.faces() diff --git a/docs/selectors_operators/examples/filter_nested.py b/docs/topology_selection/examples/filter_nested.py similarity index 92% rename from docs/selectors_operators/examples/filter_nested.py rename to docs/topology_selection/examples/filter_nested.py index 95ebfe3..dba8293 100644 --- a/docs/selectors_operators/examples/filter_nested.py +++ b/docs/topology_selection/examples/filter_nested.py @@ -5,7 +5,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") with BuildPart() as part: Cylinder(15, 2, align=(Align.CENTER, Align.CENTER, Align.MIN)) diff --git a/docs/selectors_operators/examples/filter_shape_properties.py b/docs/topology_selection/examples/filter_shape_properties.py similarity index 91% rename from docs/selectors_operators/examples/filter_shape_properties.py rename to docs/topology_selection/examples/filter_shape_properties.py index e87a757..7a1f39c 100644 --- a/docs/selectors_operators/examples/filter_shape_properties.py +++ b/docs/topology_selection/examples/filter_shape_properties.py @@ -4,7 +4,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") with BuildPart() as open_box_builder: Box(20, 20, 5) diff --git a/docs/selectors_operators/examples/group_axis.py b/docs/topology_selection/examples/group_axis.py similarity index 89% rename from docs/selectors_operators/examples/group_axis.py rename to docs/topology_selection/examples/group_axis.py index 24c200d..4e95757 100644 --- a/docs/selectors_operators/examples/group_axis.py +++ b/docs/topology_selection/examples/group_axis.py @@ -5,7 +5,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") with BuildPart() as fins: with GridLocations(4, 6, 4, 4): diff --git a/docs/selectors_operators/examples/group_hole_area.py b/docs/topology_selection/examples/group_hole_area.py similarity index 92% rename from docs/selectors_operators/examples/group_hole_area.py rename to docs/topology_selection/examples/group_hole_area.py index f404db7..43cd53c 100644 --- a/docs/selectors_operators/examples/group_hole_area.py +++ b/docs/topology_selection/examples/group_hole_area.py @@ -5,7 +5,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") with BuildPart() as part: Cylinder(10, 30, rotation=(90, 0, 0)) diff --git a/docs/selectors_operators/examples/group_properties_with_keys.py b/docs/topology_selection/examples/group_properties_with_keys.py similarity index 96% rename from docs/selectors_operators/examples/group_properties_with_keys.py rename to docs/topology_selection/examples/group_properties_with_keys.py index 85824f7..85c4eaf 100644 --- a/docs/selectors_operators/examples/group_properties_with_keys.py +++ b/docs/topology_selection/examples/group_properties_with_keys.py @@ -5,7 +5,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") with BuildPart() as part: with BuildSketch(Plane.XZ) as sketch: diff --git a/docs/selectors_operators/examples/selectors_operators.py b/docs/topology_selection/examples/selectors_operators.py similarity index 91% rename from docs/selectors_operators/examples/selectors_operators.py rename to docs/topology_selection/examples/selectors_operators.py index 8cda0b5..e19e613 100644 --- a/docs/selectors_operators/examples/selectors_operators.py +++ b/docs/topology_selection/examples/selectors_operators.py @@ -5,7 +5,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") selectors = [solids, vertices, edges, faces] line = Line((-9, -9), (9, 9)) @@ -91,3 +91,10 @@ save_screenshot(os.path.join(filedir, "operators_group_area.png")) faces = part.faces().filter_by(lambda f: f.normal_at() == Vector(0, 0, 1)) show(part, [f.translate(f.normal_at() * 0.01) for f in faces]) save_screenshot(os.path.join(filedir, "operators_filter_z_normal.png")) + +box = Box(5, 5, 1) +circle = Cylinder(2, 5) +part = box + circle +edges = new_edges(box, circle, combined=part) +show(part, edges) +save_screenshot(os.path.join(filedir, "selectors_new_edges.png")) \ No newline at end of file diff --git a/docs/selectors_operators/examples/sort_along_wire.py b/docs/topology_selection/examples/sort_along_wire.py similarity index 90% rename from docs/selectors_operators/examples/sort_along_wire.py rename to docs/topology_selection/examples/sort_along_wire.py index 654e096..0870d51 100644 --- a/docs/selectors_operators/examples/sort_along_wire.py +++ b/docs/topology_selection/examples/sort_along_wire.py @@ -4,7 +4,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") with BuildSketch() as along_wire: Rectangle(48, 16, align=Align.MIN) diff --git a/docs/selectors_operators/examples/sort_axis.py b/docs/topology_selection/examples/sort_axis.py similarity index 91% rename from docs/selectors_operators/examples/sort_axis.py rename to docs/topology_selection/examples/sort_axis.py index 198a597..62074a6 100644 --- a/docs/selectors_operators/examples/sort_axis.py +++ b/docs/topology_selection/examples/sort_axis.py @@ -5,7 +5,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") with BuildPart() as part: with BuildSketch(Plane.YZ) as profile: diff --git a/docs/selectors_operators/examples/sort_distance_from.py b/docs/topology_selection/examples/sort_distance_from.py similarity index 88% rename from docs/selectors_operators/examples/sort_distance_from.py rename to docs/topology_selection/examples/sort_distance_from.py index 25e853d..8f82b6f 100644 --- a/docs/selectors_operators/examples/sort_distance_from.py +++ b/docs/topology_selection/examples/sort_distance_from.py @@ -5,7 +5,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") boxes = ShapeList( Box(1, 1, 1).scale(0.75 if (i, j) == (1, 2) else 0.25).translate((i, j, 0)) diff --git a/docs/selectors_operators/examples/sort_sortby.py b/docs/topology_selection/examples/sort_sortby.py similarity index 94% rename from docs/selectors_operators/examples/sort_sortby.py rename to docs/topology_selection/examples/sort_sortby.py index 28cbf48..9500e0b 100644 --- a/docs/selectors_operators/examples/sort_sortby.py +++ b/docs/topology_selection/examples/sort_sortby.py @@ -4,7 +4,7 @@ from build123d import * from ocp_vscode import * working_path = os.path.dirname(os.path.abspath(__file__)) -filedir = os.path.join(working_path, "..", "..", "assets", "selectors_operators") +filedir = os.path.join(working_path, "..", "..", "assets", "topology_selection") with BuildPart() as part: Box(5, 5, 1) diff --git a/docs/selectors_operators/filter_examples.rst b/docs/topology_selection/filter_examples.rst similarity index 89% rename from docs/selectors_operators/filter_examples.rst rename to docs/topology_selection/filter_examples.rst index 85bdb9d..f7233b8 100644 --- a/docs/selectors_operators/filter_examples.rst +++ b/docs/topology_selection/filter_examples.rst @@ -25,7 +25,7 @@ operations, and are sometimes necessary e.g. before sorting or filtering by radi :language: python :lines: 15 -.. figure:: ../assets/selectors_operators/filter_geomtype_line.png +.. figure:: ../assets/topology_selection/filter_geomtype_line.png :align: center | @@ -34,7 +34,7 @@ operations, and are sometimes necessary e.g. before sorting or filtering by radi :language: python :lines: 17 -.. figure:: ../assets/selectors_operators/filter_geomtype_cylinder.png +.. figure:: ../assets/topology_selection/filter_geomtype_cylinder.png :align: center | @@ -59,7 +59,7 @@ circular edges selects the counterbore faces that meet the joint criteria. :language: python :lines: 43-47 -.. figure:: ../assets/selectors_operators/filter_all_edges_circle.png +.. figure:: ../assets/topology_selection/filter_all_edges_circle.png :align: center | @@ -86,7 +86,7 @@ Plane will select faces parallel to the plane. part.faces().filter_by(Axis.Z) part.faces().filter_by(Plane.XY) -.. figure:: ../assets/selectors_operators/filter_axisplane.png +.. figure:: ../assets/topology_selection/filter_axisplane.png :align: center | @@ -101,7 +101,7 @@ to 0. The result is faces parallel to the axis or perpendicular to the plane. part.faces().filter_by(lambda f: abs(f.normal_at().dot(Axis.Z.direction) < 1e-6) part.faces().filter_by(lambda f: abs(f.normal_at().dot(Plane.XY.z_dir)) < 1e-6) -.. figure:: ../assets/selectors_operators/filter_dot_axisplane.png +.. figure:: ../assets/topology_selection/filter_dot_axisplane.png :align: center | @@ -129,7 +129,7 @@ and then filtering for the specific inner wire by radius. :language: python :lines: 18-21 -.. figure:: ../assets/selectors_operators/filter_inner_wire_count.png +.. figure:: ../assets/topology_selection/filter_inner_wire_count.png :align: center | @@ -143,7 +143,7 @@ select the top face, and then filter for the circular edges of the inner wires. :language: python :lines: 25-32 -.. figure:: ../assets/selectors_operators/filter_inner_wire_count_linear.png +.. figure:: ../assets/topology_selection/filter_inner_wire_count_linear.png :align: center | @@ -170,7 +170,7 @@ any line edges. :language: python :lines: 26-32 -.. figure:: ../assets/selectors_operators/filter_nested.png +.. figure:: ../assets/topology_selection/filter_nested.png :align: center | @@ -189,7 +189,7 @@ to highlight the resulting fillets. :language: python :lines: 3-4, 8-22 -.. figure:: ../assets/selectors_operators/filter_shape_properties.png +.. figure:: ../assets/topology_selection/filter_shape_properties.png :align: center | \ No newline at end of file diff --git a/docs/selectors_operators/group_examples.rst b/docs/topology_selection/group_examples.rst similarity index 90% rename from docs/selectors_operators/group_examples.rst rename to docs/topology_selection/group_examples.rst index 3653ce7..3f0057b 100644 --- a/docs/selectors_operators/group_examples.rst +++ b/docs/topology_selection/group_examples.rst @@ -17,7 +17,7 @@ result knowing how many edges to expect. :language: python :lines: 4, 9-17 -.. figure:: ../assets/selectors_operators/group_axis_without.png +.. figure:: ../assets/topology_selection/group_axis_without.png :align: center | @@ -29,7 +29,7 @@ group again by length. In both cases, you can select the desired edges from the :language: python :lines: 21-22 -.. figure:: ../assets/selectors_operators/group_axis_with.png +.. figure:: ../assets/topology_selection/group_axis_with.png :align: center | @@ -53,7 +53,7 @@ with the largest hole. :language: python :lines: 21-24 -.. figure:: ../assets/selectors_operators/group_hole_area.png +.. figure:: ../assets/topology_selection/group_hole_area.png :align: center | @@ -79,7 +79,7 @@ then the desired groups are selected with the ``group`` method using the lengths :language: python :lines: 30, 31 -.. figure:: ../assets/selectors_operators/group_length_key.png +.. figure:: ../assets/topology_selection/group_length_key.png :align: center | @@ -101,7 +101,7 @@ and then further specify only the edges the bearings and pins are installed from :language: python :lines: 47-50 -.. figure:: ../assets/selectors_operators/group_radius_key.png +.. figure:: ../assets/topology_selection/group_radius_key.png :align: center | diff --git a/docs/selectors_operators/sort_examples.rst b/docs/topology_selection/sort_examples.rst similarity index 87% rename from docs/selectors_operators/sort_examples.rst rename to docs/topology_selection/sort_examples.rst index 91284a9..a4779fc 100644 --- a/docs/selectors_operators/sort_examples.rst +++ b/docs/topology_selection/sort_examples.rst @@ -30,7 +30,7 @@ be used with``group_by``. :language: python :lines: 19-22 -.. figure:: ../assets/selectors_operators/sort_sortby_length.png +.. figure:: ../assets/topology_selection/sort_sortby_length.png :align: center | @@ -39,7 +39,7 @@ be used with``group_by``. :language: python :lines: 24-27 -.. figure:: ../assets/selectors_operators/sort_sortby_distance.png +.. figure:: ../assets/topology_selection/sort_sortby_distance.png :align: center | @@ -64,7 +64,7 @@ the order is random. :language: python :lines: 14-15 -.. figure:: ../assets/selectors_operators/sort_not_along_wire.png +.. figure:: ../assets/topology_selection/sort_not_along_wire.png :align: center | @@ -76,7 +76,7 @@ radii now increase in order. :language: python :lines: 26-28 -.. figure:: ../assets/selectors_operators/sort_along_wire.png +.. figure:: ../assets/topology_selection/sort_along_wire.png :align: center | @@ -101,7 +101,7 @@ edge can be found sorting along y-axis. :language: python :lines: 22-24 -.. figure:: ../assets/selectors_operators/sort_axis.png +.. figure:: ../assets/topology_selection/sort_axis.png :align: center | @@ -125,7 +125,7 @@ Here we are sorting the boxes by distance from the origin, using an empty ``Vert :language: python :lines: 15-16 -.. figure:: ../assets/selectors_operators/sort_distance_from_origin.png +.. figure:: ../assets/topology_selection/sort_distance_from_origin.png :align: center | @@ -138,7 +138,7 @@ their distance from the largest box. :language: python :lines: 19-20 -.. figure:: ../assets/selectors_operators/sort_distance_from_largest.png +.. figure:: ../assets/topology_selection/sort_distance_from_largest.png :align: center | \ No newline at end of file