Contents
IwCurve::GlobalPointSolve
 minimization  IW_SO_MINIMIZE  find points on curve closest
to point
 maximization  IW_SO_MAXIMIZE  find points on curve
farthest from point
 normalization  IW_SO_NORMALIZE  find points on
curve where tangent is perpendicular to vector to the point
 intersection  IW_SO_INTERSECT  find where points intersect
a curve
 at distance  IW_SO_AT_DISTANCE  find point on curve at
given distance from point
 signed directed minimize  IW_SO_SIGNED_DIRECTED_MINIMIZE 
projected operation to find where a point touches the curve
when being moved along a given vector
 directed minimization  IW_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  IW_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  IW_SO_PROJECTED_MINIMIZE 
find points on curve minimum projected distance between the
point and curve
 projected maximization  IW_SO_PROJECTED_MAXIMIZE  find
points on curve of the maximum projected distance between
the point and curve
IwCurve::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 IwCurvePropertyType for additional
curve properties
IwCurve::GlobalCurveSolve
 minimization  IW_SO_MINIMIZE  find points where distance
between two curves is minimal
 maximization  IW_SO_MAXIMIZE  find points where distance
between two curves is maximal
 normalization  IW_SO_NORMALIZE  find points on two
curves where the tangents are perpendicular to the vector
between the curves
 at distance  IW_SO_AT_DISTANCE  find points on the two
curves at given distance and same angle between them
 signed directed minimize  IW_SO_SIGNED_DIRECTED_MINIMIZE 
projected operation to find first point two curves touch
when being moved along a given vector
 directed minimization  IW_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  IW_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  IW_SO_PROJECTED_TANGENCY  find
points where projections of curves become tangent
 signed angle minimization  IW_SO_SIGNED_ANGLE_MINIMIZE 
find first points where projections of curves touch when
being rotated about point
 projected minimization  IW_SO_PROJECTED_MINIMIZE  find
points minimum distance between projections of two curves
 projected maximization  IW_SO_PROJECTED_MAXIMIZE  find
points maximum distance between projections of two curves
 projected intersection  IW_SO_PROJECTED_INTERSECT 
find points where projected curves intersect
IwCurve::GlobalCurveIntersect  curve/curve
intersection  including coincidence, tangency and grazing
conditions
IwCurve::GlobalCurveSelfIntersect 
curve
self intersection  including coincidence, tangency and grazing
conditions
IwTopologySolver::BrepPointSolve
 minimization  IW_SO_MINIMIZE  find points on the trimmed
surface(s) closest to the point
 maximization  IW_SO_MAXIMIZE  find points on the trimmed
surface(s) farthest from the point
 normalization  IW_SO_NORMALIZE  find points on the trimmed
surface(s) where normal is parallel to vector to the point
 intersection  IW_SO_INTERSECT  find points where the
point intersects the trimmed surface(s) to with a given
tolerance
 projected minimization  IW_SO_PROJECTED_MINIMIZE  find
points where projection of the point and the trimmed
surface(s) are minimized
 projected maximization  IW_SO_PROJECTED_MAXIMIZE  find
points where projection of the point and the trimmed
surface(s) are maximized
 rayfiring  IW_SO_RAYFIRE  find first point(s) where
ray intersects the trimmed surface(s)
IwTopologySolver::BrepCurveSolve
 minimization  IW_SO_MINIMIZE  find points on the trimmed
surface(s) closest to the curve
 maximization  IW_SO_MAXIMIZE  find points on the
trimmed surface(s) farthest from the curve
 normalization  IW_SO_NORMALIZE  find points on the trimmed
surface(s) where normal is parallel to vector to the curve
 intersection  IW_SO_INTERSECT  find points where the curve
intersects the trimmed surface(s) to with a given tolerance
 projected minimization  IW_SO_PROJECTED_MINIMIZE  find
points where projection of the curve and the trimmed
surface(s) are minimized
 projected maximization  IW_SO_PROJECTED_MAXIMIZE  find
points where projection of the curve and the trimmed
surface(s) are maximized
IwTopologySolver::BrepBrepSolve
 minimization  IW_SO_MINIMIZE  find closest points between
the two sets of trimmed surfaces
 maximization  IW_SO_MAXIMIZE  find farthest points between
the two sets of trimmed surfaces
 normalization  IW_SO_NORMALIZE  find normal points between
the two sets of trimmed surfaces
 intersection IW_SO_INTERSECT  find points where the two
sets of trimmed surfaces intersect to with a given tolerance
 projected minimization  IW_SO_PROJECTED_MINIMIZE  find
points where projection of the two sets of trimmed surfaces
are minimized
 projected maximization  IW_SO_PROJECTED_MAXIMIZE  find
