Home

AcisLoftingInterface Class Reference
[Interactive Skinning and Lofting]

Passes data from one interactive lofting API function to the next and controls the execution of the interactive lofting operation. More...

#include <loft_intr.hxx>

Inheritance diagram for AcisLoftingInterface:

Inheritance graph
[legend]
Collaboration diagram for AcisLoftingInterface:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 AcisLoftingInterface (FACE *face1, double factor1, FACE *face2, double factor2, skin_options *opts)
 Creates a new object and initializes it with the given arguments.
 AcisLoftingInterface (int number, Loft_Connected_Coedge_List *coedge_list, skin_options *opts)
 Creates a new object and initializes it with the given arguments.
 AcisLoftingInterface ()
 C++ allocation constructor requests memory for this object but does not populate it.
virtual outcome addGuide (COEDGE *guide)
 Adds a guide curve to the interface object.
virtual outcome addGuide (EDGE *guide)
 Adds a guide curve to the interface object.
virtual logical addMappingCurves (int num, SPAposition *pts)
 Adds a mapping curve to the interface object.
virtual outcome addVertex (COEDGE *coed, WIRE *wire)
 Adds a vertex to the middle of the specified coedge and to each of the corresponding coedges in the wire list.
virtual outcome alignWires (int start=0, int end=0)
 Aligns the directions of the wires in the skinning or lofting profiles between start and end indices.
virtual outcome breakupWires (int start=0, int end=0)
 Creates an equal number of coedges in each wire of the skinning or lofting profiles between start and end indices.
virtual outcome buildEdges (ENTITY_LIST &edge_list)
 Builds a list of edges that represent the extents of the surfaces if the wires were to be skinned at the present configuration.
virtual outcome buildFaces (ENTITY_LIST &face_list)
 Builds a list of faces.
virtual outcome clearGuides ()
 Removes all guides from the interface object.
outcome clearMappingCurves ()
 Removes all mapping curves from the interface object.
virtual outcome collapseWires (ENTITY_LIST &)
 Deletes a degenerate coedge in each wire of a list of wires.
virtual outcome createBody (BODY *&body)
 Creates a body.
virtual outcome estimateMinRadOfCurvature (double &min_rad)
 Estimates the minimum radius of curvature of all the surfaces involved in the skin.
virtual
Loft_Connected_Coedge_List
get_internalCoedgeList ()
 Returns the list of internal coedges.
BODYgetBody ()
 Returns a pointer to the skinned or lofted body.
virtual curvegetGuideAt (int index) const
 Returns the guide curve of the specified index.
virtual outcome getGuides (int &numberOfGuides, curve **&guides)
 Gets the guides from the interface object.
logical getMappingCurve (int num, curve *&cur)
 Returns a B-spline approximation of the ith mapping curve.
logical getMappingCurve (int num, SPAposition *&pos_list=*(SPAposition **) NULL_REF)
 Returns a list of positions for the specified mapping curve.
int getNumberOfGuides () const
 Returns the number of guides in the interface object.
int getNumberOfWires ()
 Returns the number of wires in the temporary set of wires used for skinning or lofting.
outcome getOptions (logical &arc_length, logical &noTwist, logical &align, logical &perpendicular, logical &simplify, logical &closed, logical &solid, logical &periodic, logical &virtualGuides, logical &estimate_loft_tanfacs, logical &match_vertices, logical &no_new_twist_vertices, logical &allow_same_uv, logical &arc_length_u, logical &postprocess_stitch)
 Returns the skinning option values.
virtual law ** getProfileLaw (int index)
 Returns the profile law.
virtual WIREgetWireAt (int index)
 Gets a pointer to the wire at the given index in the list of temporary wires.
BODY ** getWireList ()
 Returns a pointer to the temporary set of wires that are used during the skinning or lofting operation.
virtual char * interfaceType ()
 Returns the interface type, either "skinning" or "lofting." This is always "lofting" for an AcisLoftingInterface.
logical is_all_straights ()
 Returns TRUE if all profiles consist of straight edges.
virtual outcome makeWires (BODY **&wire_list)
 Creates and returns pointers to the temporary skinning wires used in the align, minimize twist, and breakup algorithms.
virtual outcome minimizeTwist (int start=0, int end=0)
 Performs a twist minimization on the temporary skinning wires between start and end indices.
virtual outcome modifyWire (COEDGE *coedge1, COEDGE *coedge2, const SPAposition &adjusted_point, WIRE *wire)
 Moves the position of the vertex between the two coedges.
outcome postProcessStitch (BODY *&body)
 Does a postprocess stitch of the loft/skinned body back to the edges/coedges given as input.
logical removeMappingCurve (int index)
 Removes the specified mapping curve.
virtual outcome removeVertex (WIRE *wire, const SPAposition &pos)
 Removes the specified vertex from its coedge and a vertex from each of the corresponding coedges in each wire in the wire list.
void SetModelTolerance (const double iTolerance)
 Sets the model tolerance.
outcome setOptions (logical arclen, logical no_twist, logical align_opt, logical simpl_opt)
 Sets the value of each skinning/lofting option.
virtual outcome setStartVertex (int index, VERTEX *vertex)
 Sets the given vertex to be the starting vertex for the operation.
virtual outcome setStartVertex (WIRE *wire, VERTEX *vertex)
 Sets the given vertex to be the starting vertex for the operation.
virtual outcome setWireFixed (int index)
 Sets the wire given by the index to be fixed, meaning it is skipped over during the minimize twist operation.
virtual outcome setWireUnFixed (int index)
 Sets the wire given by the index to be not fixed, meaning it is not skipped over during the minimize twist operation.
virtual outcome simplifyWires ()
 Simplify the wire geometry.
outcome simplifyWires (logical iHandleAllCurves=FALSE)
 Performs a simplification on the temporary skinning wires.
virtual outcome smoothWires (logical &oSmoothDone, const double iSmoothAngle)
 Smooths curves at G0 vertices, if possible (i.e., curves are nearly G1).
virtual outcome validStartVertices (WIRE *wire, ENTITY_LIST &vertex_list)
 Any vertex used as the starting vertex must lie on the convex hull.
virtual ~AcisLoftingInterface ()
 C++ destructor that deallocates memory.


Detailed Description

Passes data from one interactive lofting API function to the next and controls the execution of the interactive lofting operation.


Role: AcisLoftingInterface maintains the data and controls the execution of an interactive lofting operation. The object can be directly manipulated by the application (that is, instantiation, calling of methods, and destruction) or through API functions. The use of API functions is recommended.

Interactive lofting operations consist of ten steps, which correspond to virtual methods. The 10 steps are nearly identical for skinning and lofting; therefore, applications can reuse code for both types of operations.

Applications can derive from this class and extend the lofting functionality by overriding the virtual methods.

See also:
AcisSkinningInterface

Constructor & Destructor Documentation

AcisLoftingInterface::AcisLoftingInterface (  ) 

C++ allocation constructor requests memory for this object but does not populate it.

AcisLoftingInterface::AcisLoftingInterface ( int  number,
Loft_Connected_Coedge_List coedge_list,
skin_options opts 
)

Creates a new object and initializes it with the given arguments.



Parameters:
number number of profiles.
coedge_list array of profiles.
opts skinning options.

AcisLoftingInterface::AcisLoftingInterface ( FACE face1,
double  factor1,
FACE face2,
double  factor2,
skin_options opts 
)

Creates a new object and initializes it with the given arguments.

Creates an AcisLoftingInterface object for Lofting Between Faces.

Parameters:
face1 first face.
factor1 takeoff factor for coedges on face1.
face2 second face.
factor2 takeoff factor for coedges on face2.
opts skinning options.

virtual AcisLoftingInterface::~AcisLoftingInterface (  )  [virtual]

C++ destructor that deallocates memory.


Member Function Documentation

virtual outcome AcisSLInterface::addGuide ( COEDGE guide  )  [virtual, inherited]

Adds a guide curve to the interface object.



Role: The curve underlying the guide must be C1 continuous and non-looping. In addition, the guide must touch each wire profile within SPAresabs and START and STOP exactly on the first and last profiles. Direction is not important. The guides can intersect the section profiles on or off vertices. If the guide does not lie on any vertices, no surface edge is created. If the guide intersects the first profile off a vertex but intersects any other profile on a vertex, a surface edge is made.

