|
cgma
|
#include <OCCDrawTool.hpp>
Public Member Functions | |
| ~OCCDrawTool () | |
| CubitStatus | draw_TopoDS_Shape (TopoDS_Shape *shape, int color, CubitBoolean tessellate=CUBIT_FALSE, CubitBoolean flush=CUBIT_FALSE) |
| CubitStatus | draw_surface (Surface *surface, int color, CubitBoolean tessellate, CubitBoolean flush) |
| CubitStatus | draw_curve (Curve *curve, int color, CubitBoolean flush) |
| CubitStatus | draw_FACE (TopoDS_Face *face, int color, CubitBoolean tessellate=CUBIT_FALSE, CubitBoolean flush=CUBIT_FALSE) |
| CubitStatus | draw_EDGE (TopoDS_Edge *edge, int color, CubitBoolean flush=CUBIT_FALSE) |
| CubitStatus | draw_VERTEX (TopoDS_Vertex *vertex, int color, CubitBoolean flush=CUBIT_FALSE) |
Static Public Member Functions | |
| static OCCDrawTool * | instance () |
Protected Member Functions | |
| OCCDrawTool () | |
Static Private Attributes | |
| static OCCDrawTool * | instance_ = 0 |
Definition at line 15 of file OCCDrawTool.hpp.
Definition at line 57 of file OCCDrawTool.cpp.
{
}
| OCCDrawTool::OCCDrawTool | ( | ) | [protected] |
Definition at line 53 of file OCCDrawTool.cpp.
{
}
| CubitStatus OCCDrawTool::draw_curve | ( | Curve * | curve, |
| int | color, | ||
| CubitBoolean | flush | ||
| ) |
Definition at line 201 of file OCCDrawTool.cpp.
{
GMem g_mem;
OCCQueryEngine *OQE = OCCQueryEngine::instance();
double tol = OQE->get_sme_resabs_tolerance();
if (curve->get_arc_length() < tol)
return CUBIT_SUCCESS;
// get the graphics
CubitStatus stat;
stat = OQE->get_graphics( curve, &g_mem );
if (stat==CUBIT_FAILURE )
{
PRINT_ERROR("Unable to tessellate a curve for display\n" );
return CUBIT_FAILURE;
}
else
{
// Draw the polyline
GfxPreview::draw_polyline( g_mem.point_list(), g_mem.pointListCount, color );
}
if( flush )
GfxPreview::flush();
return CUBIT_SUCCESS;
}
| CubitStatus OCCDrawTool::draw_EDGE | ( | TopoDS_Edge * | edge, |
| int | color, | ||
| CubitBoolean | flush = CUBIT_FALSE |
||
| ) |
Definition at line 127 of file OCCDrawTool.cpp.
{
//OCCQueryEngine *OQE = OCCQueryEngine::instance();
//Curve *curve_ptr = OQE->populate_topology_bridge( *EDGE_ptr, CUBIT_TRUE );
//CubitStatus stat;
//stat = draw_curve(curve_ptr, color, flush);
GMem g_mem;
OCCQueryEngine *OQE = OCCQueryEngine::instance();
double tol = OQE->get_sme_resabs_tolerance();
GProp_GProps myProps;
BRepGProp::LinearProperties(*EDGE_ptr, myProps);
if( myProps.Mass() < tol)
return CUBIT_SUCCESS;
// get the graphics
CubitStatus stat;
stat = OQE->get_graphics( EDGE_ptr, &g_mem );
if (stat==CUBIT_FAILURE )
{
PRINT_ERROR("Unable to tessellate a curve for display\n" );
return CUBIT_FAILURE;
}
else
{
// Draw the polyline
GfxPreview::draw_polyline( g_mem.point_list(), g_mem.pointListCount, color );
}
if( flush )
GfxPreview::flush();
return CUBIT_SUCCESS;
}
| CubitStatus OCCDrawTool::draw_FACE | ( | TopoDS_Face * | face, |
| int | color, | ||
| CubitBoolean | tessellate = CUBIT_FALSE, |
||
| CubitBoolean | flush = CUBIT_FALSE |
||
| ) |
Definition at line 229 of file OCCDrawTool.cpp.
{
//OCCQueryEngine *OQE = OCCQueryEngine::instance();
//Surface *surf_ptr = OQE->populate_topology_bridge( *FACE_ptr );
//CubitStatus stat;
//stat = draw_face(surf_ptr, color, tessellate, flush);
OCCQueryEngine *OQE = OCCQueryEngine::instance();
if( tessellate )
{
GMem g_mem ;
OQE->get_graphics( FACE_ptr, &g_mem);
// Draw the triangles
GPoint p[3];
GPoint* plist = g_mem.point_list();
int* facet_list = g_mem.facet_list();
int i, c = 0;
for( i=0; i<g_mem.facet_list_size(); i++ )
{
p[0] = plist[facet_list[++c]];
p[2] = plist[facet_list[++c]];
p[1] = plist[facet_list[++c]];
c++;
GfxPreview::draw_tri( p, color );
}
}
else
{
TopExp_Explorer Bx;
for(Bx.Init(*FACE_ptr, TopAbs_EDGE); Bx.More(); Bx.Next())
draw_EDGE( const_cast<TopoDS_Edge*>(&(TopoDS::Edge( Bx.Current() ))), color, flush );
}
if( flush )
GfxPreview::flush();
return CUBIT_SUCCESS;
}
| CubitStatus OCCDrawTool::draw_surface | ( | Surface * | surface, |
| int | color, | ||
| CubitBoolean | tessellate, | ||
| CubitBoolean | flush | ||
| ) |
Definition at line 163 of file OCCDrawTool.cpp.
{
OCCQueryEngine *OQE = OCCQueryEngine::instance();
if( tessellate )
{
GMem g_mem ;
OQE->get_graphics( surface, &g_mem);
// Draw the triangles
GPoint p[3];
GPoint* plist = g_mem.point_list();
int* facet_list = g_mem.facet_list();
int i, c = 0;
for( i=0; i<g_mem.facet_list_size(); i++ )
{
p[0] = plist[facet_list[++c]];
p[2] = plist[facet_list[++c]];
p[1] = plist[facet_list[++c]];
c++;
GfxPreview::draw_tri( p, color );
}
}
else
{
// Draw curves
DLIList<OCCCurve*> curve_list;
CAST_TO(surface, OCCSurface)->get_curves(curve_list);
int i;
for( i=curve_list.size(); i--; )
draw_curve( (Curve*)(curve_list.get_and_step()), color, flush );
}
if( flush )
GfxPreview::flush();
return CUBIT_SUCCESS;
}
| CubitStatus OCCDrawTool::draw_TopoDS_Shape | ( | TopoDS_Shape * | shape, |
| int | color, | ||
| CubitBoolean | tessellate = CUBIT_FALSE, |
||
| CubitBoolean | flush = CUBIT_FALSE |
||
| ) |
Definition at line 62 of file OCCDrawTool.cpp.
{
if( shape->ShapeType() == TopAbs_COMPOUND ||
shape->ShapeType() == TopAbs_SOLID ||
shape->ShapeType() == TopAbs_SHELL )
{
DLIList<TopoDS_Face*> Face_list;
TopTools_IndexedMapOfShape M;
TopExp::MapShapes(*shape, TopAbs_FACE, M);
int ii;
for (ii=1; ii<=M.Extent(); ii++)
{
// TopologyBridge *face = OCCQueryEngine::instance()->occ_to_cgm(M(ii));
// OCCSurface *occ_face = CAST_TO(face, OCCSurface);
// Face_list.append_unique(occ_face->get_TopoDS_Face());
Face_list.append_unique( const_cast<TopoDS_Face*>(&(TopoDS::Face(M(ii)))));
}
int i;
for( i=Face_list.size(); i--; )
draw_FACE( Face_list.get_and_step(), color, tessellate );
if( flush )
GfxPreview::flush();
return CUBIT_SUCCESS;
}
else if (shape->ShapeType() == TopAbs_FACE )
{
return draw_FACE((TopoDS_Face *)shape , color, tessellate, flush );
}
else if (shape->ShapeType() == TopAbs_WIRE )
{
DLIList<TopoDS_Edge*> EDGE_list;
TopTools_IndexedMapOfShape M;
TopExp::MapShapes(*shape, TopAbs_EDGE, M);
int ii;
for (ii=1; ii<=M.Extent(); ii++)
{
EDGE_list.append_unique( const_cast<TopoDS_Edge*>(&(TopoDS::Edge(M(ii)))));
}
int i;
for( i=EDGE_list.size(); i--; )
draw_EDGE( EDGE_list.get_and_step(), color );
if( flush )
GfxPreview::flush();
return CUBIT_SUCCESS;
}
else if (shape->ShapeType() == TopAbs_EDGE )
{
return draw_EDGE( (TopoDS_Edge*)shape, color, flush );
}
else if (shape->ShapeType() == TopAbs_VERTEX )
{
return draw_VERTEX( (TopoDS_Vertex*)shape, color, flush );
}
else
{
PRINT_ERROR( "Unsupported entity type specified - cannot draw\n" );
return CUBIT_FAILURE;
}
return CUBIT_SUCCESS;
}
| CubitStatus OCCDrawTool::draw_VERTEX | ( | TopoDS_Vertex * | vertex, |
| int | color, | ||
| CubitBoolean | flush = CUBIT_FALSE |
||
| ) |
Definition at line 274 of file OCCDrawTool.cpp.
{
gp_Pnt pt = BRep_Tool::Pnt(*VERTEX_ptr);
GfxPreview::draw_point( pt.X(), pt.Y(), pt.Z(), color );
return CUBIT_SUCCESS;
}
| OCCDrawTool * OCCDrawTool::instance | ( | void | ) | [static] |
Definition at line 45 of file OCCDrawTool.cpp.
{
if (instance_ == 0) {
instance_ = new OCCDrawTool();
}
return instance_;
}
OCCDrawTool * OCCDrawTool::instance_ = 0 [static, private] |
Definition at line 60 of file OCCDrawTool.hpp.