def setUpModule(): logger.title('SETTING UP TESTS...') logger.title('REVIT {}'.format(version)) collector = DB.FilteredElementCollector(doc) walls = collector.OfClass(DB.Wall).ToElements() if walls: t = DB.Transaction(doc, 'Delete Walls') t.Start() for wall in walls: doc.Delete(wall.Id) t.Commit() collector = DB.FilteredElementCollector(doc) level = collector.OfClass(DB.Level).FirstElement() pt1 = DB.XYZ(0, 0, 0) pt2 = DB.XYZ(20, 20, 0) wall_line = DB.Line.CreateBound(pt1, pt2) t = DB.Transaction(doc, 'Add Wall') t.Start() wall = DB.Wall.Create(doc, wall_line, level.Id, False) t.Commit() global wall_int wall_int = wall.Id.IntegerValue logger.debug('WALL CREATED.') collector = DB.FilteredElementCollector(doc) desk = collector.OfCategory( DB.BuiltInCategory.OST_Furniture).FirstElement() if desk: with rpw.Transaction('Delete Desk'): f = desk.Family doc.Delete(f.Id) ################################################## # Load Fixture Family and Place Instances ################################################## logger.debug('LOADING SYMBOl') family_path = os.path.join(test_dir, 'fixtures', 'desk.rfa') if not os.path.exists(family_path): raise Exception('Could not find fixture: {}'.format(family_path)) logger.debug('LOADING SYMBOl') family = clr.Reference[DB.Family]() with rpw.Transaction('Load Family'): doc.LoadFamily(family_path, family) family = family.Value symbols = [] for family_symbol in family.Symbols: symbols.append(family_symbol) with rpw.Transaction('Place Instances'): level = DB.FilteredElementCollector(doc).OfClass( DB.Level).WhereElementIsNotElementType().FirstElement() doc.Create.NewFamilyInstance(DB.XYZ(5, 0, 0), symbols[0], level, DB.Structure.StructuralType.NonStructural) doc.Create.NewFamilyInstance(DB.XYZ(10, 4, 0), symbols[0], level, DB.Structure.StructuralType.NonStructural) doc.Create.NewFamilyInstance(DB.XYZ(15, 8, 0), symbols[1], level, DB.Structure.StructuralType.NonStructural)
def test_transaction_group(self): with rpw.TransactionGroup('Multiple Transactions') as tg: self.assertEqual(tg.GetStatus(), DB.TransactionStatus.Started) with rpw.Transaction('Set String') as t: self.assertEqual(t.GetStatus(), DB.TransactionStatus.Started) self.wall.parameters['Comments'].value = '1' self.assertEqual(t.GetStatus(), DB.TransactionStatus.Committed) self.assertEqual(tg.GetStatus(), DB.TransactionStatus.Committed)
def move_to_match_vp_placment(viewport, saved_pt): """ Moved viewport so base point matches the pt saved """ vp = ViewPortWrapper(viewport) current_origin = vp.project_origin_in_sheetspace delta = saved_pt - current_origin if viewport.Pinned: with rpw.Transaction('Unpin Viewport'): viewport.Pinned = False with rpw.Transaction('Paste Viewport Placement'): viewport.Location.Move(delta) viewport.Pinned = True viewport = rpw.Element(viewport) try: viewport.parameters.builtins['VIEWER_CROP_REGION_VISIBLE'] = 0 viewport.parameters.builtins['VIEWER_ANNOTATION_CROP_ACTIVE'] = 0 viewport.parameters.builtins['VIEWER_CROP_REGION'] = 1 except Exception as errmsg: print('Could not set some parameters: {}'.format(errmsg))
def tests_element_set_get_parameter_element_id(self): active_view = uidoc.ActiveView wrapped_view = rpw.Element(active_view) with rpw.Transaction('Create and Set Level'): try: new_level = DB.Level.Create(doc, 10) except: new_level = doc.Create.NewLevel(10) self.wrapped_wall.parameters['Top Constraint'].value = new_level.Id self.assertEqual( self.wrapped_wall.parameters['Top Constraint'].value.IntegerValue, new_level.Id.IntegerValue)
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_element_set_get_builtin_parameter_by_strin(self): bip = self.wrapped_wall.parameters.builtins['WALL_KEY_REF_PARAM'] with rpw.Transaction('Set Value'): bip.value = 0 bip = self.wrapped_wall.parameters.builtins['WALL_KEY_REF_PARAM'] self.assertEqual(bip.value, 0)
def tests_element_set_get_parameter_coerce_int(self): with rpw.Transaction('Set Coerce Int'): self.wrapped_wall.parameters['Unconnected Height'].value = 5 rv = self.wrapped_wall.parameters['Unconnected Height'].value self.assertEqual(rv, 5.0)
def tests_element_set_get_parameter_float(self): with rpw.Transaction('Set Integer'): self.wrapped_wall.parameters['Unconnected Height'].value = 5.0 rv = self.wrapped_wall.parameters['Unconnected Height'].value self.assertEqual(rv, 5.0)
def tests_element_set_get_parameter_coerce_string(self): with rpw.Transaction('Set String'): self.wrapped_wall.parameters['Comments'].value = 5 rv = self.wrapped_wall.parameters['Comments'].value self.assertEqual(rv, '5')
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 test_transaction_instance(self): with rpw.Transaction('Test Is Instance') as t: self.wall.parameters['Comments'].value = '' self.assertIsInstance(t, DB.Transaction)
def test_transaction_commit_status_rollback(self): with self.assertRaises(Exception): with rpw.Transaction('Set String') as t: self.wall.parameters['Top Constraint'].value = DB.ElementId( 'a') self.assertEqual(t.GetStatus(), DB.TransactionStatus.RolledBack)
def test_transaction_commit_status_success(self): with rpw.Transaction('Set String') as t: self.wall.parameters['Comments'].value = '' self.assertEqual(t.GetStatus(), DB.TransactionStatus.Started) self.assertEqual(t.GetStatus(), DB.TransactionStatus.Committed)
def test_transaction_get_name(self): with rpw.Transaction('Named Transaction') as t: self.assertEqual(t.GetName(), 'Named Transaction')
def test_transaction_has_ended(self): with rpw.Transaction('Add Comment') as t: self.wall.parameters['Comments'].value = '' self.assertFalse(t.HasEnded())
def test_transaction_started(self): with rpw.Transaction('Has Started') as t: self.wall.parameters['Comments'].value = '' self.assertTrue(t.HasStarted())
def tests_wrong_storage_type(self): with self.assertRaises(RPW_WrongStorageType) as context: with rpw.Transaction('Set String'): self.wrapped_wall.parameters[ 'Unconnected Height'].value = 'Test'
This file is shared on www.revitapidocs.com For more information visit http://github.com/gtalarico/revitapidocs License: http://github.com/gtalarico/revitapidocs/blob/master/LICENSE.md """ import rpw from rpw import doc selection = rpw.Selection() phases = [p for p in doc.Phases] phase_options = {p.Name: p for p in phases} form = rpw.forms.SelectFromList('Set Phase', phase_options.keys(), description='Select a Phase') form_ok = form.show() if not form_ok: __window__.Close() import sys; sys.exit() phase = phase_options[form.selected] with rpw.TransactionGroup('Set Phases'): for element in selection: element = rpw.Element(element) with rpw.Transaction('Set Element Phase'): try: element.parameters.builtins['PHASE_CREATED'].value = phase.Id except rpw.exceptions.RPW_Exception: pass
def setUp(self): self.wall = rpw.Element.from_int(wall_int) with rpw.Transaction('Reset Comment') as t: self.wall.parameters['Comments'] = ''
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: rpw_view = rpw.Element(view) rpw_view.parameters.builtins['VIEW_UNDERLAY_ID'] = selected_underlay_id __window__.Close()
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.' ) else: saved_pt = DB.XYZ(pt.X, pt.Y, pt.Z) vp = ViewPortWrapper(viewport) current_origin = vp.project_origin_in_sheetspace delta = saved_pt - current_origin if viewport.Pinned: with rpw.Transaction('Unpin Viewport'): viewport.Pinned = False with rpw.Transaction('Paste Viewport Placement'): viewport.Location.Move(delta) viewport.Pinned = True viewport = rpw.Element(viewport) try: # TODO: Make these optional viewport.parameters.builtins[ 'VIEWER_CROP_REGION_VISIBLE'] = 0 viewport.parameters.builtins[ 'VIEWER_ANNOTATION_CROP_ACTIVE'] = 0 viewport.parameters.builtins['VIEWER_CROP_REGION'] = 1 except Exception as errmsg: print('Could not set some parameters: {}'.format(errmsg)) else: