• Maxence Reberol's avatar
    Add the setTransfiniteAutomatic feature (in API) · 0a0b8b6b
    Maxence Reberol authored
    setTransfiniteAutomatic() automatically sets the transfinite
    attribute on curves, surfaces and volumes when possible. The
    objective is to automate a task (setting transfinite) which is
    very tedious on large CAD models (hundreds of curves), and to
    help automatic quad meshers by preprocessing the trivial patches.
    The number of points on curves is automatically determined according
    to the sizing constraints (same number as when generating the vertices
    on curves). The number of points is kept coherent between adjacent
    quadrilateral surfaces by computing the topological chords where
    possible, and using the averaged values on the independent chords.
    Some limitations:
    - It is not possible to automatically and robustly deal with
    faces with more than 4 edges, even if we could choose 4 corners,
    as it would create T-junctions and then the automatically propagated
    constraints may become inconsistent (limit cycles). It is still
    possible to deal with a subset of these cases, but it is lot of work,
    much more than this commit.
    - In the quadrilateral faces, the angle corners are computed from the
    curve tangents but do not use the face normal, so large concave corners
    are not rejected with the current approach.
    - Currently, the points are uniformly distributed on the transfinite
    curves. It should be possible to detect existing transfinite curves
    with non-uniform distributions and propagate them.