コード例 #1
0
 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
コード例 #2
0
 def collector_helper(filters):
     logger.debug('{}'.format(filters))
     collector = rpw.Collector(**filters)
     elements = collector.elements
     logger.debug(collector)
     logger.debug(collector.first)
     return collector
コード例 #3
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')
コード例 #4
0
    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)
コード例 #5
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)
コード例 #6
0
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:
コード例 #7
0
 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
     ]
コード例 #8
0
 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
コード例 #9
0
 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
コード例 #10
0
 def setUp(self):
     wall = rpw.Collector(of_class='Wall', is_not_type=True).first
     self.wall = rpw.WallInstance(wall)
コード例 #11
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)
コード例 #12
0
 def setUp(self):
     self.wall = rpw.Collector(of_class='Wall').first
     self.wrapped_wall = rpw.Element(self.wall)
コード例 #13
0
 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)
コード例 #14
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)
コード例 #15
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)
コード例 #16
0
 def setUp(self):
     collector = rpw.Collector()
     self.wall = collector.filter(of_class='Wall').first
コード例 #17
0
 def setUp(self):
     instance = rpw.Collector(of_category='OST_Furniture',
                              is_not_type=True).first
     self.instance = rpw.Instance(instance)
コード例 #18
0
 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)
コード例 #19
0
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()
コード例 #20
0
 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)
コード例 #21
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
コード例 #22
0
 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)
コード例 #23
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)
コード例 #24
0
 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)
コード例 #25
0
 def category(self):
     wall_type = rpw.Collector(of_class=DB.WallType, is_type=True).first
     return WallCategory(wall_type.Category)
コード例 #26
0
 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)
コード例 #27
0
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()
コード例 #28
0
ファイル: script.py プロジェクト: kidasse/pyrevitplus
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')