points where projection of the two sets of trimmed surfaces
are maximized
IwBSplineSurface::CreateSilhouetteCurves
 detects all silhouette curves, identifies isoparametric
curves and processes singularities
 Create the 2D parameter space curves corresponding to a 3D
curve which lies on or near a trimmed surface that is at
least a C1 surface. Use IwSurface::DropCurve
 Parallel projection of a curve onto a surface resulting in
both the 3D and 2D space curves. Use IwBSplineSurface::CreateParallelProjectionCurves
 Projection with trimming of curve to surface boundary and
internal discontinuties. Use IwSurface::DropAndTrimCurve
 IwBrep::CreateFaceFromSurface from a parametrically
bounded NURBS surface.
 IwBrep::MakeFaceWithCurves from a surface and 2D parameter
space curves.
 from a surface and 3D model space curves. Use
IwBrep::MakeFaceWithCurves
 from a surface with both 2D and 3D space curves.
UseIwBrep::MakeFaceWithCurves
 Creation of topological elements (vertices, edges, faces)
using "Euler like" topological operators.
See the tutorial on Solid
Creation by Topology Tables
 Adjustment of operational tolerances to compensate for gaps.
See as an example IwEdge::SetTolerance
 Sewing together trimmed surfaces to create shells or solids.
Use IwBrep::SewFaces.
 retrieval of topological adjacency relationships between
faces IwFace) , loops (>IwLoop), edges IwEdge) and
vertices>IwVertex); See as an example
IwEdge::FindRadialSector
 direct retrieval of all faces, edges or vertices in a
trimmed surface. See as an example IwFace::GetEdges
 retrieval of geometric information (point, 2D and 3D
curve, surface) corresponding to topological elements
(vertex, edge, face). For example:
IwEdge::GetCurve;and IwFace::GetSurface
 retrieval of the boundary box of a trimmed surface. Use
IwFace::CalculateBoundingBox
 retrieval of trim boundary with loop and orientation
information. Use IwFace::GetLoops
 Parameter space points relative to trim boundary. Use
IwFace::PointClassify
 Parameter space or model space curves relative to trim
boundary. Use IwFace::Point3DClassify
 Classification of 3D point relative to a Brep. Use
IwBrep::Point3DClassify
 Output to Open GL through the NURBS based
curve/surface/Trimmed Surface interface
 pointer to pointer map  IwMapPtrToPtr
 dynamic typed array  IwTArray
 dynamic typed list  IwTList
 twodimensional vector  IwVector2d, IwPoint2d
 threedimensional vector  IwVector3d, IwPoint3d
 local coordinate system or transformation  IwAxis2Placement
 ndimensional matrix used to solve linear equations 
IwMatrix
 polynomial equation representation  IwPolynomial
 nonaxis aligned bounding box  IwPseudoBox
 onedimensional interval  IwExtent1d
 twodimensional bounding box  IwExtent2d
 threedimensional bounding box  IwExtent3d
 ndimensional bounding box  IwExtentNd
 integration  IwIntegrator
 onedimensional Newton based local solver algorithm 
IwLocalSolve1d
 ndimensional Newton based local solver algorithm 
IwLocalSolveNd
 curve cache decomposition into Bezier segments 
IwCurveCache
 surface cache decomposition into biBezier segments 
IwSurfaceCache
 cache manager  IwCacheMgr
 fixed sized memory allocation manager  IwMemBlockMgr
 utility representation of an isoparametric curve on surface
 IwCrvOnSurf
SMLib Plus Classes
 IwPrimitiveCreation  class and methods for creating
solid primitives and performing 2D Boolean operations.
 IwTopologySweep  class and methods for doing
topological portion of NonManifold Sweeping.
 IwSweepGeometryCreation  abstract method for
geometric portion of sweeping operations.
IwTranslationalSweepGeomtry, IwRotationalSweepGeometry 
implemented subclasses of IwSweepGeometryCreation.
 IwTrimmingTools  tools to help convert between
different trimming formats including unordered loops,
unoriented loops, loops that cross seams.
 IwFilletExecutive  high level filleting object
Surface Filleting
Filleting is the insertion of a connecting surface, called the
fillet surface, between two other surfaces to connect them with a
specificallyshaped blend surface.
Filleting can be either surface filleting, or topologybased filleting.
Surface filleting connects two surfaces that are not necessarily connected
any other way, while topologybased filleting generally replaces an
edge connecting two surfaces with a blend surface.
This document describes surface filleting, which is available in TSNLib;
see the SMLib Functionality Manual for a description of topologybased filleting,
and for more general information about filleting in SMLib.
Surface filleting creates a fillet surface and two rail curves,
which are where the new fillet surface joins the two original base surfaces.
The original base surfaces may be trimmed back to the new rail curves.
This trimming operation, along with the creation of the
fillet surface and the rail curves,
are all parts of the surface filleting functionality.
SMLib supports several different kinds of fillet surface shapes to enable
several different styles for connecting one surface to another.
The functionality is best described in terms of SMLib's Filleting Framework.
The framework controls the three aspects of SMLib filleting: fillet radius definition,
crosssection shape of the fillet surface, and behavior at the ends of fillets.
Terminology
The following terms will be used in this document:

