本文整理汇总了C++中DLIList::get_and_step方法的典型用法代码示例。如果您正苦于以下问题:C++ DLIList::get_and_step方法的具体用法?C++ DLIList::get_and_step怎么用?C++ DLIList::get_and_step使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DLIList
的用法示例。
在下文中一共展示了DLIList::get_and_step方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: points
void PST_Edge::points( DLIList<PST_Edge*>& edges, DLIList<PST_Point*>& points )
{
int e;
for( e = edges.size(); e--; )
{
PST_Edge* edge_ptr = edges.get_and_step();
edge_ptr->start_point()->private_mark_ = 1;
edge_ptr->end_point()->private_mark_ = 1;
}
for( e = edges.size(); e--; )
{
PST_Edge* edge_ptr = edges.get_and_step();
PST_Point* sp = edge_ptr->start_point();
PST_Point* ep = edge_ptr->end_point();
if( sp->private_mark_ )
{
sp->private_mark_ = 0;
points.append( sp );
}
if( ep->private_mark_ )
{
ep->private_mark_ = 0;
points.append( ep );
}
}
}
示例2: edges
void PST_Edge::edges( DLIList<PST_Point*>& pts, DLIList<PST_Edge*>& edges )
{
int p;
for( p = pts.size(); p--; )
{
PST_Point* pt = pts.get_and_step();
PST_Edge* edge = pt->edge();
if( edge ) do
{
edge->private_mark_ = 1;
edge = edge->next( pt );
} while( edge != pt->edge() );
}
for( p = pts.size(); p--; )
{
PST_Point* pt = pts.get_and_step();
PST_Edge* edge = pt->edge();
if( edge ) do
{
if( edge->private_mark_ )
{
edge->private_mark_ = 0;
edges.append( edge );
}
edge = edge->next( pt );
} while( edge != pt->edge() );
}
}
示例3: faces
void PST_Edge::faces( DLIList<PST_Edge*>& edges, DLIList<PST_Face*>& faces )
{
int e;
for( e = edges.size(); e--; )
{
PST_Edge* edge_ptr = edges.get_and_step();
if( edge_ptr->forward()->face() )
edge_ptr->forward()->face()->private_mark_ = 1;
if( edge_ptr->reverse()->face() )
edge_ptr->reverse()->face()->private_mark_ = 1;
}
for( e = edges.size(); e--; )
{
PST_Edge* edge_ptr = edges.get_and_step();
PST_Face* fface_ptr = edge_ptr->forward()->face();
PST_Face* rface_ptr = edge_ptr->reverse()->face();
if( fface_ptr && fface_ptr->private_mark_ )
{
fface_ptr->private_mark_ = 0;
faces.append( fface_ptr );
}
if( rface_ptr && rface_ptr->private_mark_ )
{
rface_ptr->private_mark_ = 0;
faces.append( rface_ptr );
}
}
}
示例4: update_OCC_entity
//----------------------------------------------------------------
// Function: private function to update the core compound and
// for any movement of the body.
// Note: input shape must have the same number of Compound
// as the body's lumps number.
// Author: Jane Hu
//----------------------------------------------------------------
CubitStatus OCCBody::update_OCC_entity( BRepBuilderAPI_ModifyShape *aBRepTrsf,
BRepAlgoAPI_BooleanOperation *op)
{
assert(aBRepTrsf != NULL || op != NULL);
TopoDS_Compound compsolid;
TopoDS_Shape shape;
shape = aBRepTrsf->Shape();
if(aBRepTrsf && myTopoDSShape)
{
compsolid = TopoDS::Compound(shape);
if(OCCQueryEngine::instance()->OCCMap->IsBound(*myTopoDSShape) )
OCCQueryEngine::instance()->update_OCC_map(*myTopoDSShape, shape);
else if (!shape.IsEqual(*myTopoDSShape))
set_TopoDS_Shape(compsolid);
}
//Boolean operation works only on one lump body
//set the lumps
DLIList<Lump *> lumps;
lumps = this->lumps();
for (int i = 1; i <= lumps.size(); i++)
{
OCCLump *lump = CAST_TO(lumps.get_and_step(), OCCLump);
lump->update_OCC_entity(aBRepTrsf, op);
}
for(int i = 0; i < mySheetSurfaces.size(); i++)
{
OCCSurface* surface = mySheetSurfaces.get_and_step();
surface->update_OCC_entity(aBRepTrsf, op);
}
for(int i = 0; i <myShells.size() ; i++)
{
OCCShell* occ_shell = myShells.get_and_step();
occ_shell->update_OCC_entity(aBRepTrsf,op);
}
if (aBRepTrsf && !compsolid.IsNull())
set_TopoDS_Shape(compsolid);
update_bounding_box();
//unset marks.
DLIList<OCCCurve*> curves;
DLIList<OCCPoint*> points;
get_all_curves(curves);
get_all_points(points);
for(int i = 0; i < curves.size(); i++)
curves.get_and_step()->set_myMarked(CUBIT_FALSE);
for(int i = 0; i < points.size(); i++)
points.get_and_step()->set_myMarked(CUBIT_FALSE);
return CUBIT_SUCCESS;
}
示例5: process_rounds
void SimplifyTool::process_rounds(RefVolume* ref_volume,
double min_radius,
double max_radius)
{
DLIList<RefEdge*> edges;
ref_volume->ref_edges(edges);
DLIList<RefFace*> rounds;
// a edge must have curvature within the tolerance
for(int j = edges.size();j--;)
{
RefEdge* edge = edges.get_and_step();
CubitVector loc,tan,curv;
edge->closest_point(edge->curve_center(),loc,&tan,&curv);
double curv_mag = curv.length();
if(curv_mag > GEOMETRY_RESABS &&
1.0/curv_mag >= min_radius &&
1.0/curv_mag <= max_radius)
{
DLIList<RefFace*> new_rounds;
edge->ref_faces(new_rounds);
rounds+=new_rounds;
}
}
rounds.uniquify_unordered();
for(int i = rounds.size();i--;)
{
// cull any flat surfaces
RefFace* curr_face = rounds.get_and_step();
double curve_0,curve_1;
curr_face->get_principal_curvatures(curr_face->center_point(),curve_0,curve_1);
curve_0 = fabs(curve_0);
curve_1 = fabs(curve_1);
if((curve_0 > GEOMETRY_RESABS &&
1.0/curve_0 >= min_radius &&
1.0/curve_0 <= max_radius) ||
(curve_1 > GEOMETRY_RESABS &&
1.0/curve_1 >= min_radius &&
1.0/curve_1 <= max_radius))
{
GfxDebug::highlight_ref_face(curr_face);
}
}
}
示例6: are_positions_on
void Surface::are_positions_on( DLIList<CubitVector *> &test_position_list,
DLIList<CubitBoolean *> &is_on_list )
{
CubitVector *test_position;
CubitBoolean *is_on;
test_position_list.reset();
is_on_list.reset();
for (int i=0; i<test_position_list.size(); i++)
{
test_position = test_position_list.get_and_step();
is_on = is_on_list.get_and_step();
*is_on = is_position_on( *test_position );
}
}
示例7: closest_points_trimmed
void Surface::closest_points_trimmed(DLIList<CubitVector *> &from_point_list,
DLIList<CubitVector *> &point_on_surface_list)
{
CubitVector *from_point;
CubitVector *point_on_surface;
from_point_list.reset();
point_on_surface_list.reset();
for (int i=0; i<from_point_list.size(); i++)
{
from_point = from_point_list.get_and_step();
point_on_surface = point_on_surface_list.get_and_step();
closest_point_trimmed( *from_point, *point_on_surface );
}
}
示例8: same_healer_engine
//-----------------------------------------------------------------------------
// Purpose : Determines if entities are from the same engine.
//
// Creator : Tyronne Lim (CAT)
//
// Creation Date : 08/01/03
//-----------------------------------------------------------------------------
CubitBoolean GeometryHealerTool::same_healer_engine( DLIList<TopologyEntity*> &topo_list ) const
{
GeometryHealerEngine *gePtr1 = get_engine(topo_list.get_and_step());
GeometryHealerEngine *gePtr2;
for (int i = 1; i < topo_list.size(); i++)
{
gePtr2 = get_engine(topo_list.get_and_step());
if (gePtr1 != gePtr2)
{
return CUBIT_FALSE;
}
}
return CUBIT_TRUE;
}
示例9: printDag
void DagDrawingTool::printDag(DLIList<ModelEntity*> &entity_list, int depth)
{
int i;
for (i = entity_list.size(); i > 0; i--) {
printDag(entity_list.get_and_step(), depth);
}
}
示例10: ChollaCurve
//==================================================================================
//Function: skin_1d (PUBLIC)
//Description: creates a skin of the given facet entities.
//==================================================================================
CubitStatus ChollaSkinTool::skin_1d(DLIList<FacetEntity*> &facet_list,
ChollaCurve *&facet_curve_mesh_ptr)
{
CubitStatus rv = CUBIT_SUCCESS;
// create a ChollaCurve if we have to (only if this is a 1D facet)
if (!facet_curve_mesh_ptr)
{
FacetEntity *edge_ptr = facet_list.get();
TDGeomFacet *td_gm = TDGeomFacet::get_geom_facet( edge_ptr );
facet_curve_mesh_ptr = new ChollaCurve( td_gm->get_block_id() );
// associate all of the tooldata on the faces of this surf with the
// new ChollaCurve
int ii;
for (ii=0; ii<facet_list.size(); ii++)
{
edge_ptr = facet_list.get_and_step();
facet_curve_mesh_ptr->add_facet( edge_ptr );
td_gm = TDGeomFacet::get_geom_facet( edge_ptr );
td_gm->add_cholla_curve( facet_curve_mesh_ptr );
}
}
// Note: the start and end points of this curve will be defined in
// ChollaCurve::split_curve. The BlockPointMesh objects at these points
// will be defined in MeshGeometryCreator::classify_node
return rv;
}
示例11: point_project
CubitStatus point_project()
{
GeometryQueryTool *gti = GeometryQueryTool::instance();
const char *argv = "box-w-hole.brep";
CubitStatus status = read_geometry(1, &argv);
if (status == CUBIT_FAILURE) exit(1);
DLIList<Body*> test_bodies;
gti->bodies(test_bodies);
DLIList<Surface*> surfaces;
BodySM* body = test_bodies.get()->get_body_sm_ptr();
body->surfaces(surfaces);
Surface* surf;
for (int i = 0 ; i < surfaces.size(); i++)
{
surf = surfaces.get_and_step();
double d = surf->measure();
if (d < 82.1 && d > 81.9)
break;
}
CubitVector point(1,1,-5);
CubitVector on_surf;
surf->closest_point_trimmed(point, on_surf);
assert (fabs(on_surf.z() + 5) < 0.0001);
assert (on_surf.y() < 1.001 && on_surf.y() > 0.999);
assert (on_surf.x() < 2.122 && on_surf.x() > 2.121 );
CubitVector p1(0, 1.5, -6 );
surf->closest_point_trimmed(p1, on_surf);
assert (fabs(on_surf.z() + 5) < 0.0001);
assert (on_surf.y() < 2.122 && on_surf.y() > 2.121);
assert (on_surf.x() < 0.0001 && on_surf.x() > -0.0001 );
return CUBIT_SUCCESS;
}
示例12: get_parents_virt
void OCCSurface::get_parents_virt( DLIList<TopologyBridge*>& parents )
{
if(myShell) //shell or sheet body
{
parents.append(myShell);
return;
}
OCCQueryEngine* oqe = (OCCQueryEngine*) get_geometry_query_engine();
OCCBody * body = NULL;
DLIList <OCCBody* > *bodies = oqe->BodyList;
TopTools_IndexedDataMapOfShapeListOfShape M;
for(int i = 0; i < bodies->size(); i++)
{
body = bodies->get_and_step();
TopExp::MapShapesAndAncestors(*(body->get_TopoDS_Shape()),
TopAbs_FACE, TopAbs_SHELL, M);
if(!M.Contains(*(get_TopoDS_Face())))
continue;
const TopTools_ListOfShape& ListOfShapes =
M.FindFromKey(*(get_TopoDS_Face()));
if (!ListOfShapes.IsEmpty())
{
TopTools_ListIteratorOfListOfShape it(ListOfShapes) ;
for (;it.More(); it.Next())
{
TopoDS_Shell Shell = TopoDS::Shell(it.Value());
int k = oqe->OCCMap->Find(Shell);
parents.append((OCCShell*)(oqe->OccToCGM->find(k))->second);
}
}
}
}
示例13: simplify_volumes
CubitStatus SimplifyTool::simplify_volumes(DLIList<RefVolume*> ref_volume_list,
double surf_angle_in,
DLIList<RefFace*> respect_face_list,
DLIList<RefEdge*> respect_edge_list,
CubitBoolean respect_rounds,
CubitBoolean respect_imprints,
CubitBoolean local_normals,
CubitBoolean preview)
{
ref_volume_list.uniquify_unordered();
for(int i = ref_volume_list.size();i--;)
simplify_volume(
ref_volume_list.get_and_step(),
surf_angle_in,
respect_face_list,
respect_edge_list,
respect_rounds,
respect_imprints,
local_normals,
preview);
if(preview)
GfxDebug::flush();
return CUBIT_SUCCESS;
}
示例14: bounding_range
void PointGridSearch::bounding_range(DLIList<CubitPoint*>& point_list)
{
if ( !point_list.size() )
return;
// initialize min and max range values to the first point coordinates
boundingRangeMinimum = point_list.get()->coordinates();
boundingRangeMaximum = point_list.get_and_step()->coordinates();
// find the min and max coordinates that completely encloses the
// point list
for (int i = 1; i < point_list.size(); i++)
bounding_range(point_list.get_and_step());
}
示例15: merge_prepare
void CAMergePartner::merge_prepare(DLIList<RefEntity*> &merge_list)
{
DLIList<CubitAttrib*> my_ca_list;
CAMergePartner *my_camp_ptr;
RefEntity* re_ptr;
// get all the merge partner attributes that are on my owner
attribOwnerEntity->find_cubit_attrib_type(CA_MERGE_PARTNER, my_ca_list);
merge_list.clean_out();
DLIList<ToolDataUser*> td_list, temp_td_list;
int i;
for (i = my_ca_list.size(); i > 0; i--)
{
my_camp_ptr = CAST_TO(my_ca_list.get(),CAMergePartner);
my_ca_list.step();
td_list.clean_out();
// get all the objects with this unique id (which is also the merge id)
TDUniqueId::find_td_unique_id(my_camp_ptr->merge_id(), temp_td_list);
td_list += temp_td_list;
}
// now put those entities into the merge_list
for (i = td_list.size(); i > 0; i--)
{
re_ptr = CAST_TO(td_list.get(), RefEntity);
if (re_ptr)
{
CubitAttrib *tmp_attrib = re_ptr->get_cubit_attrib( CA_MERGE_PARTNER, CUBIT_FALSE );
if( tmp_attrib )
merge_list.append(re_ptr);
}
td_list.step();
}
// Now get bridge sense for each entity in list.
// Add this entity to list, too.
merge_list.append( attribOwnerEntity );
for( i = merge_list.size(); i--; )
{
RefEntity* ent = merge_list.get_and_step();
TopologyEntity* te = dynamic_cast<TopologyEntity*>(ent);
if( te->bridge_manager()->number_of_bridges() != 1 )
continue;
my_ca_list.clean_out();
ent->find_cubit_attrib_type(CA_MERGE_PARTNER, my_ca_list);
assert( my_ca_list.size() < 2);
if( !my_ca_list.size() )
continue;
my_camp_ptr = dynamic_cast<CAMergePartner*>(my_ca_list.get());
if( my_camp_ptr->bridge_sense() == CUBIT_UNKNOWN )
continue;
}
merge_list.pop(); // take attribOwnerEntity back off list
return;
}