Source code for mastoron.level

import revitron
from revitron import _


[docs]class Level: def __init__(self): pass
[docs] @staticmethod def getLevelName(element, levels, min=True): """ Gets the closest level to given object. Args: element (object): Revit element levels (object): A list of Revit level elements Returns: string: The level name """ levelName = Level._get(element, levels, _return='name', min=min) return levelName
[docs] @staticmethod def getLevel(element, levels, min=True): """ Gets the closest level to given object. Args: element (object): Revit element levels (object): A list of Revit level elements Returns: object: The level """ level = Level._get(element, levels, _return='element', min=min) return level
[docs] @staticmethod def getDistance(element, levels, min=True): """ Gets the closest level to given object. Args: element (object): Revit element levels (object): A list of Revit level elements Returns: float: The distance to the level """ distance = Level._get(element, levels, _return='distance', min=min) return distance
@staticmethod def _get(element, levels, _return, min=True): """ Performs a geometrical test to determine the closest level for the element's bounding box z-min. Args: element (object): Revit element levels (object): A list of Revit level elements _return (string): Returntype: 'element', 'name' Returns: varied: The level element, the level name """ if min == True: z = _(element).getBbox().Min[2] if min == False: z = _(element).getBbox().Max[2] bestMatch = 99999.0 levelMatch = None for level in levels: distance = abs(int(level.Elevation) - int(z)) if int(bestMatch) > distance: levelMatch = level bestMatch = distance if _return == 'element': return levelMatch if _return == 'name': return levelMatch.Name if _return == 'distance': return bestMatch