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();
}