#include <loft_intr.hxx>


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. | |
| BODY * | getBody () |
| Returns a pointer to the skinned or lofted body. | |
| virtual curve * | getGuideAt (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 WIRE * | getWireAt (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. | |
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.
| 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.
| 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.
| 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.
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.
| guide | guide. |
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.
| guide | guide. |
| virtual logical AcisSLInterface::addMappingCurves | ( | int | num, | |
| SPAposition * | pts | |||
| ) | [virtual, inherited] |
Adds a vertex to the middle of the specified coedge and to each of the corresponding coedges in the wire list.
| 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.
| 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.
| 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.
| edge_list | returned edge list. |
Implements AcisSLInterface.
| virtual outcome AcisLoftingInterface::buildFaces | ( | ENTITY_LIST & | face_list | ) | [virtual] |
| 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.
| wire_list | list of modified wires. |
Implements AcisSLInterface.
| virtual outcome AcisLoftingInterface::estimateMinRadOfCurvature | ( | double & | min_rad | ) | [virtual] |
Estimates the minimum radius of curvature of all the surfaces involved in the skin.
| min_rad | minimum radius of curvature. |
Implements AcisSLInterface.
| virtual Loft_Connected_Coedge_List* AcisLoftingInterface::get_internalCoedgeList | ( | ) | [inline, virtual] |
| 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.
| index | array index of desired guide curve. |
| virtual outcome AcisSLInterface::getGuides | ( | int & | numberOfGuides, | |
| curve **& | guides | |||
| ) | [virtual, inherited] |
Gets the guides from the interface object.
| 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.
| 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.
| 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.
| 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] |
| virtual WIRE* AcisSLInterface::getWireAt | ( | int | index | ) | [virtual, inherited] |
Gets a pointer to the wire at the given index in the list of temporary wires.
| 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.
Creates and returns pointers to the temporary skinning wires used in the align, minimize twist, and breakup algorithms.
| 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.
| 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.
| coedge1 | first coedge associated with vertex. | |
| coedge2 | second coedge associated with vertex. | |
| adjusted_point | new position of vertex. | |
| wire | wire body. |
Implements AcisSLInterface.
Does a postprocess stitch of the loft/skinned body back to the edges/coedges given as input.
| body | created body |
Reimplemented from AcisSLInterface.
| logical AcisSLInterface::removeMappingCurve | ( | int | index | ) | [inherited] |
Removes the specified mapping curve.
| 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.
| 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.
| arclen | arclength option. | |
| no_twist | no_twist option. | |
| align_opt | align option. | |
| simpl_opt | simplify option. |
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.
| 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.
| 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.
| 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.
| index | index of wire. |
| virtual outcome AcisSLInterface::simplifyWires | ( | ) | [virtual, inherited] |
Simplify the wire geometry.
| outcome AcisLoftingInterface::simplifyWires | ( | logical | iHandleAllCurves = FALSE |
) |
| virtual outcome AcisLoftingInterface::smoothWires | ( | logical & | oSmoothDone, | |
| const double | iSmoothAngle | |||
| ) | [virtual] |
Smooths curves at G0 vertices, if possible (i.e., curves are nearly G1).
| 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.
| wire | wire. | |
| vertex_list | vertices lying on the convex hull. |