Source code for honeybee_plus.radiance.radparser

"""A collection of auxiliary funtions for working with radiance files and objects."""
import re
import os


# support comments [#] and commands [!]
[docs]def parse_from_string(full_string): """ separate a Radiance file string into multiple strings for each object. Args: rad_fileString: Radiance data as a single string. The string can be multiline. Returns: A list of strings. Each string represents a different Radiance Object """ raw_rad_objects = re.findall( r'^\s*([^0-9].*(\s*[\d.-]+.*)*)', full_string, re.MULTILINE) rad_objects = (' '.join(radiance_object[0].split()) for radiance_object in raw_rad_objects) filtered_objects = tuple(rad_object for rad_object in rad_objects if rad_object and rad_object[0] not in ['#', '!']) return filtered_objects
[docs]def parse_from_file(file_path): """ Parse Radiance file and return a list of radiance objects as separate strings. Args: file_path: Path to Radiance file Returns: A list of strings. Each string represents a different Radiance Object Usage: get_radiance_objects_from_file("C:/ladybug/21MAR900/imageBasedSimulation/21MAR900.rad") """ assert os.path.isfile(file_path), "Can't find %s." % file_path with open(file_path, "r") as rad_file: return parse_from_string(rad_file.read())