|
Purpose:
|
Defines an attribute to record the intersections of an edge of one body with a face of the other body, during a Boolean operation.
|
|
|
Derivation:
|
ATTRIB_EFINT : ATTRIB_SYS : ATTRIB : ENTITY : ACIS_OBJECT : -
|
|
|
SAT Identifier:
|
"efint"
|
|
|
Filename:
|
bool/boolean/kernbool/bool1/at_bool1.hxx
|
|
|
Description:
|
Each edge of each body which intersects with any face of the other body (or indeed passes near enough for us to have to perform the detailed calculation) is given an intersection attribute for each such face. This
EFINT attribute points to and
owns a list of
edge_face_int records, each of which represents one intersection of the edge with the surface of the face.
|
|
|
When a vertex of the intersection graph is created, the fact is recorded in the appropriate
edge_face_int, so that it may be retrieved for other segments of the graph linked to it. If an intersection lies at one end of an edge, at a vertex of the body, that body vertex is also given a single
EFINT attribute. This points to a single
edge_face_int record, which is any one of the records attached to any of the edges attached to the vertex which represents this intersection.
|
|
|
References:
|
INTR
|
edge_face_int
|
|
KERN
|
ENTITY
|
|
|
Data:
|
public edge_face_int *intersect;
|
|
List of edge face intersections.
|
|
|
public double high_param;
|
|
High parameter of edge.
|
|
|
public double low_param;
|
|
Low parameter of edge.
|
|
|
public tedge_face_header *list;
|
|
List of tolerant edge intersections.
|
|
|
Constructor:
|
public: ATTRIB_EFINT::ATTRIB_EFINT
(
|
|
|
ENTITY*,
|
// entity name
|
|
|
EDGE*,
|
// edge
|
|
|
edge_face_int*
|
// edge face name
|
|
|
|
= NULL,
|
|
|
double
|
// first parameter
|
|
|
|
= 0,
|
|
|
double
|
// second parameter
|
|
|
|
= 0,
|
|
|
FACE* owner_face
|
// face of tolerant edge
|
|
|
);
|
|
|
C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments. Applications should call this constructor only with the overloaded
new operator inherited from the
ENTITY class (for example,
x=new ATTRIB_EFINT(...)), because this reserves the memory on the heap, a requirement to support roll back and history management.
|
|
|
|
|
|
|
public: ATTRIB_EFINT::ATTRIB_EFINT
(
|
|
|
ENTITY*
|
// entity (edge)
|
|
|
|
= NULL,
|
|
|
FACE*
|
// face in the other body
|
|
|
|
= NULL,
|
|
|
edge_face_int*
|
// list of edge face
|
|
|
|
= NULL,
|
// intersections
|
|
|
double
|
// edge start parameter
|
|
|
|
= 0,
|
|
|
double
|
// sedge end parameter
|
|
|
|
= 0,
|
|
|
FACE*
|
// face of edge
|
|
|
|
= NULL
|
|
|
);
|
|
|
C++ initialize constructor requests memory for this object and populates it with the data supplied as arguments. Applications should call this constructor only with the overloaded
new operator inherited from the
ENTITY class (for example,
x=new ATTRIB_EFINT(...)), because this reserves the memory on the heap, a requirement to support roll back and history management.
|
|
|
|
|
|
Destructor:
|
public: virtual void ATTRIB_EFINT::lose
();
|
|
|
Posts a delete bulletin to the bulletin board indicating the instance is no longer used in the active model. The
lose methods for attached attributes are also called.
|
|
|
|
|
|
|
protected: virtual ATTRIB_EFINT::~ATTRIB_EFINT
();
|
|
|
This
C++ destructor should never be called directly. Instead, applications should use the overloaded
lose method inherited from the
ENTITY class, because this supports history management. (For example,
x=new ATTRIB_EFINT(...) then later
x->lose.)
|
|
|
|
|
Methods:
|
public: virtual void ATTRIB_EFINT::debug_ent
(
|
|
|
FILE*
|
// file pointer
|
|
|
) const;
|
|
|
Prints the type and address of this object, roll back pointer, attributes, and any unknown subtype information to the specified file. Refer to the
ENTITY class for more details.
|
|
|
|
|
|
|
public: void ATTRIB_EFINT::disable
();
|
|
|
Set the entity pointer to
NULL, to prevent the reuse of this attribute in the current Boolean.
|
|
|
|
|
|
|
public: EDGE* ATTRIB_EFINT::edge
() const;
|
|
|
Pick out related edge.
|
|
|
|
|
|
|
public: ENTITY* ATTRIB_EFINT::entity
() const;
|
|
|
Pick out related entity.
|
|
|
|
|
|
|
public: FACE* ATTRIB_EFINT::face
() const;
|
|
|
Pick out related face.
|
|
|
|
|
|
|
public: edge_face_int* ATTRIB_EFINT::get_intersect
(
|
|
|
FACE*
|
// input face
|
|
|
) const;
|
|
|
Finds the intersection list for a given face.
|
|
|
|
|
|
|
public: virtual int ATTRIB_EFINT::identity
(
|
|
|
int
|
|
// level
|
|
|
|
= 0
|
|
|
) const;
|
|
|
If
level is unspecified or 0, returns the type identifier
ATTRIB_EFINT_TYPE. If
level is specified, returns
ATTRIB_EFINT_TYPE for that level of derivation from
ENTITY. The level of this class is defined as
ATTRIB_EFINT_LEVEL.
|
|
|
|
|
|
|
public: virtual logical
|
|
|
ATTRIB_EFINT::is_deepcopyable () const;
|
|
|
Returns
TRUE if this can be deep copied.
|
|
|
|
|
|
|
public: void ATTRIB_EFINT::merge_tolerant_ef_ints
(
|
|
|
edge_face_int*
|
// intersections
|
|
|
);
|
|
|
Merge graph edges and graph vertices.
|
|
|
|
|
|
|
public: void ATTRIB_EFINT::null_graph_vertex
(
|
|
|
VERTEX*
|
// vertex
|
|
|
);
|
|
|
Nulls the specified graph vertex.
|
|
|
|
|
|
|
public:virtual logical
|
|
|
ATTRIB_EFINT::pattern_compatible () const ;
|
|
|
Returns
TRUE if this is pattern compatible.
|
|
|
|
|
|
|
public: void ATTRIB_EFINT::prepend
(
|
|
|
FACE*,
|
// input face
|
|
|
edge_face_int*
|
// edge face intersection
|
|
|
) ;
|
|
|
Appends an edge face intersection record to an attribute.
|
|
|
|
|
|
|
public: void ATTRIB_EFINT::restore_common
();
|
|
|
The
RESTORE_DEF macro expands to the
restore_common method, which is used in reading information from a SAT file. This method is never called directly. It is called by a higher hierarchical function if an item in the SAT file is determined to be of this class type. An instance of this class will already have been created through the allocation constructor. This method then populates the class instance with the appropriate data from the SAT file.
|
|
|
No data
|
|
|
|
|
This class does not save any data
|
|
|
|
|
|
|
public: void ATTRIB_EFINT::set_intersect
(
|
|
|
FACE*,
|
// input face
|
|
|
edge_face_int*
|
// intersection list
|
|
|
) ;
|
|
|
Sets the intersection list for a given face.
|
|
|
|
|
|
|
public: virtual const char*
|
|
|
ATTRIB_EFINT::type_name () const;
|
|
|
Returns the string "efint".
|
|
|
|
|
|
Related Fncs:
|
delete_efint_list, get_attrib_efint_list, init_attrib_efint_list, is_ATTRIB_EFINT
|