Changeset 2043

Show
Ignore:
Timestamp:
08/18/08 11:45:24 (4 months ago)
Author:
janehu
Message:

Coedge wasn't cleaned totally when deleting, fixed this bug,updated testcases.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cgm/trunk/geom/OCC/OCCCoEdge.cpp

    r1443 r2043  
    4242OCCCoEdge::OCCCoEdge( Curve *curv_ptr,  
    4343                      LoopSM *loop_ptr, CubitSense sense ) 
    44                     : myCurve(curv_ptr),  
     44                    : myMark(0), myCurve(curv_ptr),  
    4545                      myLoop(loop_ptr),edgeSense(sense) 
    4646{ 
  • cgm/trunk/geom/OCC/OCCCoEdge.hpp

    r1510 r2043  
    6565  inline void set_loop(LoopSM * loop) {myLoop = loop;} 
    6666 
     67  inline int get_mark(){return myMark;} 
     68  inline void set_mark(int k){myMark = k;} 
     69 
    6770  virtual GeometryQueryEngine* 
    6871  get_geometry_query_engine() const; 
     
    121124  Curve *myCurve; 
    122125  CubitSense edgeSense; 
     126  int myMark; 
    123127}; 
    124128 
  • cgm/trunk/geom/OCC/OCCModifyEngine.cpp

    r1927 r2043  
    35423542    TopoDS_Shape new_shape = fuser.Shape(); 
    35433543 
    3544     //Debug:: check how many faces are there in new_shape. 
    3545     TopExp_Explorer Ex; 
    3546     int count = 0; 
    3547     for (Ex.Init(new_shape, TopAbs_FACE);Ex.More(); Ex.Next()) 
    3548       count++; 
    3549   
    35503544    CubitBoolean has_changed; 
    35513545    check_operation(new_shape, first_shape, first_is_volume, has_changed, &fuser); 
  • cgm/trunk/geom/OCC/OCCQueryEngine.cpp

    r2039 r2043  
    14221422      if(coedge->curve() == curve) 
    14231423      { 
     1424        coedge->set_mark(1); 
    14241425        exist = CUBIT_TRUE; 
    14251426        coedge->set_sense(sense); 
     
    14601461  loop->coedges(coedges_new); 
    14611462 
     1463  //remove unused coedges 
     1464  for(int i = 0; i < coedges_old.size(); i++) 
     1465  { 
     1466    OCCCoEdge *coedge = coedges_old.get_and_step(); 
     1467    if(coedge->get_mark() != 1) 
     1468      delete coedge; 
     1469    else 
     1470      coedge->set_mark(0); 
     1471  } 
    14621472  return loop; 
    14631473} 
  • cgm/trunk/geom/OCC/OCCShell.cpp

    r2039 r2043  
    233233                                                      shape); 
    234234        } 
    235         shape.Nullify(); 
    236235      } 
    237       else 
    238         shape = shapes.First(); 
     236      shape = shapes.First(); 
    239237    } 
    240238    else if(op->IsDeleted(*get_TopoDS_Shell())) 
     
    295293    if(shapes.Extent() == 1) 
    296294      shape = shapes.First(); 
    297     else 
     295    else if(shapes.Extent() > 1) 
    298296    { 
    299       if(shapes.Extent() > 1) 
     297      TopTools_ListIteratorOfListOfShape it; 
     298      it.Initialize(shapes); 
     299      for(it; it.More(); it.Next()) 
    300300      { 
    301         TopTools_ListIteratorOfListOfShape it; 
    302         it.Initialize(shapes); 
    303         for(it; it.More(); it.Next()) 
    304         { 
    305           shape = it.Value(); 
    306           OCCQueryEngine::instance()->copy_attributes(face, shape); 
    307         } 
     301        shape = it.Value(); 
     302        OCCQueryEngine::instance()->copy_attributes(face, shape); 
    308303      } 
     304      shape = shapes.First(); 
     305    } 
     306    else  
    309307      shape.Nullify(); 
    310     } 
    311308    if(shapes.Extent() > 0 || (op && op->IsDeleted(face))) 
    312309      OCCSurface::update_OCC_entity(face,shape, op, sp); 
  • cgm/trunk/geom/OCC/OCCSurface.cpp

    r2039 r2043  
    893893         for(it; it.More(); it.Next()) 
    894894         { 
    895            shape = it.Value(); 
     895           shape_edge = it.Value(); 
    896896           OCCQueryEngine::instance()->copy_attributes(edge, shape_edge); 
    897897         } 
     
    920920         for(it; it.More(); it.Next()) 
    921921         { 
    922            shape = it.Value(); 
     922           shape_vertex = it.Value(); 
    923923           OCCQueryEngine::instance()->copy_attributes(vertex, shape_vertex); 
    924924         } 
  • cgm/trunk/test/modify.cpp

    r2035 r2043  
    290290  free_entities.clean_out(); 
    291291  gti->get_free_ref_entities(free_entities); 
     292  assert(free_entities.size() == 0); 
    292293  //there shouldn't be any free_entites. 
    293294 
     
    381382  free_entities.clean_out(); 
    382383  gti->get_free_ref_entities(free_entities); 
     384  assert(free_entities.size() == 0); 
    383385  //there shouldn't be any free_entites. 
    384386 
     
    485487  free_entities.clean_out(); 
    486488  gti->get_free_ref_entities(free_entities);   
    487    
     489  assert(free_entities.size() == 0); 
     490  
    488491  OCCQueryEngine* oqe = OCCQueryEngine::instance(); 
    489492  DLIList <OCCBody* > *occ_bodies = oqe->BodyList; 
     
    512515  free_entities.clean_out(); 
    513516  gti->get_free_ref_entities(free_entities); 
    514  
     517  assert(free_entities.size() == 0); 
    515518  //test body-body intersect. 
    516519  //1. from body is the commom body, no update 
     
    561564  free_entities.clean_out(); 
    562565  gti->get_free_ref_entities(free_entities); 
     566  assert(free_entities.size() == 0); 
    563567 
    564568  //test chop operation 
     
    585589  free_entities.clean_out(); 
    586590  gti->get_free_ref_entities(free_entities); 
    587  
     591  assert(free_entities.size() == 0); 
    588592  //test chop 2 
    589593  from_body = gmti->brick(4, 4, 4); 
     
    608612  free_entities.clean_out(); 
    609613  gti->get_free_ref_entities(free_entities); 
     614  assert(free_entities.size() == 0); 
    610615 
    611616  //test unite 1 
     
    627632  free_entities.clean_out(); 
    628633  gti->get_free_ref_entities(free_entities); //free_entities.size() = 0 
     634  assert(free_entities.size() == 0); 
    629635  //delete all entities 
    630636  gti->delete_Body(bodies); 
    631637  free_entities.clean_out(); 
    632638  gti->get_free_ref_entities(free_entities); //free_entities.size() = 0 
    633  
     639  assert(free_entities.size() == 0); 
    634640  //test unite 2 
    635641  tool_body = gmti->brick(4, 4,4); 
     
    651657  free_entities.clean_out(); 
    652658  gti->get_free_ref_entities(free_entities); //free_entities.size() = 0 
     659  assert(free_entities.size() == 0); 
    653660  //delete all entities 
    654661  gti->delete_Body(bodies); 
    655662  free_entities.clean_out(); 
    656663  gti->get_free_ref_entities(free_entities); //free_entities.size() = 0 
     664  assert(free_entities.size() == 0); 
    657665 
    658666  //test making thick body. 
  • cgm/trunk/test/r_w.cpp

    r2035 r2043  
    173173  rsl = gmti->subtract(tool_body,from_bodies, new_bodies, 
    174174                       CUBIT_TRUE, CUBIT_FALSE); 
    175   //Created volume(s): 21, 22 
    176   //Destroyed volume(s): 18, 20 
     175  //Created volume(s): 5, 6 
     176  //Destroyed volume(s): 3, 4 
    177177  double d = new_bodies.step_and_get()->measure(); 
    178178  CubitVector v = new_bodies.get()->center_point(); 
     
    194194  gti->delete_Body(bodies);  
    195195   
     196  gti->get_free_ref_entities(free_entities); 
     197  assert(free_entities.size() ==0); 
    196198  return CUBIT_SUCCESS; 
    197199}