Source code for honeybee_radiance_command.oconv

"""oconv command."""
from .options.oconv import OconvOptions
from ._command import Command
import warnings
import honeybee_radiance_command._typing as typing


[docs]class Oconv(Command): """Oconv command. Oconv adds each scene description input to octree and sends the result to the standard output. Each input can be either a file name, or a command (enclosed in quotes and preceded by a '!'). Similarly, the octree input may be given as a command preceded by a '!'. If any of the surfaces will not fit in octree, an error message is printed and the program aborts. If no octree is given, a new one is created large enough for all of the surfaces. Args: options: Oconv command options. It will be set to Radiance default values if unspecified. output: Output file (Default: None). inputs: A collection of scene files (Default: None) Properties: * options * output * input """ __slots__ = ('_inputs',) def __init__(self, options=None, output=None, inputs=None): """Initialize Command.""" Command.__init__(self, output=output) self.inputs = inputs or [] self.options = options @property def options(self): """Oconv options.""" return self._options @options.setter def options(self, value): if value is None: value = OconvOptions() if not isinstance(value, OconvOptions): raise ValueError('Expected OconvOptions not {}'.format(type(value))) self._options = value @property def inputs(self): """Input files. Get and set inputs files. """ return self._inputs @inputs.setter def inputs(self, value): # ensure inputs is a list of values if not isinstance(value, (list, tuple)): raise ValueError( 'Scene must be a collection of path to input files' ' not a {}'.format(type(value)) ) self._inputs = [typing.normpath(f) for f in value]
[docs] def to_radiance(self, stdin_input=False): """Oconv in Radiance format. Args: stdin_input: A boolean that indicates if the input for this command comes from stdin. This is for instance the case when you pipe the input from another command (default: False). """ self.validate() command_parts = [self.command] if self.options: command_parts.append(self.options.to_radiance()) command_parts.append('-' if stdin_input else ' '.join(self.inputs)) cmd = ' '.join(command_parts) if self.pipe_to: cmd = ' | '.join((cmd, self.pipe_to.to_radiance(stdin_input=True))) elif self.output: cmd = ' > '.join((cmd, self.output)) return ' '.join(cmd.split())
[docs] def validate(self): Command.validate(self) if len(self.inputs) == 0: warnings.warn('oconv: no inputs. the scene will be empty.')