Branch data Line data Source code
1 : : //- File: CAEntitySense.cpp
2 : : //- Owner: Corey Ernst
3 : : //- Description: Cubit Attribute for entity colors.
4 : : //- Checked By:
5 : : //- Version:
6 : :
7 : : #include "CAEntitySense.hpp"
8 : : #include "RefEntity.hpp"
9 : : #include "RefEdge.hpp"
10 : : #include "RefFace.hpp"
11 : : #include "BridgeManager.hpp"
12 : : #include "BasicTopologyEntity.hpp"
13 : : #include "CastTo.hpp"
14 : : #include "CubitMessage.hpp"
15 : :
16 : :
17 : 26892 : CubitAttrib* CAEntitySense_creator(RefEntity* entity, const CubitSimpleAttrib &p_csa)
18 : : {
19 [ + - ]: 26892 : return new CAEntitySense(entity, p_csa);
20 : : }
21 : :
22 : 26892 : CAEntitySense::CAEntitySense(RefEntity* new_attrib_owner,
23 : : const CubitSimpleAttrib &csa_ptr)
24 : 26892 : : CubitAttrib(new_attrib_owner)
25 : : {
26 [ + - ][ + - ]: 26892 : std::vector<int, std::allocator<int> > i_list = csa_ptr.int_data_list();
27 : :
28 [ + - ][ - + ]: 26892 : if( i_list.size() > 0)
29 : : {
30 [ # # ]: 0 : int i = i_list[0];
31 [ # # ]: 0 : if( i == -1 )
32 : 0 : entitySense = CUBIT_UNKNOWN;
33 [ # # ]: 0 : else if( i == 0 )
34 : 0 : entitySense = CUBIT_FORWARD;
35 [ # # ]: 0 : else if( i == 1 )
36 : 0 : entitySense = CUBIT_REVERSED;
37 : : }
38 : : else
39 [ + - ]: 26892 : entitySense = CUBIT_UNKNOWN;
40 : 26892 : }
41 : :
42 : 0 : CAEntitySense::CAEntitySense(RefEntity* new_attrib_owner)
43 : 0 : : CubitAttrib(new_attrib_owner)
44 : : {
45 : 0 : entitySense = CUBIT_FORWARD;
46 : 0 : }
47 : :
48 : 80676 : CAEntitySense::~CAEntitySense()
49 : : {
50 [ - + ]: 53784 : }
51 : :
52 : :
53 : 0 : CubitStatus CAEntitySense::actuate()
54 : : {
55 [ # # ]: 0 : if ( hasActuated)
56 : 0 : return CUBIT_SUCCESS;
57 : :
58 [ # # ]: 0 : if ( !attribOwnerEntity )
59 : 0 : return CUBIT_FAILURE;
60 : :
61 : 0 : deleteAttrib = CUBIT_FALSE;
62 : :
63 : 0 : int dimension = attribOwnerEntity->dimension();
64 [ # # ][ # # ]: 0 : if( 1 == dimension || 2 == dimension )
65 : : {
66 [ # # ]: 0 : BasicTopologyEntity* bte_ptr = CAST_TO(attribOwnerEntity, BasicTopologyEntity);
67 : 0 : CubitSense tmp_sense = CUBIT_UNKNOWN;
68 [ # # ]: 0 : if( bte_ptr )
69 : : {
70 : 0 : tmp_sense = bte_ptr->bridge_manager()->topology_bridge()->bridge_sense();
71 [ # # ]: 0 : if( tmp_sense != entitySense )
72 : : {
73 [ # # ]: 0 : if( 1==dimension )
74 : : {
75 [ # # ]: 0 : RefEdge *ref_edge = dynamic_cast<RefEdge*>( bte_ptr );
76 : 0 : ref_edge->reverse_tangent();
77 : : }
78 [ # # ]: 0 : else if( 2 == dimension )
79 : : {
80 [ # # ]: 0 : RefFace *ref_face = dynamic_cast<RefFace*>( bte_ptr );
81 : 0 : ref_face->reverse_normal();
82 : : }
83 : : }
84 : : }
85 : : }
86 : :
87 : 0 : hasActuated = CUBIT_TRUE;
88 : 0 : return CUBIT_SUCCESS;
89 : : }
90 : :
91 : 26892 : CubitStatus CAEntitySense::update()
92 : : {
93 : 26892 : int dimension = attribOwnerEntity->dimension();
94 [ + + ][ + + ]: 26892 : if( 1 == dimension || 2 == dimension )
95 : : {
96 [ - + ]: 15312 : BasicTopologyEntity* bte_ptr = CAST_TO(attribOwnerEntity, BasicTopologyEntity);
97 : 15312 : entitySense = CUBIT_UNKNOWN;
98 [ + - ]: 15312 : if( bte_ptr )
99 : 15312 : entitySense = bte_ptr->bridge_manager()->topology_bridge()->bridge_sense();
100 : : }
101 : :
102 [ + + ][ + - ]: 26892 : if( entitySense == CUBIT_FORWARD || entitySense == CUBIT_UNKNOWN )
103 : 26892 : delete_attrib(CUBIT_TRUE);
104 : :
105 : 26892 : return CUBIT_SUCCESS;
106 : : }
107 : :
108 : 26892 : CubitSimpleAttrib CAEntitySense::cubit_simple_attrib()
109 : : {
110 [ + - ]: 26892 : std::vector<CubitString> cs_list;
111 [ + - ][ + - ]: 53784 : std::vector<int, std::allocator<int> > i_list;
112 : :
113 [ + - ]: 26892 : i_list.push_back( entitySense );
114 : :
115 [ + - ][ + - ]: 26892 : cs_list.push_back(att_internal_name());
[ + - ][ + - ]
116 : :
117 [ + - ]: 26892 : CubitSimpleAttrib csattrib_ptr(&cs_list, NULL, &i_list);
118 : :
119 [ + - ]: 53784 : return csattrib_ptr;
120 : : }
121 : :
122 : 0 : void CAEntitySense::print()
123 : : {
124 : : // print info on this attribute
125 : :
126 [ # # ]: 0 : PRINT_INFO("CAEntitySense: owner = %s %d: color ",
127 [ # # ]: 0 : attribOwnerEntity->class_name(), attribOwnerEntity->id());
128 [ # # ]: 0 : if( entitySense == CUBIT_UNKNOWN )
129 [ # # ][ # # ]: 0 : PRINT_INFO(" CUBIT_UNKNOWN\n");
130 [ # # ]: 0 : else if( entitySense == CUBIT_FORWARD )
131 [ # # ][ # # ]: 0 : PRINT_INFO(" CUBIT_FORWARD\n");
132 [ # # ]: 0 : else if( entitySense == CUBIT_REVERSED )
133 [ # # ][ # # ]: 0 : PRINT_INFO(" CUBIT_REVERSED\n");
134 [ + - ][ + - ]: 6540 : }
|