Index: ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTK.py =================================================================== --- ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTK.py (revision 25482) +++ ../trunk-jpl/src/m/contrib/defleurian/paraview/exportVTK.py (revision 25483) @@ -142,55 +142,56 @@ raise BadDimension('exportVTK does not support dimension {}'.format(dim)) if 'clipping' in kwargs.keys(): - # first get the boundaries and check them - [Xmin, Xmax, Ymin, Ymax] = kwargs['clipping'] - if Xmin > Xmax: - raise ClipError('Xmax ({}) should be larger than Xmin ({})'.format(Xmax, Xmin)) - if Ymin > Ymax: - raise ClipError('Ymax ({}) should be larger than Ymin ({})'.format(Ymax, Ymin)) - if Xmin > np.nanmax(points[:, 0]) or Xmax < np.nanmin(points[:, 0]): - raise ClipError('Your X boundaries [{}, {}] are outside of the model domain [{},{}]'.format(Xmin, Xmax, np.nanmin(points[:, 0]), np.nanmax(points[:, 0]))) - if Ymin > np.nanmax(points[:, 1]) or Ymax < np.nanmin(points[:, 1]): - raise ClipError('Your Y boundaries [{}, {}] are outside of the model domain [{},{}]'.format(Ymin, Ymax, np.nanmin(points[:, 1]), np.nanmax(points[:, 1]))) + if kwargs['clipping'] is not None: + # first get the boundaries and check them + [Xmin, Xmax, Ymin, Ymax] = kwargs['clipping'] + if Xmin > Xmax: + raise ClipError('Xmax ({}) should be larger than Xmin ({})'.format(Xmax, Xmin)) + if Ymin > Ymax: + raise ClipError('Ymax ({}) should be larger than Ymin ({})'.format(Ymax, Ymin)) + if Xmin > np.nanmax(points[:, 0]) or Xmax < np.nanmin(points[:, 0]): + raise ClipError('Your X boundaries [{}, {}] are outside of the model domain [{},{}]'.format(Xmin, Xmax, np.nanmin(points[:, 0]), np.nanmax(points[:, 0]))) + if Ymin > np.nanmax(points[:, 1]) or Ymax < np.nanmin(points[:, 1]): + raise ClipError('Your Y boundaries [{}, {}] are outside of the model domain [{},{}]'.format(Ymin, Ymax, np.nanmin(points[:, 1]), np.nanmax(points[:, 1]))) - #boundaries should be fine lets do stuff - InX = np.where(np.logical_and(points[:, 0] >= Xmin, points[:, 0] <= Xmax)) - InY = np.where(np.logical_and(points[:, 1] >= Ymin, points[:, 1] <= Ymax)) + #boundaries should be fine lets do stuff + InX = np.where(np.logical_and(points[:, 0] >= Xmin, points[:, 0] <= Xmax)) + InY = np.where(np.logical_and(points[:, 1] >= Ymin, points[:, 1] <= Ymax)) - Isinside = np.zeros(np.shape(points)[0], dtype=bool) - clip_convert_index = np.nan * np.ones(np.shape(points)[0]) + Isinside = np.zeros(np.shape(points)[0], dtype=bool) + clip_convert_index = np.nan * np.ones(np.shape(points)[0]) - Inclipping = np.intersect1d(InX, InY) - Isinside[Inclipping] = True - points = points[Inclipping, :] - num_of_points = np.shape(points)[0] + Inclipping = np.intersect1d(InX, InY) + Isinside[Inclipping] = True + points = points[Inclipping, :] + num_of_points = np.shape(points)[0] - clipconnect = np.asarray([], dtype=int) - for elt in connect: - if set(elt).issubset(Inclipping): - clipconnect = np.append(clipconnect, elt, axis=0) + clipconnect = np.asarray([], dtype=int) + for elt in connect: + if set(elt).issubset(Inclipping): + clipconnect = np.append(clipconnect, elt, axis=0) - num_of_elt = int(np.size(clipconnect) / 3) - connect = clipconnect.reshape(num_of_elt, 3) + num_of_elt = int(np.size(clipconnect) / 3) + connect = clipconnect.reshape(num_of_elt, 3) - clip_convert_index = np.asarray([[i, np.where(Inclipping == i)[0][0]] for i, val in enumerate(clip_convert_index) if any(Inclipping == i)]) - enveloppe_index = enveloppe_index[clip_convert_index[:, 0]] - for elt in range(0, num_of_elt): - try: - connect[elt, 0] = clip_convert_index[np.where(clip_convert_index == connect[elt, 0])[0], 1][0] - except IndexError: - connect[elt, 0] = -1 - try: - connect[elt, 1] = clip_convert_index[np.where(clip_convert_index == connect[elt, 1])[0], 1][0] - except IndexError: - connect[elt, 1] = -1 - try: - connect[elt, 2] = clip_convert_index[np.where(clip_convert_index == connect[elt, 2])[0], 1][0] - except IndexError: - connect[elt, 2] = -1 + clip_convert_index = np.asarray([[i, np.where(Inclipping == i)[0][0]] for i, val in enumerate(clip_convert_index) if any(Inclipping == i)]) + enveloppe_index = enveloppe_index[clip_convert_index[:, 0]] + for elt in range(0, num_of_elt): + try: + connect[elt, 0] = clip_convert_index[np.where(clip_convert_index == connect[elt, 0])[0], 1][0] + except IndexError: + connect[elt, 0] = -1 + try: + connect[elt, 1] = clip_convert_index[np.where(clip_convert_index == connect[elt, 1])[0], 1][0] + except IndexError: + connect[elt, 1] = -1 + try: + connect[elt, 2] = clip_convert_index[np.where(clip_convert_index == connect[elt, 2])[0], 1][0] + except IndexError: + connect[elt, 2] = -1 - connect = connect[np.where(connect != -1)[0], :] - num_of_elt = np.shape(connect)[0] + connect = connect[np.where(connect != -1)[0], :] + num_of_elt = np.shape(connect)[0] # }}} # write header and mesh {{{