Base Surfaces:
The two original surfaces that will be joined by the fillet surface.

Fillet Surface:
A new surface that is added to connect the base surfaces during the filleting operation.

Rail Curves:
The "long edges" of a fillet surface,
which run along the two base surfaces.
The rail curves are calculated first, before the fillet surface itself.

Cross Section:
The shape of the cross section of the fillet surface.
This is created after the rail curves are traced out,
and is independent of the radius of the fillet.
Fillet surfaces typically have a circular (rolling ball)
or linear (chamfer) cross sections.
SurfaceBased Filleting Functionality
Fillet Solvers: Radius Definition
SurfaceSurface filleting in TSNLib supports only constantradius fillets.
Variableradius fillets are not supported due to the problem of defining
a radius function without an existing edge to run the fillet along.
Constantwidth fillets could be added, but are not implemented at present.
TSNlib does support differential offsets however: different radius values
may be specified for the two surfaces, resulting in a noncircular blend.
Fillet Surface Generators: Cross Section Shapes
The following crosssection shapes are implemented in TSNlib.
Examples of these are pictured in the Figures, below.
 Circular cross section – Rollingball Fillet: produces a surface whose
cross sections are either an exact rational circle,
or an approximation of a circle (IwCircularCrossSectionFSG)
 Linear cross section – Chamfer: produces a surface with a linear
cross section. (IwLinearCrossSectionFSG)
Highercontinuity blendcurve sections have not currently been implemented
in surfacesurface filleting. TSNLib does support two other variations on
the circular crosssection shapes:
 Mirrored: the circular cross section can be "mirrored" across
the line between the rail curves. This fillet surface is
not tangent to the base surfaces.
 Complementary: the complementary portion of the circular cross section
can be used instead of the usual blend section. This fillet
surface meets the base surfaces in a cusp.
Fillet Corners
In TSNLib, this describes how the ends of the fillet surface are trimmed.
The following options are available:
 No trimming: The fillet surface extends beyond the boundaries of the
base surfaces. It is defined on extensions of the base surfaces.
 Minimal Trim: The fillet surface is trimmed to the first intersection
with a boundary of one of the base surfaces. This is an isoparametric
trim, running straight along the cross section.
 Maximal Trim: The fillet surface is trimmed to the farther intersection
with a boundary of one of the base surfaces.
This is also an isoparametric trim.
 Beveled Trim: The fillet surface is trimmed at the intersections with
the boundaries of both base surfaces. This trim is a straight line
in the parameter space of the fillet surface, connecting the two
points of intersection.
 Tangency Trim: The fillet surface is trimmed such that its boundaries
are tangent to the boundaries of the base surfaces where they intersect.
Filleting Process
The filleting process for SurfaceSurface is encapsulated in a single method
of IwFilletExecutive called SurfaceSurfaceFillet(). The various parameters
for the fillet are passed as arguments, and the method does all of the work
required to create the fillet surface. The arguments passed are:
 The two surfaces to be filleted.
 The two radii for the surfaces (generally the same value).
 A tolerance value for the offsetintersection.
 Crosssection type: linear (chamfer), approximate circular, or exact (rational) circular.
 Accuracy of approximatecircular cross section, expressed as a percent of radius.
 How to trim the two ends of the fillet surface.
 How to trim the base surfaces, along the fillet rail.
 Whether to mirror a circular fillet.
 Whether to use the complement of a circular fillet.
If these options are not sufficient for a specific fillet, the user could probably
find what is desired by inspecting the source code of IwFilletExecutive::SurfaceSurfaceFillet().
In addition, SMLib will be happy to assist, perhaps adding optional arguments to the method,
or adding functionality to surfacesurface filleting.
Surface
Filleting Figures
Closed Fillet of Sphere and NURBS
All of the software and documentation received with this release
is copyrighted by Solid Modeling
Solutions, Inc. You may not distribute source code or
documentation for this software outside of the company and the site which owns
the license. The standard license agreement allows you to freely distribute
object code in any application which does not contain a
programmatic interface. All software and documentation is considered proprietary
information and the intellectual property of Solid
Modeling Solutions, Inc. This document contains trade secret
information which is deemed proprietary.
Copyright © 19982010 Solid Modeling Solutions
All rights reserved.
Information in this document is subject to change without notice.
