*group_matches

Groups parts into partsets based on matching shapes.

Syntax

*group_matches entity_type mark_id reference_entity_type reference_mark_id string_array number_of_strings

Type

HyperMesh Tcl Modify Command

Description

Groups parts into partsets based on matching shapes.

Similar shapes are grouped into to a single partset. A parent partset is created for all different partsets. Unmatched partsets can optionally be put in a new partset. Also see hm_getmatching to find and group but not create partsets.

Inputs

entity_type
The type of entity to group. Must be set as modules/parts.
mark_id
The ID of the mark containing the entities to group. Valid values are 1 and 2.
reference_entity_type
The type of entity to use as reference. Must be set as modules/parts.
reference_mark_id
The ID of the mark containing the reference entities, if any. Valid values are 1 and 2. If the mark is empty, grouping is done by finding similar shapes within all input entities.
string_array
The string array ID that contains the additional input parameters. The string array is created using the *createstringarray command. This should always be set to 1.
Strings are indicated using the format "name=value". Valid strings are:
areaCalcMethod=<value>
Specifies how the matching area percentage is calculated when searchMethod=ByArea:
ByLowestId - Calcualte with respect to the entity with the lowest ID (default)
ByHighestId - Calcualte with respect to the entity with the highest ID
compareType=<value>
Specifies with what entities the comparison happens when searchMethod=ByEncoding:
0 - Use both CAD and FE from the input selection
1 - Prefer CAD over FE. This will pick FE only if the input has only FE.
2 - Use only CAD
3 - Prefer FE over CAD. This will pick CAD only if the input has only CAD.
4 - Use only FE
deformationTolerance=<value>
The tolerance value to check matching. Default is global node tolerance when searchMethod=ByArea or searchMethod=ByTopo, and 0.5 when searchMethod=ByEncoding.
encoding_algorithm=<value>
The optional encoding algorithm to use when searchMethod=ByEncoding. Valid values are:
0 - Spherical harmonics (default)
matchingPercentThreshold=<value>
The matching area threshold above which matching pairs are returned (default is node tolerance).
When searchMethod=ByEncoding, this is reported as (1 – differenceinencoding/deformationTolerance=<value>)
parentpartsetname=<value>
The name for the parent partset. This can have format strings for substituting searchMethod, matchingPercentThreshold and deformationTolerance. Default is "%searchMethod_%matchingPercentThreshold_%deformationTolerance". When the command is rerun with the same settings, part sets can get overwritten if the same parentpartsetname is provided.
partsetname=<value>
The name for the partset containing matching parts. This can have format strings for introducing representative part names. Default "Matched_%partname" will substitute %partname with the representative (among matches in the group) part name of the group. When the partset is created the name will also have the parent partset ID at the end regardless of the name given here. When the command is rerun with the same settings, part sets can get overwritten if the same partsetname is provided.
partsetforunmatched=<value>
If set to 1, creates a separate partset for unmatched parts. Default 0.
searchMethod=<value>
The method to perform the comparison:
ByArea - Use area of entities (default)
ByEncoding - Use shape encoding
ByTopo - Use topology comparison
sphai:sphhar_bandwidth=<value>
Optional, valid for encoding_algorithm 0, default 16.
sphai:sphhar_fallof=<value>
Optional, valid for encoding_algorithm 0, default 2.828427.
sphai:sphhar_radii=<value>
Optional, valid for encoding_algorithm 0, default 32.
sphai:resolution=<value>
Optional, valid for encoding_algorithm 0, default 64.
unmatchedpartsetname=<value>
The name for the unmatched partset when partsetforunmatched=1.
number_of_strings
Integer indicating the size (number of strings) in the string array created using *createstringarray.

Examples

To group all parts by area without any reference:
*createmark parts 1 all
*createmark parts 2
*group_matches parts 1 parts 2
To group all parts by area using part 232 as the reference:
*createmark parts 1 all
*createmark parts 2 232
*group_matches parts 1 parts 2
To group all parts by shape without any reference, using a custom parent partset name:
*createmark parts 1 all
*createmark parts 2 
*createstringarray 1 "method=Shape parentpartsetname=%searchMethod_%deformationTolerance"
*group_matches parts 1 parts 2 1 1

Errors

Incorrect usage results in a Tcl error. To detect errors, you can use the catch command:
if { [ catch {command_name...} ] } {
   # Handle error
}

Version History

2021