In addition to accepting guides the overloaded API supporting guide curves takes the logical flag virtualGuides. This flag toggles the guides from being local surface control to global surface control. For example, in the case of local surface control, the guide curve only affects the surface created from the edges of the wire that the guide intersects. In the case of virtualGuides being TRUE, the guide affects all the surfaces made from the wire body cross sections.

Parameters:
guide guide.

virtual outcome AcisSLInterface::addGuide ( EDGE guide  )  [virtual, inherited]

Adds a guide curve to the interface object.



Role: The curve underlying the guide must be C1 continuous and non-looping. In addition, the guide must touch each wire profile within SPAresabs and START and STOP exactly on the first and last profiles. Direction is not important. The guides can intersect the section profiles on or off vertices. If the guide does not lie on any vertices, no surface edge is created. If the guide intersects the first profile off a vertex but intersects any other profile on a vertex, a surface edge is made.

In addition to accepting guides, the overloaded API supporting guide curves takes the logical flag virtualGuides. This flag toggles the guides from being local surface control to global surface control. For example, in the case of local surface control, the guide curve only affects the surface created from the edges of the wire that the guide intersects. In the case of virtualGuides being TRUE, the guide affects all the surfaces made from the wire body cross sections.

Parameters:
guide guide.

virtual logical AcisSLInterface::addMappingCurves ( int  num,
SPAposition pts 
) [virtual, inherited]

Adds a mapping curve to the interface object.



Parameters:
num number of points in array - must equal the number of profiles.
pts array containing the points on the mapping curve - one per profile.

virtual outcome AcisLoftingInterface::addVertex ( COEDGE coedge,
WIRE wire 
) [virtual]

Adds a vertex to the middle of the specified coedge and to each of the corresponding coedges in the wire list.



Parameters:
coedge coedge to add vertex to middle of.
wire wire to add vertex on.

Implements AcisSLInterface.

virtual outcome AcisLoftingInterface::alignWires ( int  start = 0,
int  end = 0 
) [virtual]

Aligns the directions of the wires in the skinning or lofting profiles between start and end indices.



Role: This is required to create the surfaces. If start and end both equal 0, then all profiles are processed.

Parameters:
start Index of starting profile to align.
end Index of ending profile to align.

Implements AcisSLInterface.

virtual outcome AcisLoftingInterface::breakupWires ( int  start = 0,
int  end = 0 
) [virtual]

Creates an equal number of coedges in each wire of the skinning or lofting profiles between start and end indices.



Role: This is required to create the surfaces. If start and end both equal 0, then all profiles are processed.

Parameters:
start Index of starting profile to breakup.
end Index of ending profile to breakup.

Implements AcisSLInterface.

virtual outcome AcisLoftingInterface::buildEdges ( ENTITY_LIST edge_list  )  [virtual]

Builds a list of edges that represent the extents of the surfaces if the wires were to be skinned at the present configuration.



Role: This function is intended to be used as a preview of the potential lofting body that will be created. The application developer may delete this list of edges at any time, allow the end user to move the vertices of a lofting or skinning wire and recreate the edges.

Parameters:
edge_list returned edge list.

Implements AcisSLInterface.

virtual outcome AcisLoftingInterface::buildFaces ( ENTITY_LIST face_list  )  [virtual]

Builds a list of faces.



Parameters:
face_list returned face list.

Implements AcisSLInterface.

virtual outcome AcisSLInterface::clearGuides (  )  [virtual, inherited]

Removes all guides from the interface object.

outcome AcisSLInterface::clearMappingCurves (  )  [inherited]

Removes all mapping curves from the interface object.

virtual outcome AcisLoftingInterface::collapseWires ( ENTITY_LIST wire_list  )  [virtual]

Deletes a degenerate coedge in each wire of a list of wires.



Role: It will remove a degenerate coedge in each wire of a list of wires. In order for the coedges to be removed, each wire in the list must contain a degenerate coedge at the same position. That is, if the fifth coedge of wire one is degenerate, it and the other coedges will only be removed if the fifth coedge of every other wire is degenerate as well.

Parameters:
wire_list list of modified wires.

Implements AcisSLInterface.

virtual outcome AcisLoftingInterface::createBody ( BODY *&  body  )  [virtual]

Creates a body.



Parameters:
body body created.

