def instances(self): """ Returns all Instances of this Wall Types """ bip = BipEnum.get_id('SYMBOL_NAME_PARAM') param_filter = rpw.collector.ParameterFilter(bip, equals=self.name) return rpw.Collector(of_class=DB.Wall, parameter_filter=param_filter, is_not_type=True).elements
def collector_helper(filters): logger.debug('{}'.format(filters)) collector = rpw.Collector(**filters) elements = collector.elements logger.debug(collector) logger.debug(collector.first) return collector
def setUp(self): collector = rpw.Collector() self.wall = collector.filter(of_class='Wall').first self.wrapped_wall = rpw.Element(self.wall) with rpw.Transaction('Set Comment'): self.wrapped_wall.parameters['Comments'].value = 'Tests' self.wrapped_wall.parameters['Unconnected Height'].value = 12.0 # BIP Ids self.param_id_height = rpw.BipEnum.get_id('WALL_USER_HEIGHT_PARAM') self.param_id_location = rpw.BipEnum.get_id('WALL_KEY_REF_PARAM') self.param_id_comments = rpw.BipEnum.get_id( 'ALL_MODEL_INSTANCE_COMMENTS') self.param_id_level_name = rpw.BipEnum.get_id('DATUM_TEXT')
def test_collector_symbol_filter(self): desk_types = rpw.Collector(of_class='FamilySymbol', of_category="OST_Furniture").elements self.assertEqual(len(desk_types), 3) all_symbols = rpw.Collector(of_class='FamilySymbol').elements self.assertGreater(len(all_symbols), 3) all_symbols = rpw.Collector(of_class='FamilySymbol').elements #Placed Twice first_symbol = rpw.Collector(symbol=desk_types[0]).elements self.assertEqual(len(first_symbol), 2) #Placed Once second_symbol = rpw.Collector(symbol=desk_types[1]).elements self.assertEqual(len(second_symbol), 1) second_symbol = rpw.Collector(of_class='Wall', symbol=desk_types[1]).elements self.assertEqual(len(second_symbol), 0)
def tests_param_name_ends(self): parameter_filter = rpw.ParameterFilter(self.param_id_level_name, ends='1') col = rpw.Collector(of_category="OST_Levels", parameter_filter=parameter_filter) self.assertEqual(len(col), 1)
selection = rpw.Selection() selected_views = [e for e in selection.elements if isinstance(e, DB.View)] if platform.get('revit') != '2015': UI.TaskDialog.Show('API Change', str('This Tool only works for Revit 2015')) sys.exit() if not selected_views: UI.TaskDialog.Show( 'Set Underlay', 'Must have a view actively selected in Project Browser.') __window__.Close() sys.exit() levels = rpw.Collector(of_category='OST_Levels', is_not_type=True).elements levels_dict = {level.Name: level.Id for level in levels} levels_dict['None'] = DB.ElementId.InvalidElementId form = rpw.forms.SelectFromList('Select Underlay', levels_dict.keys(), description="Select a Level") form.show() if not form.selected: __window__.Close() sys.exit() selected_underlay_id = levels_dict[form.selected] with rpw.Transaction('Batch Set Underlay to None'): for view in selected_views:
def symbols(self): symbols = rpw.Collector(of_class=DB.WallType, is_type=True).elements return [ symbol for symbol in symbols if symbol.Kind == self._revit_object ]
def instances(self): """Returns: [``DB.FamilyInstance``]: List of Symbol Instances in the Category (unwrapped) """ return rpw.Collector(of_category=self._builtin_enum, is_not_type=True).elements
def instances(self): """Returns: [``DB.FamilyInstance``]: List of model instances of the symbol (unwrapped) """ return rpw.Collector(symbol=self._revit_object.Id, is_not_type=True).elements
def setUp(self): wall = rpw.Collector(of_class='Wall', is_not_type=True).first self.wall = rpw.WallInstance(wall)
def tearDown(self): collector = rpw.Collector() levels = rpw.Collector(of_class=DB.Level).elements with rpw.Transaction('Delete Test Levels'): for level in levels[1:]: doc.Delete(level.Id)
def setUp(self): self.wall = rpw.Collector(of_class='Wall').first self.wrapped_wall = rpw.Element(self.wall)
def test_collector_scope_element_ids(self): wall = rpw.Collector(of_class='Wall').first collector = rpw.Collector(element_ids=[wall.Id], of_class='View') self.assertEqual(len(collector), 0)
def test_collector_scope_elements(self): """ If Collector scope is list of elements, should not find View""" wall = rpw.Collector(of_class='Wall').first collector = rpw.Collector(elements=[wall], of_class='View') self.assertEqual(len(collector), 0)
def tests_collect_rooms(self): collector = rpw.Collector(of_category='OST_Rooms') if collector: self.assertIsInstance(collector.first, DB.SpatialElement) collector = rpw.Collector(of_class='SpatialElement') self.assertIsInstance(collector.first, DB.Architecture.Room)
def setUp(self): collector = rpw.Collector() self.wall = collector.filter(of_class='Wall').first
def setUp(self): instance = rpw.Collector(of_category='OST_Furniture', is_not_type=True).first self.instance = rpw.Instance(instance)
def test_param_filter_float_less_yes(self): parameter_filter = rpw.ParameterFilter(self.param_id_height, less=15.0) col = rpw.Collector(of_class="Wall", parameter_filter=parameter_filter) self.assertEqual(len(col), 1)
import sys import pickle from tempfile import gettempdir import rpw from rpw import doc, uidoc, DB, UI from viewport_wrapper import Point, ViewPortWrapper from viewport_wrapper import Point, ViewPortWrapper, move_to_match_vp_placment tempfile = os.path.join(gettempdir(), 'ViewPlacement') selection = rpw.Selection() try: with open(tempfile, 'rb') as fp: pt = pickle.load(fp) except IOError: UI.TaskDialog.Show('pyRevitPlus', 'Could not find saved viewport placement.\nCopy a Viewport Placement first.') sys.exit() else: saved_pt = DB.XYZ(pt.X, pt.Y, pt.Z) for viewsheet in [e for e in selection.elements if isinstance(e, DB.ViewSheet)]: viewports = rpw.Collector(view=viewsheet, of_class='Viewport').elements for viewport in viewports: view = doc.GetElement(viewport.ViewId) if isinstance(view, DB.ViewPlan): move_to_match_vp_placment(viewport, saved_pt) break __window__.Close()
def test_param_filter_float_not_equal(self): parameter_filter = rpw.ParameterFilter(self.param_id_height, not_equals=12.0) col = rpw.Collector(of_class="Wall", parameter_filter=parameter_filter) self.assertEqual(len(col), 0)
def symbols(self): """Returns: [``DB.FamilySymbol``]: List of Symbol Types in the Category (unwrapped) """ return rpw.Collector(of_category=self._builtin_enum, is_type=True).elements
def test_param_filter_float_multi_filter(self): parameter_filter = rpw.ParameterFilter(self.param_id_height, greater=10.0, not_less=14.0) col = rpw.Collector(of_class="Wall", parameter_filter=parameter_filter) self.assertEqual(len(col), 0)
def test_param_filter_int_less(self): parameter_filter = rpw.ParameterFilter(self.param_id_location, less=3) col = rpw.Collector(of_class="Wall", parameter_filter=parameter_filter) self.assertEqual(len(col), 1)
def test_param_comments_equals(self): parameter_filter = rpw.ParameterFilter(self.param_id_comments, equals='Tests') col = rpw.Collector(of_class="Wall", parameter_filter=parameter_filter) self.assertEqual(len(col), 1)
def category(self): wall_type = rpw.Collector(of_class=DB.WallType, is_type=True).first return WallCategory(wall_type.Category)
def test_param_comments_not_begins(self): parameter_filter = rpw.ParameterFilter(self.param_id_comments, not_begins='Bla bla') col = rpw.Collector(of_class="Wall", parameter_filter=parameter_filter) self.assertEqual(len(col), 1)
import rpw from rpw import doc, uidoc, DB, UI, platform DEFAULT_CROP = '0.75' # About 9" # Validate + Filter Selection selection = rpw.Selection() selected_rooms = [e for e in selection.elements if isinstance(e, Room)] if not selected_rooms: UI.TaskDialog.Show('MakeViews', 'You need to select at lest one Room.') sys.exit() # Get View Types and Prompt User plan_types = rpw.Collector(of_class='ViewFamilyType', is_type=True).elements # Filter all view types that are FloorPlan or CeilingPlan plan_types_options = { DB.Element.Name.GetValue(t): t for t in plan_types if t.ViewFamily == DB.ViewFamily.FloorPlan or t.ViewFamily == DB.ViewFamily.CeilingPlan } form = rpw.forms.SelectFromList('MakeViews', plan_types_options.keys(), description='Select View Type') form.show() if not form.selected: __window__.Close()
import os from collections import namedtuple from Autodesk.Revit.DB.Architecture import Room import rpw from rpw import doc, uidoc, DB, UI selection = rpw.Selection() selected_rooms = [e for e in selection.elements if isinstance(e, Room)] if not selected_rooms: UI.TaskDialog.Show('MakeFloors', 'You need to select at lest one Room.') sys.exit() floor_types = rpw.Collector(of_category='OST_Floors', is_type=True).elements floor_type_options = {DB.Element.Name.GetValue(t): t for t in floor_types} form = rpw.forms.SelectFromList('Make Floors', floor_type_options.keys(), description='Select Floor Type') form.show() if not form.selected: __window__.Close() sys.exit() floor_type_id = floor_type_options[form.selected].Id @rpw.Transaction.ensure('Make Floor')