virtual bool accept(CBsimplex* s) const { if (!is_face(s)) return false; HatchingSimplexDataFixed *hsdf = HatchingSimplexDataFixed::find((Bface *)s); if ((hsdf) && (hsdf->exists(_hgf))) return true; return false; }
///////////////////////////////////// // clear_visibility() ///////////////////////////////////// void HatchingGroupFixed::clear_visibility(void) { vector<Bface*>::size_type k; int ctr=0, kctr=0; const vector<Bface*>& faces = _patch->cur_faces(); for (k=0; k<faces.size(); k++) { HatchingSimplexDataFixed *hsdf = HatchingSimplexDataFixed::find(faces[k]); if (hsdf) { if(hsdf->exists(this)) { hsdf->remove(this); ctr++; if (hsdf->num()==0) { faces[k]->rem_simplex_data(hsdf); kctr++; delete hsdf; } } } } err_mesg(ERR_LEV_INFO, "HatchingGroupFixed:clear_visibility - Removed from %d faces.", ctr); err_mesg_cond((kctr>0), ERR_LEV_INFO, "HatchingGroupFixed:clear_visibility - Removed %d empty HatchingSimplexDataFixed's.", kctr); _complete = false; _group->patch()->changed(); }
///////////////////////////////////// // query_pick() ///////////////////////////////////// bool HatchingGroupFixed::query_pick(CNDCpt &pt) { Wpt foo; Bface *f; HatchingSimplexDataFixed *hsdf; if (!_complete) return false; f = find_face_vis(pt,foo); if (f) { hsdf = HatchingSimplexDataFixed::find(f); if (hsdf) { if (hsdf->exists(this)) { return true; } } } return false; }
///////////////////////////////////// // put_visibility() ///////////////////////////////////// void HatchingGroupFixed::put_visibility(TAGformat &d) const { err_mesg(ERR_LEV_SPAM, "HatchingGroupFixed::put_visibility()"); BMESHptr m = _patch->mesh(); LMESHptr lm = dynamic_pointer_cast<LMESH>(m); if (lm) m = lm->cur_mesh(); Bface_list::size_type k; vector<int> indices; CBface_list& faces = m->faces(); for (k=0; k< faces.size(); k++) { HatchingSimplexDataFixed *hsdf = HatchingSimplexDataFixed::find(faces[k]); if (hsdf) { if (hsdf->exists(this)) indices.push_back(faces[k]->index()); } } err_mesg(ERR_LEV_SPAM, "HatchingGroupFixed::put_visibility() - Stored %d tri indices.", indices.size()); d.id(); *d << indices; d.end_id(); }