Implements AcisSLInterface.

virtual outcome AcisLoftingInterface::estimateMinRadOfCurvature ( double &  min_rad  )  [virtual]

Estimates the minimum radius of curvature of all the surfaces involved in the skin.



Parameters:
min_rad minimum radius of curvature.

Implements AcisSLInterface.

virtual Loft_Connected_Coedge_List* AcisLoftingInterface::get_internalCoedgeList (  )  [inline, virtual]

Returns the list of internal coedges.

Implements AcisSLInterface.

BODY* AcisSLInterface::getBody (  )  [inline, inherited]

Returns a pointer to the skinned or lofted body.

virtual curve* AcisSLInterface::getGuideAt ( int  index  )  const [virtual, inherited]

Returns the guide curve of the specified index.



Role: The guides that have been added to the interface object are stored in an array.

Parameters:
index array index of desired guide curve.

virtual outcome AcisSLInterface::getGuides ( int &  numberOfGuides,
curve **&  guides 
) [virtual, inherited]

Gets the guides from the interface object.



Parameters:
numberOfGuides number of guides.
guides guide curves.

logical AcisSLInterface::getMappingCurve ( int  num,
curve *&  cur 
) [inherited]

Returns a B-spline approximation of the ith mapping curve.



Parameters:
num index into list of mapping curves.
cur returned B-spline approximation of the mapping curve.

logical AcisSLInterface::getMappingCurve ( int  num,
SPAposition *&  pos_list = *(SPAposition **) NULL_REF 
) [inherited]

Returns a list of positions for the specified mapping curve.



Parameters:
num index into list of mapping curves.
pos_list returned list of positions.

int AcisSLInterface::getNumberOfGuides (  )  const [inline, inherited]

Returns the number of guides in the interface object.

int AcisSLInterface::getNumberOfWires (  )  [inline, inherited]

Returns the number of wires in the temporary set of wires used for skinning or lofting.

outcome AcisLoftingInterface::getOptions ( logical &  arc_length,
logical &  noTwist,
logical &  align,
logical &  perpendicular,
logical &  simplify,
logical &  closed,
logical &  solid,
logical &  periodic,
logical &  virtualGuides,
logical &  estimate_loft_tanfacs,
logical &  match_vertices,
logical &  no_new_twist_vertices,
logical &  allow_same_uv,
logical &  arc_length_u,
logical &  postprocess_stitch 
)

Returns the skinning option values.



Parameters:
arc_length arc_length option value.
noTwist no_twist option value.
align align option value.
perpendicular perpendicular option value.
simplify simplify option value.
closed closed option value.
solid solid option value.
periodic periodic option value.
virtualGuides virtualGuides option value.
estimate_loft_tanfacs estimate_loft_tanfacs option value.
match_vertices match_vertices option value.
no_new_twist_vertices no_new_twist_vertices option value.
allow_same_uv allow_same_uv option value.
arc_length_u arc_length_u option value.
postprocess_stitch postprocess_stitch option value.

virtual law** AcisLoftingInterface::getProfileLaw ( int  index  )  [virtual]

Returns the profile law.



Parameters:
index index.

Implements AcisSLInterface.

virtual WIRE* AcisSLInterface::getWireAt ( int  index  )  [virtual, inherited]

Gets a pointer to the wire at the given index in the list of temporary wires.



Parameters:
index index.

BODY** AcisSLInterface::getWireList (  )  [inline, inherited]

Returns a pointer to the temporary set of wires that are used during the skinning or lofting operation.

virtual char* AcisLoftingInterface::interfaceType (  )  [inline, virtual]

Returns the interface type, either "skinning" or "lofting." This is always "lofting" for an AcisLoftingInterface.

Implements AcisSLInterface.

logical AcisSLInterface::is_all_straights (  )  [inherited]

Returns TRUE if all profiles consist of straight edges.

virtual outcome AcisLoftingInterface::makeWires ( BODY **&  wire_list  )  [virtual]

Creates and returns pointers to the temporary skinning wires used in the align, minimize twist, and breakup algorithms.



Parameters:
wire_list array of wire bodies.

Implements AcisSLInterface.

virtual outcome AcisLoftingInterface::minimizeTwist ( int  start = 0,
int  end = 0 
) [virtual]

