Source code for g3d.mesh.geo.region.xyz_region

"""XYZRegion class definition"""
from typing import Any

import os

if os.environ.get('__USE_CUDA', '0') == '1':
    import cupy as np
    from cupy import ndarray
else:
    import numpy as np
    from numpy import ndarray

from g3d.defs import FunctionByPass
from g3d.mesh.geo.region import Region
from g3d.mesh.geo import Coord


[docs] class XYZRegion(Region): def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) self._x1 = 0. self._y1 = 0. self._z1 = 0. self._x2 = 0. self._y2 = 0. self._z2 = 0. def _set_default(self) -> None: super()._set_default() self._tag = 'xyz_region' def _set_from_args(self, *args: Any, **kwargs: Any) -> ndarray: bps = self._get_function_evaluate_status(**kwargs) if bps is FunctionByPass.SELF: args_stat = np.ones(len(args)) else: args_stat = super()._set_from_args(*args) if bps in [FunctionByPass.EVALUATE, FunctionByPass.SELF]: if np.sum(args_stat) > 0: r_def = [] for i in range(len(args)): if args_stat[i] == 1: arg = args[i] if type(arg) in [float, np.float64, np.float32, int, np.int64, np.int32]: args_stat[i] = 0 r_def.append(np.float64(arg)) elif type(arg) is XYZRegion: # if caught by a super class, the child class instance of copy will be used args_stat[i] = 0 self.copy(arg) elif type(arg) is list: args_stat[i] = 0 if len(arg) == 6: self._x1, self._x2, self._y1, self._y2, self._z1, self._z2 = arg elif len(arg) == 4: self._x1, self._x2, self._y1, self._y2 = arg elif len(arg) == 2: self._x1, self._x2 = arg if len(r_def) >= 2: # will be caught by the for-loop below in a sub call to _set_from_args self._set_from_args(r_def, bps=FunctionByPass.SELF) return args_stat
[docs] def set_from_key_value(self, key: str, value: Any) -> bool: if super().set_from_key_value(key, value): return True elif key == 'x1': self._x1 = value return True elif key == 'x2': self._x2 = value return True elif key == 'y1': self._y1 = value return True elif key == 'y2': self._y2 = value return True elif key == 'z1': self._z1 = value return True elif key == 'z2': self._z2 = value return True return False
@property def x1(self) -> float: """ :return: """ return self._x1 @x1.setter def x1(self, val: float) -> None: self._x1 = val @property def x2(self) -> float: """ :return: """ return self._x2 @x2.setter def x2(self, val: float) -> None: self._x2 = val @property def y1(self) -> float: """ :return: """ return self._y1 @y1.setter def y1(self, val: float) -> None: self._y1 = val @property def y2(self) -> float: """ :return: """ return self._y2 @y2.setter def y2(self, val: float) -> None: self._y2 = val @property def z1(self) -> float: """ :return: """ return self._z1 @z1.setter def z1(self, val: float) -> None: self._z1 = val @property def z2(self) -> float: """ :return: """ return self._z2 @z2.setter def z2(self, val: float) -> None: self._z2 = val
[docs] def copy(self, r: 'XYZRegion') -> None: super().copy(r) self._x1 = r.x1 self._x2 = r.x2 self._y1 = r.y1 self._y2 = r.y2 self._z1 = r.z1 self._z2 = r.z2
[docs] def coord_is_in_region(self, c: Coord) -> bool: """ :param c: :return: """ return False
[docs] def print(self) -> None: print('x range: from %f to %f' % (self._x1, self._x2)) print('y range: from %f to %f' % (self._y1, self._y2)) print('z range: from %f to %f' % (self._z1, self._z2))