コード例 #1
0
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)
コード例 #2
0
 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)
コード例 #3
0
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))
コード例 #4
0
 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)
コード例 #5
0
    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')
コード例 #6
0
 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)
コード例 #7
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)
コード例 #8
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)
コード例 #9
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')
コード例 #10
0
 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)
コード例 #11
0
 def test_transaction_instance(self):
     with rpw.Transaction('Test Is Instance') as t:
         self.wall.parameters['Comments'].value = ''
         self.assertIsInstance(t, DB.Transaction)
コード例 #12
0
 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)
コード例 #13
0
 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)
コード例 #14
0
 def test_transaction_get_name(self):
     with rpw.Transaction('Named Transaction') as t:
         self.assertEqual(t.GetName(), 'Named Transaction')
コード例 #15
0
 def test_transaction_has_ended(self):
     with rpw.Transaction('Add Comment') as t:
         self.wall.parameters['Comments'].value = ''
         self.assertFalse(t.HasEnded())
コード例 #16
0
 def test_transaction_started(self):
     with rpw.Transaction('Has Started') as t:
         self.wall.parameters['Comments'].value = ''
         self.assertTrue(t.HasStarted())
コード例 #17
0
 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'
コード例 #18
0
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
コード例 #19
0
 def setUp(self):
     self.wall = rpw.Element.from_int(wall_int)
     with rpw.Transaction('Reset Comment') as t:
         self.wall.parameters['Comments'] = ''
コード例 #20
0
                       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()
コード例 #21
0
ファイル: script.py プロジェクト: kidasse/pyrevitplus
        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: