docs: def isInside(self, pts, In='(X,Y,Z)', log='any'):
          """ Return a 2D array of bool
  
          Equivalent to applying isInside to each Struct
          Check self.lStruct[0].isInside? for details
  
          Arg log determines how Struct with multiple Limits are treated
              - 'all' : True only if pts belong to all elements
              - 'any' : True if pts belong to any element
          """
          msg = "Arg pts must be a 1D or 2D np.ndarray !"
          assert isinstance(pts,np.ndarray) and pts.ndim in [1,2], msg
          msg = "Arg log must be in ['any','all']"
          assert log in ['any','all'], msg
          if pts.ndim==1:
              msg = "Arg pts must contain the coordinates of a point !"
              assert pts.size in [2,3], msg
              pts = pts.reshape((pts.size,1)).astype(float)
          else:
              msg = "Arg pts must contain the coordinates of points !"
              assert pts.shape[0] in [2,3], pts
          nP = pts.shape[1]
  
          ind = np.zeros((self._dStruct['nObj'],nP), dtype=bool)
          lStruct = self.lStruct
          for ii in range(0,self._dStruct['nObj']):
              indi = _GG._Ves_isInside(pts,
                                       lStruct[ii].Poly,
                                       Lim=lStruct[ii].Lim,
                                       nLim=lStruct[ii].noccur,
                                       VType=lStruct[ii].Id.Type,
                                       In=In, Test=True)
              if lStruct[ii].noccur>1:
                  if log=='any':
                      indi = np.any(indi,axis=0)
                  else:
                      indi = np.all(indi,axis=0)
              ind[ii,:] = indi
          return ind