| 1 | //- Class: CAPartitionVG |
|---|
| 2 | //- Owner: Tim Tautges |
|---|
| 3 | //- Description: Cubit attribute for partition virtual geometry |
|---|
| 4 | //- Checked by: |
|---|
| 5 | //- Version: |
|---|
| 6 | //- |
|---|
| 7 | //- This attribute holds the information necessary to re-partition |
|---|
| 8 | //- an entity into several parts. This attribute does not store the |
|---|
| 9 | //- data necessary to create the virtual entities that partitions this |
|---|
| 10 | //- entity; those data are stored on a CAVirtualVG attribute. |
|---|
| 11 | //- |
|---|
| 12 | //- This attribute stores the following data: |
|---|
| 13 | //- numPC, numPS: the number of partition curves, surfaces this entity |
|---|
| 14 | //- will be split into |
|---|
| 15 | //- vgUIDs[0..3*numPC-1]: uids of start and end vertices, and of partition |
|---|
| 16 | //- curve formed from those |
|---|
| 17 | //- vgUIDs[3*numPC..(end)]: for each partition surface, the uids of the |
|---|
| 18 | //- bounding curves (some of them may be virtual), then the uid of the |
|---|
| 19 | //- partition surface itself |
|---|
| 20 | //- numBdyCurves[numPS]: number of bounding curves for each surface |
|---|
| 21 | //- |
|---|
| 22 | //- For partition surfaces, this attribute actuates by: |
|---|
| 23 | //- . actuating partition VG attributes on next-lower order entities |
|---|
| 24 | //- . actuating virtual VG attributes on self |
|---|
| 25 | //- . gathering up the bounding curve uid's & edges, removing those |
|---|
| 26 | //- already bounding the (non-partitioned) entity |
|---|
| 27 | //- . using these to partition the entity |
|---|
| 28 | //- |
|---|
| 29 | |
|---|
| 30 | #ifndef CA_PARTITION_VG_HPP |
|---|
| 31 | #define CA_PARTITION_VG_HPP |
|---|
| 32 | |
|---|
| 33 | #include "CubitAttrib.hpp" |
|---|
| 34 | #include "DLIList.hpp" |
|---|
| 35 | #include "CADefines.hpp" |
|---|
| 36 | |
|---|
| 37 | class Point; |
|---|
| 38 | class RefEntity; |
|---|
| 39 | class CubitSimpleAttrib; |
|---|
| 40 | class RefEntity; |
|---|
| 41 | class PartitionCurve; |
|---|
| 42 | class PartitionSurface; |
|---|
| 43 | class CubitVector; |
|---|
| 44 | class RefEdge; |
|---|
| 45 | class RefVertex; |
|---|
| 46 | class RefEdge; |
|---|
| 47 | class BasicTopologyEntity; |
|---|
| 48 | class ToolDataUser; |
|---|
| 49 | |
|---|
| 50 | class CAPartitionVG: public CubitAttrib |
|---|
| 51 | { |
|---|
| 52 | |
|---|
| 53 | private: |
|---|
| 54 | int numPC, numPS; |
|---|
| 55 | //- the number of partition curves and surfaces on this entity |
|---|
| 56 | |
|---|
| 57 | DLIList<int> vgUIDs; |
|---|
| 58 | //- unique ids of various entities |
|---|
| 59 | |
|---|
| 60 | DLIList<int> numBdyCurves; |
|---|
| 61 | //- for each partition surface, the number of bounding curves |
|---|
| 62 | |
|---|
| 63 | #ifdef BOYD15 |
|---|
| 64 | void add_pcurve(PartitionCurve *pcurve); |
|---|
| 65 | //- adds data for this vpoint to this CA |
|---|
| 66 | #endif |
|---|
| 67 | |
|---|
| 68 | #ifdef BOYD15 |
|---|
| 69 | void add_psurface(PartitionSurface *psurface); |
|---|
| 70 | //- adds data for this vcurve to this CA |
|---|
| 71 | #endif |
|---|
| 72 | |
|---|
| 73 | #ifdef BOYD15 |
|---|
| 74 | RefEdge *find_edge(RefVertex *start_vert, |
|---|
| 75 | RefVertex *end_vert, DLIList<RefEdge*> &new_edges); |
|---|
| 76 | //- given a start and end vertex and a list of edges, return the edge in the list |
|---|
| 77 | //- bounded by those two vertices |
|---|
| 78 | #endif |
|---|
| 79 | |
|---|
| 80 | #ifdef BOYD15 |
|---|
| 81 | BasicTopologyEntity* find_related( DLIList<ToolDataUser*>& list ); |
|---|
| 82 | #endif |
|---|
| 83 | |
|---|
| 84 | public: |
|---|
| 85 | CAPartitionVG(RefEntity* ); |
|---|
| 86 | |
|---|
| 87 | CAPartitionVG(RefEntity*, CubitSimpleAttrib*); |
|---|
| 88 | //- construct a CAPVG from a simple attribute |
|---|
| 89 | |
|---|
| 90 | virtual ~CAPartitionVG() {}; |
|---|
| 91 | |
|---|
| 92 | //HEADER- RTTI and safe casting functions. |
|---|
| 93 | virtual const type_info& entity_type_info() const { return typeid(*this);} |
|---|
| 94 | //R- The geometric modeler type |
|---|
| 95 | //- This function returns the type of the geometric modeler. |
|---|
| 96 | |
|---|
| 97 | CubitStatus actuate(); |
|---|
| 98 | |
|---|
| 99 | CubitStatus update(); |
|---|
| 100 | |
|---|
| 101 | CubitStatus reset(); |
|---|
| 102 | //- reset info; called from CAU and also from update! |
|---|
| 103 | |
|---|
| 104 | CubitSimpleAttrib* cubit_simple_attrib(); |
|---|
| 105 | |
|---|
| 106 | CubitSimpleAttrib* cubit_simple_attrib(CubitString); |
|---|
| 107 | |
|---|
| 108 | int int_attrib_type() {return CA_PARTITION_VG;} |
|---|
| 109 | //- returns the enumerated attribute type |
|---|
| 110 | |
|---|
| 111 | }; |
|---|
| 112 | |
|---|
| 113 | CubitAttrib* CAPartitionVG_creator(RefEntity* entity, CubitSimpleAttrib *p_csa); |
|---|
| 114 | |
|---|
| 115 | #endif |
|---|