Select Solid Elements

Dependencies

This node requires FreeCAD library to work.

Functionality

This node allows to select topological elements of Solid object (vertices, edges, or faces) by different geometrical criteria. The node is similar to “Select Mesh Elements by Location”, but works with elements of Solid objects instead of meshes.

One has to understand, that edges and faces of Solid objects can be far from planar, so meanings of “edge direction” and “face normal” are very imprecise in complex cases. However, since this node knows many ways of selecting things, it is in most cases possible to select what you want. Also, don’t forget that several masks can be combined with “Logic” node.

The node works in two steps:

  1. “Primary” selection. Vertices, edges, or faces (depending on Select parameter) are selected according to specified criteria. When selecting vertices, everything is more or less simple. When selecting edges or faces, it can appear that part of edge / face does conform to the condition, while other part does not. For example, it can appear that only central part of some face does belong to the sphere defined in selection criteria. The node has a parameter which defines whether such “partially selected” elements should be considered as selected or not.

    When selecting edges or faces at the primary selection step, the node has to calculate some number of points on these edges / faces, to check required geometrical conditions for these points. The node has a parameter to define how many points will be generated (more points leads to more precise results, but take more time).

  2. “Secondary” selection. The node considers elements adjacent to the elements which were selected at the first step. For example, if at first step we selected some faces, then let’s consider edges of those faces. Elements adjacent to “primary selection” are considered as selected. Depending on what type of elements were used at the first step, there also can be “partially selected” elements:

    • If at first step we selected vertices, then there will be some edges and faces, which have only some of their vertices selected;

    • If at first step we selected edges, then there will be some faces, which have only some of their edges selected.

    The node has a parameter to define whether such “partially selected” elements should be considered as selected or not.

For example, if Select parameter is set to Vertices, then VerticesMask will contain selection mask for vertices selected at “primary selection” step, while EdgesMask and FacesMask will contain selection masks for edges and faces selected at “secondary selection” step.

Inputs

This node has the following inputs:

  • Solid. The solid object to be considered. This input is mandatory.

  • Tool. The secondary solid object to be used for By Distance to Solid, Inside Solid selection modes. This input is available and mandatory only for these values of Criteria parameter.

  • Direction. Exact meaning of this input depends on Criteria parameter:

    • For By Side mode, this is the vector pointing to the side you want to select;

    • For By Normal mode, this is the direction of normals;

    • For By Plane mode, this is the normal vector of the plane;

    • For By Cylinder mode, this is the directing vector of the cylinder;

    • For By Direction mode, this is the direction of the edges.

    This input is not available for other modes. The default value is (0, 0, 1).

  • Center. Exact meaning of this input depends on Criteria parameter:

    • For By Center and Radius mode, this is the center of the selecting sphere;

    • For By Plane mode, this is a point on the selecting plane;

    • For By Cylinder mode, this is a point on the axis of selecting cylinder.

    This input is not available for other modes. The default value is (0, 0, 0).

  • Percent. This defines how many elements are to be selected. Available for By Side, By Normal, By Direction modes. The default value is 1.0.

  • Radius. Radius of the selection area. Exact meaning depends on Criteria parameter:

    • For By Center and Radius mode, this is the radius of selecting sphere;

    • For By Plane mode, this is the maximum distance from the plane for element to be selected;

    • For By Cylinder mode, this is the radius of selecting cylinder;

    • For By Distance to Solid, this is the maximum distance from the “tool” solid for element to be selected.

    This input is not available for other modes. The default value is 1.0.

  • Precision. Tessellation precision for selecting edges or faces. Smaller values will generate more points on edges / faces, and so give more precise results, but will take more time to calculate. This input is available only when Select parameter is set to Edges or Faces. The default value is 0.01.

Parameters

This node has the following parameters:

  • Select. This defines the type of elements to be selected at primary selection step. The available values are Vertices, Edges and Faces. The default value is Vertices.

  • Criteria. This defines the type of geometrical criteria to be used for primary selection. Not all types of criteria are available for all types of primary elements. The available types are:

    • By Side. Selects elements that are located at one side of the object. The side is specified by Direction input. So, you can select “rightmost** vertices by passing (1, 0, 0) as Direction. Number of elements to select is controlled by Percent input: 1% means select only “most rightmost” elements, 99% means select “all but most leftmost”. More exactly, this mode selects point V if (Direction, V) >= max - Percent * (max - min), where max and min are the maximum and minimum values of that scalar product amongst all points being considered.

    • By Normal. This mode is available only when Select parameter is set to Faces. Selects faces, that have normal vectors pointing in the specified Direction. So you can select “faces looking to right”. More exactly, this mode selects face F if (Direction, Normal(F)) >= max - Percent * (max - min), where max and min are the maximum and minimum values of that scalar product amongst all faces. For non-planar face, it’s normal is calculated by calculating normals at many points of that face, and then averaging them.

    • By Center and Radius. Selects elements, which are within Radius from the specified Center.

    • By Plane. Selects elements, which are within Radius from the (infinite) plane, defined by Center point and Direction normal vector.

    • By Cylinder. Selects elements, which are within Radius from the (infinite) straight line, defined by Center point and Direction directing vector.

    • By Direction. This mode is available only when Select parameter is set to Edges. Selectsedges, which are nearly parallel to the specified Direction vector. Note that this mode considers edges as non-directed; as a result, you can change sign of all coordinates of Direction, and this will not affect output. More exactly, this mode selects edge E if Abs(Cos(Angle(E, Direction))) >= max - Percent * (max - min), where max and min are maximum and minimum values of that cosine. For non-linear edges, the direction is calculated by taking some number of points of this edge, and then approximating them by a straight line.

    • By Distance to Solid. Selects elements, which are within Radius from the second Solid object, provided in the Tool input.

    • Inside Solid. Selects elements, which are inside of the second Solid object, provided in the Tool input.

  • 1. Partially selected edges, faces. At primary selection step, this defines whether the node should consider edges or faces, that have only part of their points conforming to the condition, as selected. This parameter is not available when the Select parameter is set to Vertices. Unchecked by default.

  • 2. Partially selected edges, faces. At secondary selection step, this defines whether the node should consider edges or faces, that have only part of their vertices / edges selected at the primary step, as selected. Unchecked by default.

  • Tolerance. This parameter is available only when Criteria parameter is set to Inside Solid. This defines the precision of calculation. Smaller values give more precise results, but take more time. The default value is 0.01.

  • Including shell. This parameter is available only when Criteria parameter is set to Inside Solid. This defines, whether points lying directly on a face of the Tool solid, are to be considered as selected. Unchecked by default.

Outputs

This node has the following outputs:

  • VerticesMask. Mask for selected vertices.

  • EdgesMask. Mask for selected edges.

  • FacesMask. Mask for selected faces.

Example of usage

https://user-images.githubusercontent.com/284644/92938146-a2e4cf80-f465-11ea-9e9b-d938dd9dd629.png