SMLib Manual

Functions

Curve/Point

SmCurve::GlobalPointSolve

  • minimization - SM_SO_MINIMIZE - find points on curve closest to point
  • maximization - SM_SO_MAXIMIZE - find points on curve farthest from point
  • normalization - SM_SO_NORMALIZE - find points on curve where tangent is perpendicular to vector to the point
  • intersection - SM_SO_INTERSECT - find where points intersect a curve
  • at distance - SM_SO_AT_DISTANCE - find point on curve at given distance from point
  • signed directed minimize - SM_SO_SIGNED_DIRECTED_MINIMIZE - projected operation to find where a point touches the curve when being moved along a given vector
  • directed minimization - SM_SO_DIRECTED_MINIMIZE - find points on curve of the minimal projected distance between the point and curve along a given vector which is parallel to the projection plane
  • directed maximization - SM_SO_DIRECTED_MAXIMIZE - find points on curve of the maximum projected distance between the point and curve along given vector which is parallel to the projection plane
  • projected minimization - SM_SO_PROJECTED_MINIMIZE - find points on curve minimum projected distance between the point and curve
  • projected maximization - SM_SO_PROJECTED_MAXIMIZE - find points on curve of the maximum projected distance between the point and curve

SmCurve::GlobalPropertyAnalysis

  • find inflection points, intersection of plane or cylinder, silhouette points, maximum and minimum first derivatives on the curve, angle to plane
  • see documentation on SmCurvePropertyType for additional curve properties

Curve/Curve

SmCurve::GlobalCurveSolve

  • minimization - SM_SO_MINIMIZE - find points where distance between two curves is minimal
  • maximization - SM_SO_MAXIMIZE - find points where distance between two curves is maximal
  • normalization - SM_SO_NORMALIZE - find points on two curves where the tangents are perpendicular to the vector between the curves
  • at distance - SM_SO_AT_DISTANCE - find points on the two curves at given distance and same angle between them
  • signed directed minimize - SM_SO_SIGNED_DIRECTED_MINIMIZE - projected operation to find first point two curves touch when being moved along a given vector
  • directed minimization - SM_SO_DIRECTED_MINIMIZE - find points of the minimal projected distance between two curves along a given vector which is parallel to the projection plane
  • directed maximization - SM_SO_DIRECTED_MAXIMIZE - find points of the maximum projected distance between two curves along given vector which is parallel to the projection plane
  • projected tangency - SM_SO_PROJECTED_TANGENCY - find points where projections of curves become tangent
  • signed angle minimization - SM_SO_SIGNED_ANGLE_MINIMIZE - find first points where projections of curves touch when being rotated about point
  • projected minimization - SM_SO_PROJECTED_MINIMIZE - find points minimum distance between projections of two curves
  • projected maximization - SM_SO_PROJECTED_MAXIMIZE - find points maximum distance between projections of two curves
  • projected intersection - SM_SO_PROJECTED_INTERSECT - find points where projected curves intersect

SmCurve::GlobalCurveIntersect - curve/curve intersection - including coincidence, tangency and grazing conditions
SmCurve::GlobalCurveSelfIntersect - curve self intersection - including coincidence, tangency and grazing conditions

Trimmed Surface(s)/Point

SmTopologySolver::BrepPointSolve

  • minimization - SM_SO_MINIMIZE - find points on the trimmed surface(s) closest to the point
  • maximization - SM_SO_MAXIMIZE - find points on the trimmed surface(s) farthest from the point
  • normalization - SM_SO_NORMALIZE - find points on the trimmed surface(s) where normal is parallel to vector to the point
  • intersection - SM_SO_INTERSECT - find points where the point intersects the trimmed surface(s) to with a given tolerance
  • projected minimization - SM_SO_PROJECTED_MINIMIZE - find points where projection of the point and the trimmed surface(s) are minimized
  • projected maximization - SM_SO_PROJECTED_MAXIMIZE - find points where projection of the point and the trimmed surface(s) are maximized
  • rayfiring - SM_SO_RAYFIRE - find first point(s) where ray intersects the trimmed surface(s)

