Modification of symbol array - sands

  def a_sands (expr p) =
    T:=identity;
    pickup PenC;
    path q; q = bbox p;
    picture tmp_pic;
    tmp_pic := image(
      for i = xpart llcorner q step 0.4u until xpart urcorner q:
        for j = ypart llcorner q step 0.4u until ypart urcorner q:
          draw origin shifted ((i,j) randomized 0.3u) withpen PenC;
        endfor;
      endfor;
    );
    #clip tmp_pic to p;
    draw tmp_pic;
  enddef;
  endcode  

There could be a complication with symbol sands you will not see modified symbol in Acrobat Reader. It is a problem of Acrobat Reader. It is possible for pdfs only change the value for generation of map:

  def a_sands (expr p) =
    T:=identity;
    pickup PenA;
    path q; q = bbox p;
    picture tmp_pic;
    tmp_pic := image(
      for i = xpart llcorner q step 0.4u until xpart urcorner q:
        for j = ypart llcorner q step 0.4u until ypart urcorner q:
          draw origin shifted ((i,j) randomized 0.3u) withpen PenA;
        endfor;
      endfor;
    );
    #clip tmp_pic to p;
    draw tmp_pic;
  enddef;
  endcode  

We changed only the keyword PenC to PenA. You will see the points of sand in Reader now.