Source code for honeybee_radiance.putil

"""Primitive utility functions."""
from honeybee_radiance.mutil import modifier_class_from_type_string
import honeybee_radiance.geometry as geometry
from honeybee_radiance.primitive import Primitive


[docs]def primitive_class_from_type_string(type_string): """Get the class of any primitive using its 'type' string. Note that this function returns the class itself and not a class instance. Args: type_string: Text for the name of a primitive module/class. This should usually be lowercase and should be the same as the 'type' key used in the dictionary representation of the primitive. """ if type_string in Primitive.GEOMETRYTYPES: target_module = geometry else: try: return modifier_class_from_type_string(type_string) except ValueError: raise NotImplementedError( 'Honeybee currently does not support %s' % type_string) class_name = type_string.capitalize() return getattr(target_module, class_name)
[docs]def dict_to_primitive(pdict): """Convert a dictionary representation of any primitive to a class instance. The returned object will have the correct class type and will not be the generic Primitive base class. Note that this function is recursive and will re-serialize modifiers of modifiers. Args: pdict: A dictionary of any Radiance Primitive (Geometry or Modifier). """ primitive_class = primitive_class_from_type_string(pdict['type']) if 'values' in pdict: return primitive_class.from_primitive_dict(pdict) else: return primitive_class.from_dict(pdict)