[cgma-dev] r2201 - in cgm/trunk: geom geom/OCC test

Tim Tautges tautges at mcs.anl.gov
Mon Nov 3 14:03:33 CST 2008


Hi Jane,
   Currently, the ITAPS test 'testgeom' is failing on parts that I think 
should be there.  Could you look at that?  To run, do a 'make check', 
then run testgeom in the itaps subdir.  Thanks.

- tim

janehu at mcs.anl.gov wrote:
> Author: janehu
> Date: 2008-11-03 13:45:56 -0600 (Mon, 03 Nov 2008)
> New Revision: 2201
> 
> Modified:
>    cgm/trunk/geom/GeometryModifyTool.cpp
>    cgm/trunk/geom/OCC/OCCModifyEngine.cpp
>    cgm/trunk/test/modify.cpp
> Log:
> Added returning body for the sweep_along_curve interface in geom level and passed tests.
> 
> Modified: cgm/trunk/geom/GeometryModifyTool.cpp
> ===================================================================
> --- cgm/trunk/geom/GeometryModifyTool.cpp	2008-11-03 19:08:03 UTC (rev 2200)
> +++ cgm/trunk/geom/GeometryModifyTool.cpp	2008-11-03 19:45:56 UTC (rev 2201)
> @@ -3568,6 +3568,14 @@
>     if (!sweep_finish("along_curve", body_list, result_list, changed_new_ids))
>      status = CUBIT_FAILURE;
>  
> +   body_list.clean_out();
> +   for(int i = 0; i < result_list.size(); i++)
> +   {
> +     Body* body = CAST_TO(result_list.get_and_step()->topology_entity(),Body );
> +     if(body)
> +       body_list.append(body);
> +   }
> +   CAST_LIST( body_list, ref_ent_list, RefEntity);
>     return status;
>  
>  }
> 
> Modified: cgm/trunk/geom/OCC/OCCModifyEngine.cpp
> ===================================================================
> --- cgm/trunk/geom/OCC/OCCModifyEngine.cpp	2008-11-03 19:08:03 UTC (rev 2200)
> +++ cgm/trunk/geom/OCC/OCCModifyEngine.cpp	2008-11-03 19:45:56 UTC (rev 2201)
> @@ -4354,12 +4354,6 @@
>    BRepLib_FuseEdges fuser(wire);
>    fuser.SetConcatBSpl();
>    fuser.Perform();
> -  int removed_vertices = fuser.NbVertices();
> -  if(removed_vertices < num_edges - 1)
> -  {
> -    PRINT_ERROR("The curve_list provided has to form a G1 continuous spline.\n");
> -    return CUBIT_FAILURE;
> -  }
>    TopoDS_Shape  spline = fuser.Shape();
>    wire = TopoDS::Wire(spline);
>  
> @@ -4386,6 +4380,11 @@
>  
>      //sweep along the wire
>      BRepOffsetAPI_MakePipe maker(wire, toposhape);
> +    if(!maker.IsDone())
> +    {
> +      PRINT_ERROR("Can't sweep along the provided curve(s).\n");
> +      continue;
> +    }
>      TopoDS_Shape newShape = maker.Shape();
>      
>      tbs += OCCQueryEngine::instance()->populate_topology_bridge(newShape);
> 
> Modified: cgm/trunk/test/modify.cpp
> ===================================================================
> --- cgm/trunk/test/modify.cpp	2008-11-03 19:08:03 UTC (rev 2200)
> +++ cgm/trunk/test/modify.cpp	2008-11-03 19:45:56 UTC (rev 2201)
> @@ -865,5 +865,40 @@
>    d = body->measure();
>    //d = 8.07227
>  
> +  //test sweep_along_curve function
> +  //sweep along a staight curve with draft
> +  refentities.clean_out();
> +  refentities.append(rotate_face);
> +  CubitVector pt4(0,1,0);
> +  RefVertex* vt4 = gmti->make_RefVertex(pt4);
> +  RefEdge* edge3 = gmti->make_RefEdge(STRAIGHT_CURVE_TYPE, vt1, vt4);
> +  edges.clean_out();
> +  edges.append(edge3);
> +  gmti->sweep_along_curve(refentities, edges, 0.087,1);
> +  body = CAST_TO(refentities.get(), Body);
> +  d = body->measure();
> +  //d = 134.7152, theoretical calculation is 135.66363, error 0.67%
> +
> +  //sweep along two curves which make a G1 continous wire, no draft is performed
> +  refentities.clean_out();
> +  refentities.append(rotate_face);
> +  CubitVector pt5(0,2,7.5);
> +  CubitVector pt6(0,0,-7.5);
> +  CubitVector pt7(0,1,-15);
> +  RefVertex* vt5 = gmti->make_RefVertex(pt7);
> +  DLIList<CubitVector*> vector_list;
> +  vector_list.append(&pt5);
> +  
> +  RefEdge* edge4 = gmti->make_RefEdge( SPLINE_CURVE_TYPE, vt1, vt4, vector_list);
> +  vector_list.clean_out();
> +  vector_list.append(&pt6);
> +  RefEdge* edge5 = gmti->make_RefEdge( SPLINE_CURVE_TYPE, vt4, vt5, vector_list);  
> +  edges.clean_out();
> +  edges.append(edge4);
> +  edges.append(edge5);
> +  gmti->sweep_along_curve(refentities, edges, 0.087,1);
> +  body = CAST_TO(refentities.get(), Body);
> +  d = body->measure();
> +  //d = 93.697, no effect of draft angle.
>    return CUBIT_SUCCESS;
>  }
> 
> 

-- 
================================================================
"You will keep in perfect peace him whose mind is
   steadfast, because he trusts in you."               Isaiah 26:3

              Tim Tautges            Argonne National Laboratory
          (tautges at mcs.anl.gov)      (telecommuting from UW-Madison)
          phone: (608) 263-8485      1500 Engineering Dr.
            fax: (608) 263-4499      Madison, WI 53706




More information about the cgma-dev mailing list