Performs a twist minimization on the temporary skinning wires between start and end indices.



Role: This allows a surface of minimum twist to be built. If start and end both equal 0, then all profiles are processed.

Parameters:
start Index of starting profile to align.
end Index of ending profile to align.

Implements AcisSLInterface.

virtual outcome AcisLoftingInterface::modifyWire ( COEDGE coedge1,
COEDGE coedge2,
const SPAposition adjusted_point,
WIRE wire 
) [virtual]

Moves the position of the vertex between the two coedges.



Parameters:
coedge1 first coedge associated with vertex.
coedge2 second coedge associated with vertex.
adjusted_point new position of vertex.
wire wire body.

Implements AcisSLInterface.

outcome AcisLoftingInterface::postProcessStitch ( BODY *&  body  )  [virtual]

Does a postprocess stitch of the loft/skinned body back to the edges/coedges given as input.



Parameters:
body created body

Reimplemented from AcisSLInterface.

logical AcisSLInterface::removeMappingCurve ( int  index  )  [inherited]

Removes the specified mapping curve.



Parameters:
index index into list of mapping curves.

virtual outcome AcisLoftingInterface::removeVertex ( WIRE wire,
const SPAposition pos 
) [virtual]

Removes the specified vertex from its coedge and a vertex from each of the corresponding coedges in each wire in the wire list.



Parameters:
wire wire to remove vertex from.
pos position of vertex to be removed.

Implements AcisSLInterface.

void AcisSLInterface::SetModelTolerance ( const double  iTolerance  )  [inline, inherited]

Sets the model tolerance.

outcome AcisSLInterface::setOptions ( logical  arclen,
logical  no_twist,
logical  align_opt,
logical  simpl_opt 
) [inherited]

Sets the value of each skinning/lofting option.



Parameters:
arclen arclength option.
no_twist no_twist option.
align_opt align option.
simpl_opt simplify option.

virtual outcome AcisSLInterface::setStartVertex ( int  index,
VERTEX vertex 
) [virtual, inherited]

Sets the given vertex to be the starting vertex for the operation.



Role: It sets the given wire to be fixed, meaning it is skipped over during the minimize twist operation.

Parameters:
index index of wire which contains the vertex.
vertex becomes new starting vertex.

virtual outcome AcisSLInterface::setStartVertex ( WIRE wire,
VERTEX vertex 
) [virtual, inherited]

Sets the given vertex to be the starting vertex for the operation.



Role: It sets the given wire to be fixed, meaning it is skipped over during the minimize twist operation.

Parameters:
wire wire that contains the vertex.
vertex becomes new starting vertex.

virtual outcome AcisSLInterface::setWireFixed ( int  index  )  [virtual, inherited]

Sets the wire given by the index to be fixed, meaning it is skipped over during the minimize twist operation.



Parameters:
index index of wire.

virtual outcome AcisSLInterface::setWireUnFixed ( int  index  )  [virtual, inherited]

Sets the wire given by the index to be not fixed, meaning it is not skipped over during the minimize twist operation.



Parameters:
index index of wire.

virtual outcome AcisSLInterface::simplifyWires (  )  [virtual, inherited]

Simplify the wire geometry.

outcome AcisLoftingInterface::simplifyWires ( logical  iHandleAllCurves = FALSE  ) 

Performs a simplification on the temporary skinning wires.



Parameters:
iHandleAllCurves TRUE: merge all curves.
FALSE: merge straight and ellipse curves only.

virtual outcome AcisLoftingInterface::smoothWires ( logical &  oSmoothDone,
const double  iSmoothAngle 
) [virtual]

Smooths curves at G0 vertices, if possible (i.e., curves are nearly G1).

Parameters:
oSmoothDone TRUE: at least one curve has been modified.
FALSE: smoothing was not performed; i.e., wires are intacted.
iSmoothAngle Angle (in radians) for two tangent vectors to be consided nearly in the same direction.

virtual outcome AcisSLInterface::validStartVertices ( WIRE wire,
ENTITY_LIST vertex_list 
) [virtual, inherited]

Any vertex used as the starting vertex must lie on the convex hull.



Role: This method returns a list of vertices lying on the convex hull.

Parameters:
wire wire.
vertex_list vertices lying on the convex hull.