Trimmed Surface/Curve

SmTopologySolver::BrepCurveSolve

  • minimization - SM_SO_MINIMIZE - find points on the trimmed surface(s) closest to the curve
  • maximization - SM_SO_MAXIMIZE - find points on the trimmed surface(s) farthest from the curve
  • normalization - SM_SO_NORMALIZE - find points on the trimmed surface(s) where normal is parallel to vector to the curve
  • intersection - SM_SO_INTERSECT - find points where the curve intersects the trimmed surface(s) to with a given tolerance
  • projected minimization - SM_SO_PROJECTED_MINIMIZE - find points where projection of the curve and the trimmed surface(s) are minimized
  • projected maximization - SM_SO_PROJECTED_MAXIMIZE - find points where projection of the curve and the trimmed surface(s) are maximized

Trimmed Surface/Trimmed Surface

SmTopologySolver::BrepBrepSolve

  • minimization - SM_SO_MINIMIZE - find closest points between the two sets of trimmed surfaces
  • maximization - SM_SO_MAXIMIZE - find farthest points between the two sets of trimmed surfaces
  • normalization - SM_SO_NORMALIZE - find normal points between the two sets of trimmed surfaces
  • intersection SM_SO_INTERSECT - find points where the two sets of trimmed surfaces intersect to with a given tolerance
  • projected minimization - SM_SO_PROJECTED_MINIMIZE - find points where projection of the two sets of trimmed surfaces are minimized
  • projected maximization - SM_SO_PROJECTED_MAXIMIZE - find points where projection of the two sets of trimmed surfaces are maximized

Surface Silhouette Curves

SmBSplineSurface::CreateSilhouetteCurves

  • detects all silhouette curves, identifies iso-parametric curves and processes singularities

Dropping Curves

  • Create the 2-D parameter space curves corresponding to a 3-D curve which lies on or near a trimmed surface that is at least a C1 surface. Use SmSurface::DropCurve
  • Parallel projection of a curve onto a surface resulting in both the 3-D and 2-D space curves. Use SmBSplineSurface::CreateParallelProjectionCurves
  • Projection with trimming of curve to surface boundary and internal discontinuties. Use SmSurface::DropAndTrimCurve

Topological/Geometrical Query Operations

  • retrieval of topological adjacency relationships between faces SmFace) , loops (>SmLoop), edges SmEdge) and vertices>SmVertex); See as an example SmEdge::FindRadialSector
  • direct retrieval of all faces, edges or vertices in a trimmed surface. See as an example SmFace::GetEdges
  • retrieval of geometric information (point, 2-D and 3-D curve, surface) corresponding to topological elements (vertex, edge, face). For example: SmEdge::GetCurve;and SmFace::GetSurface
  • retrieval of the boundary box of a trimmed surface. Use SmFace::CalculateBoundingBox
  • retrieval of trim boundary with loop and orientation information. Use SmFace::GetLoops

Numerical Utility Classes

  • integration - SmIntegrator
  • one-dimensional Newton based local solver algorithm - SmLocalSolve1d
  • n-dimensional Newton based local solver algorithm - SmLocalSolveNd

Miscellaneous Classes

  • curve cache decomposition into Bezier segments - SmCurveCache
  • surface cache decomposition into bi-Bezier segments - SmSurfaceCache
  • cache manager - SmCacheMgr
  • fixed sized memory allocation manager - SmMemBlockMgr
  • utility representation of an iso-parametric curve on surface - SmCrvOnSurf

SMLib Plus Classes

  • SmPrimitiveCreation - class and methods for creating solid primitives and performing 2D Boolean operations.
  • SmTopologySweep - class and methods for doing topological portion of Non-Manifold Sweeping.
  • SmSweepGeometryCreation - abstract method for geometric portion of sweeping operations.
    • SmTranslationalSweepGeomtry, SmRotationalSweepGeometry
  • SmTrimmingTools - tools to help convert between different trimming formats including unordered loops, unoriented loops, loops that cross seams.
Last updated on Apr 29, 2024.