cgma
|
#include <CubitAttribUser.hpp>
Definition at line 29 of file CubitAttribUser.hpp.
CubitAttribUser::CubitAttribUser | ( | const CubitAttribUser & | ) | [private] |
CubitAttribUser::~CubitAttribUser | ( | ) | [virtual] |
Definition at line 33 of file CubitAttribUser.cpp.
{ //delete all ToolData's chained off this user. CubitAttrib *ca_ptr = headAttrib; while ( ca_ptr) { CubitAttrib *next = ca_ptr->next_attrib(); delete ca_ptr; ca_ptr = next; } headAttrib = NULL; }
CubitAttribUser::CubitAttribUser | ( | CubitAttrib * | cubit_attrib_ptr = NULL | ) |
Definition at line 28 of file CubitAttribUser.cpp.
{ headAttrib = cubit_attrib_ptr; }
CubitStatus CubitAttribUser::actuate_cubit_attrib | ( | int | attrib_type | ) |
Definition at line 490 of file CubitAttribUser.cpp.
{ DLIList<CubitAttrib*> attrib_list; find_cubit_attrib_type(attrib_type, attrib_list); CubitStatus actuate_status = actuate_cubit_attrib(attrib_list); return actuate_status; }
CubitStatus CubitAttribUser::actuate_cubit_attrib | ( | DLIList< CubitAttrib * > | attrib_list | ) | [private] |
Definition at line 498 of file CubitAttribUser.cpp.
{ CubitStatus actuate_status = CUBIT_SUCCESS; attrib_list.reset(); for(int i = 0; i < attrib_list.size(); i++) { CubitAttrib* cubit_attrib_ptr = attrib_list.get_and_step(); if (actuate_cubit_attrib(cubit_attrib_ptr) == CUBIT_FAILURE) actuate_status = CUBIT_FAILURE; } return actuate_status; }
CubitStatus CubitAttribUser::actuate_cubit_attrib | ( | CubitAttrib * | cubit_attrib_ptr | ) | [private] |
Definition at line 470 of file CubitAttribUser.cpp.
{ CubitStatus return_value = CUBIT_FAILURE; if (cubit_attrib_ptr != NULL ) { if (cubit_attrib_ptr->has_actuated() == CUBIT_TRUE || cubit_attrib_ptr->delete_attrib() == CUBIT_TRUE) { return CUBIT_FAILURE; } return_value = cubit_attrib_ptr->actuate(); if (cubit_attrib_ptr->delete_attrib() == CUBIT_TRUE) { return_value = remove_cubit_attrib(cubit_attrib_ptr); delete cubit_attrib_ptr; } } return return_value; }
CubitStatus CubitAttribUser::actuate_cubit_attrib | ( | DLIList< RefEntity * > | refent_list, |
int | attrib_type | ||
) | [static] |
Definition at line 512 of file CubitAttribUser.cpp.
{ CubitStatus actuate_status = CUBIT_SUCCESS; DLIList<CubitAttrib*> attrib_list; RefEntity *ref_ent; for(int i = refent_list.size(); i > 0; i--) { ref_ent = refent_list.get_and_step(); TopologyEntity* me_ptr = dynamic_cast<TopologyEntity*>(ref_ent); if( me_ptr && me_ptr->deactivated() ) continue; ref_ent->find_cubit_attrib_type(attrib_type, attrib_list); if (attrib_list.size() > 0) return ((attrib_list.get())->actuate_list(refent_list)); } return actuate_status; }
CubitStatus CubitAttribUser::add_cubit_attrib | ( | CubitAttrib * | cubit_attrib_ptr | ) |
Definition at line 65 of file CubitAttribUser.cpp.
{ if (cubit_attrib_ptr == NULL) return CUBIT_FAILURE; CubitStatus cubit_attribute_status = CUBIT_FAILURE; CubitAttrib *temp_ptr; if (headAttrib == NULL) { headAttrib = cubit_attrib_ptr; cubit_attribute_status = CUBIT_SUCCESS; } else { for(temp_ptr = headAttrib; temp_ptr->next_attrib() != NULL; temp_ptr = temp_ptr->next_attrib()); temp_ptr->set_next_attrib(cubit_attrib_ptr); cubit_attribute_status = CUBIT_SUCCESS; } return cubit_attribute_status; }
void CubitAttribUser::append_attrib_internal | ( | TopologyBridge * | bridge, |
const CubitSimpleAttrib & | attrib_ptr | ||
) |
Definition at line 1190 of file CubitAttribUser.cpp.
{ DLIList<CubitSimpleAttrib> others; // Check for duplicates if ( attrib_ptr.character_type() != "DEFERRED_ATTRIB" ) { bridge->get_simple_attribute( attrib_ptr.character_type().c_str(), others ); while ( others.size() ) { bridge->remove_simple_attribute_virt( others.pop() ); } } else { CubitString real_name = attrib_ptr.string_data_list()[1]; bridge->get_simple_attribute("DEFERRED_ATTRIB", others); while ( others.size() ) { CubitSimpleAttrib dup_attrib = others.pop(); if ( dup_attrib.string_data_list()[1] == real_name ) bridge->remove_simple_attribute_virt(dup_attrib); } } // append attribute bridge->append_simple_attribute_virt(attrib_ptr); }
void CubitAttribUser::append_simple_attribute | ( | TopologyBridge * | bridge, |
const CubitSimpleAttrib & | attrib_ptr | ||
) |
Definition at line 1127 of file CubitAttribUser.cpp.
{ // for merged objects, put attribute on other entities if (CubitSimpleAttrib::get_push_attribs() == CUBIT_TRUE || CGMApp::instance()->attrib_manager()->auto_update_flag(CA_MERGE_PARTNER) == CUBIT_TRUE) { DLIList<TopologyBridge*> tb_list; bridge->bridge_manager()->get_bridge_list(tb_list); // if this entity is merged, it will have > 1 entity in the bridge // list tb_list.reset(); assert(tb_list.size() == 0 || tb_list.get() == bridge); // Special handling of MergePartner attribute. // Need to store the bridge sense in the attribute, which // is potentially different for different TopologyBridges. int type = CGMApp::instance()->attrib_manager()->attrib_type_from_internal_name(attrib_ptr.character_type().c_str()); if ( type == CA_MERGE_PARTNER ) { CubitSimpleAttrib merge_attrib = attrib_ptr; // now adjust the attrib on each bridge to hold the // relative sense for that bridge. for (int i = tb_list.size(); i > 0; i--) { TopologyBridge *temp_tb = tb_list.get_and_step(); CAMergePartner::set_bridge_sense( merge_attrib, temp_tb->bridge_sense() ); GeometryEntity *geom_ptr = dynamic_cast<GeometryEntity*>(temp_tb); if (geom_ptr ) { //if we're copying a merged entity, saved id should be zero if( GeometryModifyTool::instance()->get_copy_entity() ) CAMergePartner::set_saved_id( merge_attrib, 0 ); else CAMergePartner::set_saved_id( merge_attrib, geom_ptr->get_saved_id() ); //First bridge should be marked as "survivor" if( i == tb_list.size() ) { CAMergePartner::set_survivor( merge_attrib, 1 ); } else CAMergePartner::set_survivor( merge_attrib, 0 ); } append_attrib_internal(temp_tb, merge_attrib); } } // For anything other than CAMergePartner, just append the // unmodified attribute to each bridge. else { for ( int i = tb_list.size(); i--; ) append_attrib_internal( tb_list.get_and_step(), attrib_ptr); } } else { // Append this name to the primary bridge append_attrib_internal(bridge, attrib_ptr); } }
CubitStatus CubitAttribUser::auto_actuate_cubit_attrib | ( | CubitBoolean | from_constructor = CUBIT_TRUE , |
CubitBoolean | after_geom_changes = CUBIT_FALSE |
||
) |
Definition at line 556 of file CubitAttribUser.cpp.
{ CubitStatus actuate_status = CUBIT_SUCCESS; CubitAttrib *attrib; DLIList<CubitAttrib*> attrib_list; get_cubit_attrib_list(attrib_list); attrib_list.reset(); int i; for( i = attrib_list.size(); i != 0; i--) { attrib = attrib_list.get_and_step(); // check first for deletable attribute; this attribute shouldn't really be here, // but until we figure out why it is... if (attrib->delete_attrib() == CUBIT_TRUE) { PRINT_DEBUG_90("Trying to auto actuate deletable attribute - this is bad...\n"); } else if (attrib->auto_actuate_flag() == CUBIT_TRUE && !attrib->has_actuated() && (!from_constructor || attrib->actuate_in_constructor()) && (after_geom_changes || !attrib->actuate_after_geom_changes())) { PRINT_DEBUG_90("Actuating attribute type %s for %s %d\n", attrib->att_internal_name(), attrib->attrib_owner()->class_name(), attrib->attrib_owner()->id()); if(attrib->actuate() == CUBIT_FAILURE) { actuate_status = CUBIT_FAILURE; } // need to check again for delete flag, since it might have been set // in actuate function if( attrib->delete_attrib() == CUBIT_TRUE) { remove_cubit_attrib(attrib); delete attrib; } } } // if (CADeferredAttrib::cleanup_cadas(from_constructor, after_geom_changes) == CUBIT_FAILURE) // actuate_status = CUBIT_FAILURE; return actuate_status; }
void CubitAttribUser::auto_create_for_merge | ( | RefEntity * | deletable_entity | ) | [private] |
Definition at line 448 of file CubitAttribUser.cpp.
{ // copy any attr's on deletable_entity but not on this DLIList<CubitAttrib*> deletable_ca_list; deletable_entity->get_cubit_attrib_list(deletable_ca_list); if (deletable_ca_list.size() == 0) return; DLIList<CubitAttrib*> new_list; RefEntity *entity = CAST_TO(this, RefEntity); for (int i = deletable_ca_list.size(); i > 0; i--) { new_list.clean_out(); CubitAttrib *deletable_ca_ptr = deletable_ca_list.get_and_step(); find_cubit_attrib_type(deletable_ca_ptr->int_attrib_type(), new_list); if (new_list.size() == 0) { CGMApp::instance()->attrib_manager()->create_cubit_attrib( deletable_ca_ptr->int_attrib_type(), entity, CubitSimpleAttrib()); } } }
Definition at line 889 of file CubitAttribUser.cpp.
{ // auto read all simple attributes on this entity & create CA's for them; // checks global and CA-specific auto read flag, and puts CSA's back on // entity if auto read for that type is off CubitStatus cubit_assign_status = CUBIT_FAILURE; // Get the GeometryEntity of this RefEntity (it could be the OSME // if it is a Body) and get its name, if it exists DLIList<CubitSimpleAttrib> csattrib_list; // Deal with a Body entity Body* Body_ptr = CAST_TO(this, Body); BasicTopologyEntity* BTE_ptr = CAST_TO(this, BasicTopologyEntity); if ( Body_ptr != NULL ) { BodySM* OSME_ptr = Body_ptr->get_body_sm_ptr(); OSME_ptr->get_simple_attribute(csattrib_list); remove_all_simple_attribute(OSME_ptr); } else if ( BTE_ptr != NULL ) { GeometryEntity* GE_ptr = BTE_ptr->get_geometry_entity_ptr(); GE_ptr->get_simple_attribute(csattrib_list); remove_all_simple_attribute(GE_ptr); } else return CUBIT_SUCCESS; csattrib_list.reset(); for(int i = csattrib_list.size(); i != 0; i--) { const CubitSimpleAttrib& cubit_simple_attrib_ptr = csattrib_list.get_and_step(); int csa_type = CGMApp::instance()->attrib_manager()->attrib_type(cubit_simple_attrib_ptr); CubitAttrib *new_attrib = NULL; if (CGMApp::instance()->attrib_manager()->auto_read_flag(csa_type)) // auto create this CA new_attrib = CGMApp::instance()->attrib_manager()->create_cubit_attrib(csa_type, CAST_TO(this, RefEntity), cubit_simple_attrib_ptr); if (new_attrib != NULL && new_attrib->delete_attrib() == CUBIT_FALSE) cubit_assign_status = CUBIT_SUCCESS; else if (new_attrib != NULL && new_attrib->delete_attrib() == CUBIT_TRUE) { remove_cubit_attrib(new_attrib); delete new_attrib; } else put_simple_attrib(cubit_simple_attrib_ptr); } return cubit_assign_status; }
void CubitAttribUser::auto_reset_cubit_attrib | ( | DLIList< RefEntity * > | ref_ents | ) | [static, private] |
Definition at line 730 of file CubitAttribUser.cpp.
{ // set the update flag back off for all attribs on these entities and their children DLIList<RefEntity*> children, temp_list; int i; for (i = ref_ents.size(); i > 0; i--) { temp_list.clean_out(); ref_ents.get_and_step()->get_all_child_ref_entities(temp_list); children += temp_list; } ref_ents.merge_unique(children); // ok, have a unique'd list if entities; now reset on each of them ref_ents.reset(); for (i = ref_ents.size(); i > 0; i--) { ref_ents.get()->set_written_flag(CUBIT_FALSE); ref_ents.get_and_step()->set_updated_flag(CUBIT_FALSE); } }
Definition at line 653 of file CubitAttribUser.cpp.
{ // for this cau, automatically create and update ca's // first, create ca's for any attribute type which has its auto // update flag set and which isn't present yet on this entity /*CubitStatus success = */ CGMApp::instance()->attrib_manager()->auto_update_attribs(CAST_TO(this, RefEntity)); // now, update all attributes present on this entity CubitStatus update_status = CUBIT_SUCCESS; DLIList<CubitAttrib*> attrib_list; DLIList<CubitAttrib*> attribs_to_delete; CubitAttrib *attrib; get_cubit_attrib_list(attrib_list); attrib_list.reset(); int i; for( i = attrib_list.size(); i != 0; i--) { attrib = attrib_list.get_and_step(); if (!attrib->has_updated()) { // if this attribute has written already, reset the information in it // so it gets a "clean" update (otherwise information can be added to // lists on the attrib more than once) if (CUBIT_TRUE == attrib->has_written()) attrib->reset(); // reset the delete flag here, so we don't need to do it in every attribute // (it'll get set back to delete if the update isn't successful) attrib->delete_attrib(CUBIT_FALSE); PRINT_DEBUG_90("Updating attribute type %s for %s %d, delete = ", attrib->att_internal_name(), attrib->attrib_owner()->class_name(), attrib->attrib_owner()->id()); update_status = attrib->update(); if( attrib->delete_attrib() ) attribs_to_delete.append( attrib ); PRINT_DEBUG_90("%s\n", (attrib->delete_attrib() == CUBIT_FALSE ? "NO" : "YES")); // if update was successful, reset the written flag (assumes that all // updates are done before writing starts) // (don't reset if it's the entity_name attrib, since this attrib is // written automatically every time it's updated) if (update_status == CUBIT_SUCCESS && attrib->int_attrib_type() != CA_ENTITY_NAME) attrib->has_written(CUBIT_FALSE); } else { PRINT_DEBUG_90("Not updating attribute type %s for %s %d, delete = ", attrib->att_internal_name(), attrib->attrib_owner()->class_name(), attrib->attrib_owner()->id()); PRINT_DEBUG_90("%s\n", (attrib->delete_attrib() == CUBIT_FALSE ? "NO" : "YES")); } } //remove any attribs that don't need to be there remove_cubit_attrib( attribs_to_delete ); /* RefEntity* re_ptr; re_ptr = CAST_TO(this, RefEntity); DLIList<RefEntity*> children; re_ptr->get_child_ref_entities( children ); for ( i = children.size(); i > 0; i-- ) { children.get()->auto_update_cubit_attrib(); children.step(); } */ return update_status; }
CubitStatus CubitAttribUser::auto_update_cubit_attrib | ( | DLIList< RefEntity * > & | entity_list, |
CubitBoolean | write_too = CUBIT_TRUE |
||
) | [static] |
Definition at line 766 of file CubitAttribUser.cpp.
{ //- for entity_list, auto create, update and write ca's // now, reset the update and write flags for these entities // and their children auto_reset_cubit_attrib(entity_list); // need to update all then write all in separate loops, // to prevent duplication of attributes int i; for ( i = entity_list.size(); i > 0; i--) entity_list.get_and_step()->auto_update_cubit_attrib(); if (write_too) { for (i = entity_list.size(); i > 0; i--) entity_list.get_and_step()->write_cubit_attribs(); } return CUBIT_SUCCESS; }
CubitStatus CubitAttribUser::clear_all_simple_attrib | ( | DLIList< RefEntity * > & | entity_list | ) | [static] |
Definition at line 790 of file CubitAttribUser.cpp.
{ CubitStatus result = CUBIT_SUCCESS; for( int i = entity_list.size(); i--; ) if( entity_list.get_and_step()->clear_simple_attribs() != CUBIT_SUCCESS ) result = CUBIT_FAILURE; return result; }
CubitStatus CubitAttribUser::clear_all_simple_attrib_set_to_actuate | ( | DLIList< RefEntity * > & | entity_list | ) | [static] |
Definition at line 799 of file CubitAttribUser.cpp.
{ CubitStatus result = CUBIT_SUCCESS; for( int i = entity_list.size(); i--; ) if( entity_list.get_and_step()->clear_simple_attribs_set_to_actuate() != CUBIT_SUCCESS ) result = CUBIT_FAILURE; return result; }
Definition at line 213 of file CubitAttribUser.cpp.
{ CubitAttrib *cubit_attrib_ptr = NULL; CubitAttrib *next_attrib_ptr = NULL; for(cubit_attrib_ptr = headAttrib; cubit_attrib_ptr != NULL;) { //ignore Assembly and Name attributes next_attrib_ptr = cubit_attrib_ptr->next_attrib(); if( cubit_attrib_ptr->int_attrib_type() != CA_ENTITY_NAME && cubit_attrib_ptr->int_attrib_type() != CA_ASSEMBLY_DATA) { remove_cubit_attrib( cubit_attrib_ptr ); delete cubit_attrib_ptr; } cubit_attrib_ptr = next_attrib_ptr; } if (DEBUG_FLAG(94)) { PRINT_DEBUG_94("CubitAttribUser::clear_simple_attribs()\n"); } TopologyEntity* te_ptr = dynamic_cast<TopologyEntity*>(this); if( !te_ptr ) return CUBIT_FAILURE; remove_all_simple_attribute(te_ptr->bridge_manager()->topology_bridge()); update_cubit_attrib(CA_ASSEMBLY_DATA); write_cubit_attrib_by_type(CA_ASSEMBLY_DATA); update_cubit_attrib(CA_ENTITY_NAME); write_cubit_attrib_by_type( CA_ENTITY_NAME ); set_written_flag(CUBIT_FALSE); return CUBIT_SUCCESS; }
Definition at line 178 of file CubitAttribUser.cpp.
{ CubitAttrib *cubit_attrib_ptr = NULL; CubitAttrib *next_attrib_ptr = NULL; for(cubit_attrib_ptr = headAttrib; cubit_attrib_ptr != NULL;) { //ignore Assembly and Name attributes next_attrib_ptr = cubit_attrib_ptr->next_attrib(); if( cubit_attrib_ptr->int_attrib_type() != CA_ENTITY_NAME && cubit_attrib_ptr->int_attrib_type() != CA_ASSEMBLY_DATA && CGMApp::instance()->attrib_manager()->auto_actuate_flag( cubit_attrib_ptr->int_attrib_type())) { remove_cubit_attrib( cubit_attrib_ptr ); delete cubit_attrib_ptr; } cubit_attrib_ptr = next_attrib_ptr; } if (DEBUG_FLAG(94)) { PRINT_DEBUG_94("CubitAttribUser::clear_simple_attribs()\n"); } TopologyEntity* te_ptr = dynamic_cast<TopologyEntity*>(this); if( !te_ptr ) return CUBIT_FAILURE; remove_all_simple_attribute(te_ptr->bridge_manager()->topology_bridge()); write_cubit_attrib_by_type(CA_ASSEMBLY_DATA); write_cubit_attrib_by_type( CA_ENTITY_NAME ); set_written_flag(CUBIT_FALSE); return CUBIT_SUCCESS; }
void CubitAttribUser::find_cubit_attrib_type | ( | int | type, |
DLIList< CubitAttrib * > & | attrib_list | ||
) | const |
Definition at line 808 of file CubitAttribUser.cpp.
{ for(CubitAttrib* cubit_attrib_ptr = headAttrib; cubit_attrib_ptr != NULL; cubit_attrib_ptr = cubit_attrib_ptr->next_attrib()) { if (type == cubit_attrib_ptr->int_attrib_type()) attrib_list.append_unique(cubit_attrib_ptr); } }
CubitAttrib * CubitAttribUser::get_cubit_attrib | ( | int | attrib_type, |
CubitBoolean | create_if_missing = CUBIT_TRUE |
||
) |
Definition at line 47 of file CubitAttribUser.cpp.
{ CubitAttrib* cubit_attrib_ptr = NULL; RefEntity* entity = NULL; DLIList<CubitAttrib*> attrib_list; find_cubit_attrib_type (attrib_type, attrib_list); if (attrib_list.size() > 0) cubit_attrib_ptr = attrib_list.get(); else if ( create_if_missing == CUBIT_TRUE ) { entity = CAST_TO(this, RefEntity); cubit_attrib_ptr = CGMApp::instance()->attrib_manager()->create_cubit_attrib(attrib_type, entity, CubitSimpleAttrib()); } return cubit_attrib_ptr; }
void CubitAttribUser::get_cubit_attrib_list | ( | DLIList< CubitAttrib * > & | attrib_list | ) |
Definition at line 1013 of file CubitAttribUser.cpp.
{ for(CubitAttrib* cubit_attrib_ptr = headAttrib; cubit_attrib_ptr != NULL; cubit_attrib_ptr = cubit_attrib_ptr->next_attrib()) { assert(NULL != cubit_attrib_ptr); attrib_list.append_unique(cubit_attrib_ptr); } }
void CubitAttribUser::merge_owner | ( | RefEntity * | deletable_entity | ) |
Definition at line 359 of file CubitAttribUser.cpp.
{ //- if owner is to be merged, combine attribs from deletable_entity with this // if no deletable entity, keep the entity name and delete the other // attribs on this entity int i; if (deletable_entity == NULL) { DLIList<CubitAttrib*> ca_list; get_cubit_attrib_list(ca_list); for (i = ca_list.size(); i > 0; i--) { CubitAttrib *ca_ptr = ca_list.get_and_step(); if (ca_ptr->int_attrib_type() != CA_ENTITY_NAME && ca_ptr->int_attrib_type() != CA_ASSEMBLY_DATA && ca_ptr->int_attrib_type() != CA_MESH_OUTPUT_GROUP) { remove_cubit_attrib(ca_ptr); delete ca_ptr; } } return; } // first auto create attributes /*CubitStatus success = */ CGMApp::instance()->attrib_manager()->auto_update_attribs(CAST_TO(this, RefEntity)); // copy any attr's on deletable_entity but not on this auto_create_for_merge(deletable_entity); // call merge for each attribute, passing other as argument DLIList<CubitAttrib*> ca_list, deletable_ca_list; get_cubit_attrib_list(ca_list); deletable_entity->get_cubit_attrib_list(deletable_ca_list); assert(ca_list.size() >= deletable_ca_list.size()); for (i = ca_list.size(); i > 0; i--) { CubitAttrib *ca_ptr = ca_list.get_and_step(); deletable_ca_list.reset(); CubitAttrib *deletable_ca_ptr = NULL; if (deletable_ca_list.size() > 0) { deletable_ca_ptr = deletable_ca_list.get(); // get the corresponding deletable attribute, then extract it from // the list while (ca_ptr->int_attrib_type() != deletable_ca_ptr->int_attrib_type() && !deletable_ca_list.is_at_end()) { deletable_ca_list.step(); deletable_ca_ptr = deletable_ca_list.get(); } if (ca_ptr->int_attrib_type() == deletable_ca_ptr->int_attrib_type()) deletable_ca_list.extract(); else deletable_ca_ptr = NULL; } ca_ptr->merge_owner(deletable_ca_ptr); } // now, check delete flag for each ca_ptr, and delete if necessary for (i = ca_list.size(); i > 0; i--) { CubitAttrib *ca_ptr = ca_list.get_and_step(); if (ca_ptr->delete_attrib()) { remove_cubit_attrib(ca_ptr); delete ca_ptr; } } // ok, we're done }
Definition at line 1023 of file CubitAttribUser.cpp.
{ int number = 0; for(CubitAttrib* cubit_attrib_ptr = headAttrib; cubit_attrib_ptr != NULL; cubit_attrib_ptr = cubit_attrib_ptr->next_attrib()) number++; return number; }
void CubitAttribUser::operator= | ( | const CubitAttribUser & | ) | [private] |
CubitStatus CubitAttribUser::put_simple_attrib | ( | const CubitSimpleAttrib & | cubit_simple_attrib_ptr, |
CubitBoolean | append_it = CUBIT_TRUE |
||
) | [private] |
Definition at line 90 of file CubitAttribUser.cpp.
{ Body* Body_ptr; Body_ptr = CAST_TO(this, Body); BasicTopologyEntity* BTE_ptr; BTE_ptr = CAST_TO(this, BasicTopologyEntity); if ( Body_ptr != NULL ) { // Get the OSME pointer BodySM* OSME_ptr = Body_ptr->get_body_sm_ptr(); // check for duplicates if (DEBUG_FLAG(94)) { DLIList<CubitSimpleAttrib> cs_list; OSME_ptr->get_simple_attribute(cs_list); for (int i = cs_list.size(); i > 0; i--) { const CubitSimpleAttrib cs_attrib = cs_list.get_and_step(); if (cs_attrib == new_csattrib_ptr) PRINT_INFO("Trying to add equivalent attribute of type %s on Body %d.\n", new_csattrib_ptr.character_type().c_str(), Body_ptr->id()); else if (cs_attrib.character_type() == new_csattrib_ptr.character_type()) PRINT_INFO("Trying to add attribute of same type %s on Body %d.\n", new_csattrib_ptr.character_type().c_str(), Body_ptr->id()); } } //________ Change Code by DZ of Cat, 3/11/99 12:25:30 PM ________ // Attach this name to it if ( append_it ) append_simple_attribute(OSME_ptr, new_csattrib_ptr); //________ Change End by DZ of Cat, 3/11/99 12:25:30 PM ________ } // Deal with BasicTopologyEntities else if ( BTE_ptr != NULL ) { // Get the GeometryEntity pointer GeometryEntity* GE_ptr = BTE_ptr->get_geometry_entity_ptr(); if( NULL == GE_ptr ) return CUBIT_FAILURE; // check for duplicates if (DEBUG_FLAG(94)) { DLIList<CubitSimpleAttrib> cs_list; GE_ptr->get_simple_attribute(cs_list); for (int i = cs_list.size(); i > 0; i--) { const CubitSimpleAttrib &cs_attrib = cs_list.get_and_step(); if (cs_attrib == new_csattrib_ptr) PRINT_INFO("Trying to add equivalent attribute of type %s on %s %d.\n", new_csattrib_ptr.character_type().c_str(), BTE_ptr->class_name(), BTE_ptr->id()); else if (cs_attrib.character_type() == new_csattrib_ptr.character_type()) PRINT_INFO("Trying to add attribute of same type %s on %s %d.\n", new_csattrib_ptr.character_type().c_str(), BTE_ptr->class_name(), BTE_ptr->id()); } } //_________ Add Code by DZ of Cat, 3/11/99 11:10:29 AM _________ // Attach this name to it if ( append_it ) append_simple_attribute(GE_ptr, new_csattrib_ptr); //_________ Code End by DZ of Cat, 3/11/99 11:10:29 AM _________ } // Deal with all other RefEntities. As these do not have any // underlying entities (such as solid model entities) associated // with them, this block is a do-nothing block. else { } if (DEBUG_FLAG(90)) { RefEntity *ref_entity = CAST_TO(this, RefEntity); PRINT_DEBUG_90( "Putting simple attribute of type %s on" " %s %d.\n", new_csattrib_ptr.character_type().c_str(), ref_entity->class_name(), ref_entity->id()); } return CUBIT_SUCCESS; }
CubitStatus CubitAttribUser::read_cubit_attrib | ( | int | attrib_type | ) |
Definition at line 943 of file CubitAttribUser.cpp.
{ CubitStatus read_status; // get all simple attrib's DLIList<CubitSimpleAttrib> csattrib_list; // Deal with a Body entity Body* Body_ptr = CAST_TO(this, Body); BasicTopologyEntity* BTE_ptr = CAST_TO(this, BasicTopologyEntity); if ( Body_ptr != NULL ) { BodySM* OSME_ptr = Body_ptr->get_body_sm_ptr(); read_status = OSME_ptr->get_simple_attribute(csattrib_list); remove_all_simple_attribute(OSME_ptr); } else if ( BTE_ptr != NULL ) { GeometryEntity* GE_ptr = BTE_ptr->get_geometry_entity_ptr(); read_status = GE_ptr->get_simple_attribute(csattrib_list); remove_all_simple_attribute(GE_ptr); } else return CUBIT_SUCCESS; csattrib_list.reset(); for(int i = csattrib_list.size(); i != 0; i--) { const CubitSimpleAttrib& cubit_simple_attrib_ptr = csattrib_list.get_and_step(); int csa_type = CGMApp::instance()->attrib_manager()->attrib_type(cubit_simple_attrib_ptr); if (attrib_type == CA_ALL_ATTRIBUTES || csa_type == attrib_type) { // create this CA // CubitAttrib *new_attrib = CGMApp::instance()->attrib_manager()->create_cubit_attrib(csa_type, CAST_TO(this, RefEntity), cubit_simple_attrib_ptr); } else { // otherwise we don't want to read this one; since the get_simple_attribute // took the attribute off, we'll have to put this one back on put_simple_attrib(cubit_simple_attrib_ptr); } } return read_status; }
void CubitAttribUser::remove_all_simple_attribute | ( | TopologyBridge * | bridge | ) |
Definition at line 1219 of file CubitAttribUser.cpp.
{ // remove this name from the primary object bridge->remove_all_simple_attribute_virt(); // for merged objects, remove all attributes from other entities if (CubitSimpleAttrib::get_push_attribs() == CUBIT_TRUE || CGMApp::instance()->attrib_manager()->auto_update_flag(CA_MERGE_PARTNER) == CUBIT_TRUE) { DLIList<TopologyBridge*> tb_list; bridge->bridge_manager()->get_bridge_list(tb_list); tb_list.reset(); assert(tb_list.size() == 0 || tb_list.get() == bridge); for (int i = tb_list.size(); i > 0; i--) { TopologyBridge *temp_tb = tb_list.get_and_step(); if (temp_tb != bridge) temp_tb->remove_all_simple_attribute_virt(); } } }
CubitStatus CubitAttribUser::remove_attrib_geometry_entity | ( | CubitAttrib * | cubit_attrib_ptr | ) |
Definition at line 1034 of file CubitAttribUser.cpp.
{ CubitStatus removed = CUBIT_FAILURE; if(cubit_attrib_ptr == NULL) return removed; CubitSimpleAttrib csattrib_ptr = cubit_attrib_ptr->cubit_simple_attrib(); if(!csattrib_ptr.isEmpty()) { if (DEBUG_FLAG(90)) { RefEntity *ref_entity = CAST_TO(this, RefEntity); PRINT_DEBUG_90( "Removing simple attribute of type %s on" " %s %d.\n", csattrib_ptr.character_type().c_str(), ref_entity->class_name(), ref_entity->id()); } TopologyEntity* topo_ptr = CAST_TO(this, TopologyEntity); if (topo_ptr && topo_ptr->bridge_manager()->topology_bridge()) { remove_simple_attribute(topo_ptr->bridge_manager()->topology_bridge(), csattrib_ptr); removed = CUBIT_SUCCESS; } } return removed; }
CubitStatus CubitAttribUser::remove_cubit_attrib | ( | DLIList< CubitAttrib * > | attrib_list | ) | [private] |
Definition at line 820 of file CubitAttribUser.cpp.
{ CubitStatus remove_status = CUBIT_SUCCESS; attrib_list.reset(); for(int i = attrib_list.size(); i != 0; i--) { CubitAttrib* cubit_attrib_ptr = attrib_list.get_and_step(); if (remove_cubit_attrib(cubit_attrib_ptr) == CUBIT_FAILURE) remove_status = CUBIT_FAILURE; delete cubit_attrib_ptr; } return remove_status; }
CubitStatus CubitAttribUser::remove_cubit_attrib | ( | int | attrib_type | ) |
Definition at line 835 of file CubitAttribUser.cpp.
{ DLIList<CubitAttrib*> attrib_list; find_cubit_attrib_type(attrib_type, attrib_list); CubitStatus remove_status = remove_cubit_attrib(attrib_list); return remove_status; }
CubitStatus CubitAttribUser::remove_cubit_attrib | ( | CubitAttrib * | cubit_attrib_ptr | ) |
Definition at line 843 of file CubitAttribUser.cpp.
{ if (cubit_attrib_ptr == NULL) return CUBIT_FAILURE; CubitStatus remove_geom = remove_attrib_geometry_entity(cubit_attrib_ptr); //CubitStatus remove_cubit = CUBIT_FAILURE; CubitBoolean once = CUBIT_FALSE; if (headAttrib == cubit_attrib_ptr) { headAttrib = cubit_attrib_ptr->next_attrib(); once = CUBIT_TRUE; } CubitAttrib* temp_cubit_attrib_ptr = headAttrib; while (temp_cubit_attrib_ptr != NULL) { if (cubit_attrib_ptr == temp_cubit_attrib_ptr->next_attrib()) { if (once) { PRINT_DEBUG_90("Removing attribute more than once.\n"); } temp_cubit_attrib_ptr->set_next_attrib(cubit_attrib_ptr-> next_attrib()); once = CUBIT_TRUE; } temp_cubit_attrib_ptr = temp_cubit_attrib_ptr->next_attrib(); } return remove_geom; }
void CubitAttribUser::remove_simple_attribute | ( | TopologyBridge * | bridge, |
const CubitSimpleAttrib & | attrib_ptr | ||
) |
Definition at line 1238 of file CubitAttribUser.cpp.
{ // remove this name from the primary object bridge->remove_simple_attribute_virt(attrib_ptr); // for merged objects, remove attribute from other entities if (CubitSimpleAttrib::get_push_attribs() == CUBIT_TRUE || CGMApp::instance()->attrib_manager()->auto_update_flag(CA_MERGE_PARTNER) == CUBIT_TRUE) { DLIList<TopologyBridge*> tb_list; BridgeManager *bm_ptr = bridge->bridge_manager(); if (bm_ptr != NULL) bm_ptr->get_bridge_list(tb_list); tb_list.reset(); assert(tb_list.size() == 0 || tb_list.get() == bridge); for (int i = tb_list.size(); i > 0; i--) { TopologyBridge *temp_tb = tb_list.get_and_step(); if (temp_tb != bridge) temp_tb->remove_simple_attribute_virt(attrib_ptr); } } }
void CubitAttribUser::set_updated_flag | ( | CubitBoolean | flag | ) |
Definition at line 1105 of file CubitAttribUser.cpp.
{ DLIList<CubitAttrib*> ca_list; get_cubit_attrib_list(ca_list); for (int i = ca_list.size(); i > 0; i--) ca_list.get_and_step()->has_updated(flag); }
void CubitAttribUser::set_written_flag | ( | CubitBoolean | flag | ) |
Definition at line 1094 of file CubitAttribUser.cpp.
{ DLIList<CubitAttrib*> ca_list; get_cubit_attrib_list(ca_list); for (int i = ca_list.size(); i > 0; i--) { if (flag == CUBIT_FALSE && ca_list.get()->has_written() == CUBIT_TRUE) ca_list.get()->reset(); ca_list.get_and_step()->has_written(flag); } }
void CubitAttribUser::split_owner | ( | DLIList< CubitSimpleAttrib > & | csa_list | ) |
Definition at line 327 of file CubitAttribUser.cpp.
{ //- if owner is to be split, get simple attribs for new entity // first auto create attributes /*CubitStatus success = */ CGMApp::instance()->attrib_manager()->auto_update_attribs(CAST_TO(this, RefEntity)); // call split for each attribute, getting back new csa's DLIList<CubitAttrib*> ca_list; get_cubit_attrib_list(ca_list); int i; for ( i = ca_list.size(); i > 0; i--) { CubitAttrib *ca_ptr = ca_list.get_and_step(); CubitSimpleAttrib csa_ptr = ca_ptr->split_owner(); if (!csa_ptr.isEmpty()) csa_list.append(csa_ptr); } // now, check delete flag for each ca_ptr, and delete if necessary for (i = ca_list.size(); i > 0; i--) { CubitAttrib *ca_ptr = ca_list.get_and_step(); if (ca_ptr->delete_attrib()) { remove_cubit_attrib(ca_ptr); delete ca_ptr; } } // ok, we're done }
void CubitAttribUser::transf_owner | ( | const CubitVector & | matrow1, |
const CubitVector & | matrow2, | ||
const CubitVector & | matrow3, | ||
const CubitVector & | translate_vec, | ||
const double | scale_factor | ||
) |
Definition at line 427 of file CubitAttribUser.cpp.
{ //- called if owner is to be transformed; simply passes information //- to attribs on this entity; does *not* autocreate DLIList<CubitAttrib*> ca_list; get_cubit_attrib_list(ca_list); for (int i = ca_list.size(); i > 0; i--) { CubitAttrib *ca_ptr = ca_list.get_and_step(); ca_ptr->transf_owner(matrow1, matrow2, matrow3, translate_vec, scale_factor); } // ok, we're done }
CubitStatus CubitAttribUser::update_cubit_attrib | ( | int | attrib_type | ) |
Definition at line 611 of file CubitAttribUser.cpp.
{ DLIList<CubitAttrib*> attrib_list; CubitAttrib* new_attrib = NULL; find_cubit_attrib_type(attrib_type, attrib_list); if( attrib_list.size() > 1 ) { PRINT_WARNING("File contains multiples of the same attrib.\n"); PRINT_INFO(" Something was not written correctly.\n"); } if(attrib_list.size() == 0) new_attrib = get_cubit_attrib(attrib_type); else new_attrib = attrib_list.get(); assert(new_attrib != 0); CubitStatus update_status = new_attrib->update(); return update_status; }
CubitStatus CubitAttribUser::write_cubit_attrib_by_type | ( | int | attrib_type | ) |
Definition at line 286 of file CubitAttribUser.cpp.
{ DLIList<CubitAttrib*> attrib_list; find_cubit_attrib_type(attrib_type, attrib_list); CubitStatus write_status = write_cubit_attrib_list(attrib_list); return write_status; }
CubitStatus CubitAttribUser::write_cubit_attrib_list | ( | DLIList< CubitAttrib * > | attrib_list | ) |
Definition at line 294 of file CubitAttribUser.cpp.
{ CubitStatus write_status = CUBIT_SUCCESS; attrib_list.reset(); for(int i = attrib_list.size(); i > 0; i--) { CubitAttrib* cubit_attrib_ptr = attrib_list.get_and_step(); if (write_specific_cubit_attrib(cubit_attrib_ptr) == CUBIT_FAILURE) write_status = CUBIT_FAILURE; } return write_status; }
Definition at line 308 of file CubitAttribUser.cpp.
{ // write the attributes CubitStatus write_status = CUBIT_SUCCESS; DLIList<CubitAttrib*> attrib_list; CubitAttrib *attrib; get_cubit_attrib_list(attrib_list); attrib_list.reset(); int i; for(i = attrib_list.size(); i != 0; i--) { attrib = attrib_list.get_and_step(); if (write_specific_cubit_attrib(attrib) == CUBIT_FAILURE) write_status = CUBIT_FAILURE; } return write_status; }
CubitStatus CubitAttribUser::write_specific_cubit_attrib | ( | CubitAttrib * | cubit_attrib_ptr | ) |
Definition at line 250 of file CubitAttribUser.cpp.
{ CubitStatus result = CUBIT_SUCCESS; // don't write if this attrib is marked as deleted or it has already been written // Also, only write if the write flag is on for this attribute type if ((cubit_attrib_ptr->delete_attrib() != CUBIT_TRUE) && // (cubit_attrib_ptr->has_written() != CUBIT_TRUE) && (CGMApp::instance()->attrib_manager()->auto_write_flag(cubit_attrib_ptr->int_attrib_type()) == CUBIT_TRUE)) { if (DEBUG_FLAG(90)) { RefEntity *this_entity = CAST_TO(this, RefEntity); PRINT_DEBUG_90( "Writing attribute for %s %d, type %s\n", this_entity->class_name(), this_entity->id(), cubit_attrib_ptr->att_internal_name()); } // set has_written flag here, before actually writing - a trick to // allow some attributes to detect they're being written, and do any // final setup they need to do before the actual write takes place (used // in CAMeshContainer, for example) cubit_attrib_ptr->has_written(CUBIT_TRUE); const CubitSimpleAttrib &csa_ptr = cubit_attrib_ptr->cubit_simple_attrib(); result = put_simple_attrib(csa_ptr); // if the write wasn't successful, reset the write flag if (result != CUBIT_SUCCESS) cubit_attrib_ptr->has_written(CUBIT_FALSE); } return result; }
CubitAttrib* CubitAttribUser::headAttrib [protected] |
Definition at line 38 of file CubitAttribUser.hpp.