hm_getedgeloops
Returns surface and element entities of specific connection types.
Syntax
hm_getedgeloops entity_type markid=<mark_id> ?looptype=<loop_type>? ?featureangle=<angle>? ?refmarkid=<mark_id>? ?restricttoinput=<value>?
Type
HyperMesh Tcl Query Command
Description
Returns surface and element free and non-manifold edge loop entities. The return is a "list of loops". Each loop is an ordered list of either surface edge or element node IDs that define each loop. The first value in each loop list is the loop type. The remaining values are the ordered node/surface edge IDs defining the loop. If the loop is closed, the first and last ID are the same.
For example:
{2 1 29 35 34 33 32 31 25 5 4 3 2 1 } {2 6 7 8 9 10 22 23 24 21 18 15 12 30 11 6 } {2 16 19 20 17 16 } {4 26 27 28 } {1 26 39 40 41 28 }
Inputs
- entity_type
- The type of entity to query. Valid values are surfaces and elements.
- markid=<mark_id>
- The ID of the mark containing the entities to query. Valid values are 1 and 2.
- looptype=<loop_type>
- The type of loop types to find. Bit values are used and the value is calculated as
(1*Bit0 + 2*Bit1 + 4*Bit2 + 8*Bit3 + 16*Bit4 + 32*Bit5 + 64*Bit6 + 128*Bit7). If not
specified, all loop types are returned.
- Bit0
- 0 - Do not consider open free edge loops
- Bit1
- 0 - Do not consider closed free edge loops
- Bit2
- 0 - Do not consider open t-connections
- Bit3
- 0 - Do not consider closed t-connections
- Bit4
- 0 - Do not consider open x-connections
- Bit5
- 0 - Do not consider closed x-connections
- Bit6
- 0 - Do not consider open feature edge loops
- Bit7
- 0 - Do not consider closed feature edge loops
- featureangle=<angle>
- This is relevant to finding feature edges only. When an edge is shared by two surfaces, and the average angle along the edge between these two surfaces is greater than featureangle=<angle>, then it is considered a feature edge. The angle is measured in degrees. The default value is the model’s default feature angle preference.
- refmarkid=<mark_id>
- A mark containing a set of reference surfaces used in identifying feature edge loops in ambiguous cases. For example, if a feature edge in a loop ends at a vertex at which two other feature edges connected, it is not clear which of the two will be the continuation of this feature edge. In such cases, the one that is shared with a reference surface, or with a surface that is connected to reference surfaces via non-feature edges, is taken as the continuation of the feature edge loop. If reference surfaces are not given, the feature edge loops are terminated when they come to such junctions.
- restricttoinput=<value>
- 0 - Loops are completed naturally for the whole model, which might result in including edges that are not in the input specified by mark_id.
Examples
To get all edge loops for the displayed surfaces:
*createmark surfs 1 displayed
hm_getedgeloops surfs markid=1
To get all open t-connection (Bit2) and closed t-connection (Bit3) edge loops for the displayed surfaces:
*createmark surfs 1 displayed
hm_getedgeloops surfs markid=1 looptype=12
To get all closed free (Bit1) edge loops for the displayed elements:
*createmark elems 1 displayed
hm_getedgeloops elems markid=1 looptype=2
Errors
if { [ catch {command_name...} ] } {
# Handle error
}
Version History
14.0
2017.1 - Fixed issues where the command would return an extra space at the end of each sublist, and where masked/hidden entities were not being considered even though they were on the input mark.
2019 - Added new looptype Bit6 and Bit7 values. Added new optional arguments featureangle, refmarkid and restricttoinput.