Model.hm_flangedetectionsetparams#

Model.hm_flangedetectionsetparams(max_width, min_width=0.000000, feature_angle=DBL_MAX)#

Defines parameters for finding flanges in both geometry and FE. Multiple calls to this function can be made to override or redefine the parameters. Settings are cleared on any call to Model.hm_flangedetectioninit() /Model.hm_flangedetectionend().

This must be preceded by a call to Model.hm_flangedetectioninit(). Only max_width is mandatory. All other parameters are optional and have default values. Parameters can be specified in any order.

Parameters:
  • max_width (double) – The maximum width of flanges to be detected.

  • min_width (double) – The minimum width of flanges to be detected. Default is 0.0 if not specified.

  • feature_angle (double) – The expected deviation at inner boundaries of flanges, in degrees. Default is the global meshing feature angle if not specified.

Returns:

Example#

Find 2D flanges from elements in all components , use a min width of 2 , a max width of 20 and a feature angle of 20 , and write out all flange details to a file named C:/temp / flanges.txt#
import hm
import hm.entities as ent

model = hm.Model()

flangesfile = open("C:/temp/flanges.txt", "w")

comps = hm.Collection(model, ent.Component)

model.hm_flangedetectioninit(collection=comps)

model.hm_flangedetectionsetparams(max_width=20.0, min_width=2.0, feature_angle=20.0)

model.hm_flangedetectionfindflanges(find=1)

_, result = model.hm_flangedetectiongetnumberofflanges()
n=result.numberOfFlanges

if n > 0:
    flangesfile.write(f"Number of flanges = {n}\n")
    flangesfile.write("Flanges details \n")

    for i in range(0,n):
        _, result = model.hm_flangedetectiongetflangedetails(index=i)

        entityType = result.entityType
        dimension = result.dimension
        detectionType = result.detectionType
        flangeEntityIDs = result.flangeEntityIDs
        freeBoundaryEntityIDs = result.freeBoundaryEntityIDs
        connectedBoundaryEntityIDs = result.connectedBoundaryEntityIDs
        minWidth = result.minWidth
        maxWidth = result.maxWidth
        length = result.length
        hasHoles = result.hasHoles
        isInfinite = result.isInfinite

        Details = [
            entityType,
            dimension,
            detectionType,
            flangeEntityIDs,
            freeBoundaryEntityIDs,
            connectedBoundaryEntityIDs,
            minWidth,
            maxWidth,
            length,
            hasHoles,
            isInfinite ]

        flangesfile.write(f"details = {Details}\n")
        print(i)
        status, result = model.hm_flangedetectiongetflangemidline(index=i,offset_distance=5.0)

        print("pointCoordinates",result.pointCoordinates)
        Coordinates = result.pointCoordinates
        for points in Coordinates:
            midPoint=points.midPoint

            flangesfile.write(f"midline = {midPoint}\n")


    model.hm_flangedetectionfindmates(max_search_dist=10.0, min_search_dist=0.0)

    _, result = model.hm_flangedetectiongetnumberofmatinggroups()
    m = result.numberOfMatingGroups

    if m>0:
        for i in range(0,m):
            _,result = model.hm_flangedetectiongetmatinggroupdetails(index=i)

            matingGroupDetails = result.matingGroupDetails
            for details in matingGroupDetails:
                memberType = details.memberType
                memberContents = details.memberContents

                flangesfile.write(f"memberType = {memberType}\n")
                flangesfile.write(f"memberContents = {memberContents}\n")
    else:
        flangesfile.write("Flange mates not detected.\n")

else:
    flangesfile.write("Flanges not detected.\n")


model.hm_flangedetectionend()

flangesfile.close()