Example #1
0
from System.Runtime.InteropServices import Marshal
import sys
import Autodesk

e_a = str("\xe9")
a_a = str("\xe0")

# INSERT LINK
# User select a revit file in folders
filepath = select_file('Revit Model (*.rvt)|*.rvt')
#start transaction
with db.Transaction('insert link'):
    for path in filepath:
        linkpath = DB.ModelPathUtils.ConvertUserVisiblePathToModelPath(
            filepath)
    linkoptions = DB.RevitLinkOptions(relative=True)
    linkloadresult = DB.RevitLinkType.Create(revit.doc, linkpath, linkoptions)
    linkinstance = DB.RevitLinkInstance.Create(revit.doc,
                                               linkloadresult.ElementId)
    # # Insert from Base Point to Base Point
    # DB.RevitLinkInstance.MoveBasePointToHostBasePoint(linkinstance, resetToOriginalRotation = True)
    # # Insert from Origin To Origin
    # DB.RevitLinkInstance.MoveOriginToHostOrigin(linkinstance, resetToOriginalRotation = True)

# ACQUIRE COORDINATES FROM REVIT LINK
collector_maq = DB.FilteredElementCollector(revit.doc)
linkInstances = collector_maq.OfClass(DB.RevitLinkInstance)
linkDoc = [links.GetLinkDocument() for links in linkInstances]
collector_link = DB.FilteredElementCollector(linkDoc[0])
linkInstancesId = linkInstances.ToElementIds()
# SET COORDINATE TO MAQUETTE
Example #2
0
import rpw
from rpw import revit, db, ui, DB, UI
from rpw.ui.forms import *
from System import Array
from System.Runtime.InteropServices import Marshal
import sys
import Autodesk

e_a = str("\xe9")
a_a = str("\xe0")

options = __revit__.Application.Create.NewGeometryOptions()


floor_collector = DB.FilteredElementCollector(revit.doc, revit.doc.ActiveView.Id)\
                .OfCategory(DB.BuiltInCategory.OST_Floors)\
                .WhereElementIsNotElementType()\
                .ToElements()


beam_collector = DB.FilteredElementCollector(revit.doc, revit.doc.ActiveView.Id)\
                .OfCategory(DB.BuiltInCategory.OST_StructuralFraming)\
                .WhereElementIsNotElementType()\
                .ToElements()

level_collector = DB.FilteredElementCollector(revit.doc)\
            .OfCategory(DB.BuiltInCategory.OST_Levels)\
            .WhereElementIsNotElementType()\
            .ToElements()

levels = {}
for level in level_collector:
Example #3
0
 def y(self, value):
     self._revit_object = DB.XYZ(self.x, value, self.z)
Example #4
0
#log(__file__)
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.ui.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.db.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_corce_element_ref_id(self):
     wall_id = DB.ElementId(self.wall.Id.IntegerValue)
     elements = rpw.utils.coerce.to_elements([wall_id])
     self.assertTrue(all([isinstance(e, DB.Element) for e in elements]))
Example #6
0
 def setUpClass(cls):
     logger.title('TESTING COLLECTOR...')
     collector = DB.FilteredElementCollector(doc)
     cls.family_loaded = collector.OfCategory(
         DB.BuiltInCategory.OST_Furniture).ToElements()
Example #7
0
from System.Collections.Generic import List
from rpw import revit, db, ui, DB, UI
# from rpw.ui.forms import *
# from System import Array
# from System.Runtime.InteropServices import Marshal
import sys
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *
clr.AddReference('System.Drawing')
clr.AddReference('System.Windows.Forms')
from System.Drawing import *
from System.Windows.Forms import *

# COLLECT SHEET MAQUETTE
sheet_category = DB.FilteredElementCollector(revit.doc).OfCategory(
    BuiltInCategory.OST_Sheets)
sheet_element = sheet_category.WhereElementIsNotElementType()
sheet_name = [sheets.Name for sheets in sheet_element]
sheet_id = [sheets.Id for sheets in sheet_element]
sheet_elementId = [
    DB.Document.GetElement(revit.doc, sheets) for sheets in sheet_id
]
# Dictionnary for sheet : keys are names and values are elementId
dico_sheet_nameToElementId = {}
for k in range(len(sheet_name)):
    dico_sheet_nameToElementId[str(sheet_name[k])] = sheet_elementId[k]

# COLLECT REVISION MAQUETTE
revisions_category = DB.FilteredElementCollector(revit.doc).OfCategory(
    BuiltInCategory.OST_Revisions)
revision_element = revisions_category.WhereElementIsNotElementType()
Example #8
0
 def from_int(id_int):
     element = doc.GetElement(DB.ElementId(id_int))
     return Element(element)
Example #9
0
 def __init__(self, name=None, doc=revit.doc):
     if name is None:
         name = 'RPW Transaction'
     super(Transaction, self).__init__(DB.Transaction(doc, name))
     self.transaction = self._revit_object
Example #10
0
 def __init__(self, name=None):
     if name is None:
         name = 'RPW Transaction'
     self.transaction = DB.Transaction(doc, name)
Example #11
0
# coding: utf8
import rpw
from rpw import DB

__doc__ = "Designed for annotation families. It moves selected annotation to center (set 0,0,0 coordinates)"
__title__ = "Label/Text"
__author__ = "Cyril Waechter"
__context__ = 'Selection'

with rpw.db.Transaction():
    for text_element in rpw.ui.Selection():
        text_element.Coord = DB.XYZ()
def uv_to_pt(uv):
    return DB.XYZ(uv.U, uv.V, 0)
Example #13
0
 def from_int(id_int):
     """ Instantiate Element from an Integer representing and Id """
     element = revit.doc.GetElement(DB.ElementId(id_int))
     return Element(element)
Example #14
0
doc_active = revit.uidoc.ActiveView

# Collect CAD links
# Note: Because we import DB, we can call on ImportInstance

dwg_collector = db.Collector(of_class = 'ImportInstance', is_type=False)
dwg_elements = dwg_collector.get_elements()

# Collect views

view_collector = db.ViewPlan.collect()


# Set Color

color_gray = DB.Color(80,80,80)

# Create Class for Override

ogs = DB.OverrideGraphicSettings().SetProjectionLineColor(color_gray)

# Start transaction

t = db.Transaction('Set Linked CADs to Gray')
t.Start()

# The SetElementOverrides method requires element ID and override instance

for view in view_collector:
    for dwg in dwg_elements:
        dwg_id = dwg.Id
Example #15
0
 def test_category2(self):
     rv = DB.FilteredElementCollector(doc).OfCategory(
         DB.BuiltInCategory.OST_Levels).WhereElementIsNotElementType(
         ).ToElements()
     rv2 = rpw.db.Collector(of_category="Levels", is_type=False)
     self.assertEqual(len(rv), len(rv2))
Example #16
0

stopwatch = Stopwatch()
stopwatch.Start()

dtype_methods = {
    DB.StorageType.String: DB.Parameter.AsString,
    DB.StorageType.Integer: DB.Parameter.AsDouble,
    DB.StorageType.Double: DB.Parameter.AsDouble,
    DB.StorageType.ElementId: DB.Parameter.AsElementId,
}
dtype_empty = {
    DB.StorageType.String: "",
    DB.StorageType.Integer: 0.0,
    DB.StorageType.Double: 0.0,
    DB.StorageType.ElementId: DB.ElementId(-1),
}

ignored_durchbruch_ids = [
    # "S037U01",  # UG1
]
ft_mm = 304.8
up = XYZ(0, 0, 1)
non_struct = Structure.StructuralType.NonStructural
geo_opt = Options()
rvt_link_opt = RevitLinkOptions(False)

project_lvl_code = None
project_number = doc.ProjectInformation.LookupParameter(
    "Project Number").AsString()
if project_number.isdigit() and len(project_number) == 3:
Example #17
0
 def test_class(self):
     rv = DB.FilteredElementCollector(doc).OfClass(DB.View).ToElements()
     rv2 = rpw.db.Collector(of_class="View")
     self.assertEqual(len(rv), len(rv2))
Example #18
0
__title__ = "Open in\nExcel"


import os
import sys
import subprocess
import time

import rpw
from rpw import doc, uidoc, DB, UI

EXCELPATHS_FILENAME = 'OpenInExcel_UserPaths.txt'
EXCELPATHS_FILEPATH = os.path.join(os.path.dirname(__file__), EXCELPATHS_FILENAME)
# Export Settings
temp_folder = os.path.expandvars('%temp%\\')
export_options = DB.ViewScheduleExportOptions()

# Get Saved Excelp Paths
if not os.path.exists(EXCELPATHS_FILEPATH):
    UI.TaskDialog.Show('OpenInExcel', 'Could not find the File: \n'
                       '{} in:\n {}'.format(
                       EXCELPATHS_FILENAME, os.path.dirname(__file__)))
    sys.exit()

with open(EXCELPATHS_FILEPATH) as fp:
    excel_paths = fp.read().split('\n')

for excel_path in excel_paths:
    if os.path.exists(excel_path):
        recipient = excel_path
        break
    "4102-Small AV",
    "4103-Conversation",
    "4108-Micro AV",
    "4104-Brainstorm",
    "4105-Large AV",
    "4106-Boardroom",
    "4107-Classroom",
]
all_sheet_numbers = []
all_sheet_names = []
for sheet_name in sheet_names:
    for i in range(1, 5):
        all_sheet_names.append(sheet_name + "-Type {}".format(i))
        all_sheet_numbers.append(sheet_name.split("-")[0] + "." + str(i))

viewTypeId = DB.ElementId(10522069)
view_data = {
    "WW-ViewCategory": "Working",
    "WW-ViewSubCategory": "0000 Architecture"
}

params = ["WW-ViewCategory", "WW-ViewSeries", "WW-ViewSubCategory"]

with db.Transaction("Add Elevation Marker"):
    for sheet_name in all_sheet_names:
        print("pick point for {}".format(sheet_name))
        pt = ui.Pick.pick_pt().unwrap()
        col = db.Collector(of_class="ViewSection",
                           is_type=False,
                           where=lambda x: sheet_name in x.Name)
        col = col.unwrap()
Example #20
0
        # UI.TaskDialog.Show('pyRevitPlus', 'Grid element \'{}\''.format(cAxis.Name))

        #UI.TaskDialog.Show('pyRevitPlus', 'Found saved grid element \'{}\''.format(cAxis.Name))
        curves = cAxis.GetCurvesInView(DB.DatumExtentType.ViewSpecific, cView)
        if len(curves) <> 1:
            UI.TaskDialog.Show(
                'pyRevitPlus',
                'The grid line is defind by {} curves, unable to proceed',
                len(curves))
        else:
            cCurve = curves[0]
            cGridData = GridLines[GridLines.keys()[0]]

            tmp = cCurve.GetEndPoint(0)
            if cView.ViewType == DB.ViewType.Section or cView == DB.ViewType.Elevation:
                pt0 = DB.XYZ(tmp.X, tmp.Y, cGridData['Start'].Z)
            else:
                pt0 = DB.XYZ(cGridData['Start'].X, cGridData['Start'].Y, tmp.Z)

            tmp1 = cCurve.GetEndPoint(1)
            if cView.ViewType == DB.ViewType.Section or cView == DB.ViewType.Elevation:
                pt1 = DB.XYZ(tmp.X, tmp.Y, cGridData['End'].Z)
            else:
                pt1 = DB.XYZ(cGridData['End'].X, cGridData['End'].Y, tmp1.Z)

            if isinstance(cCurve, DB.Arc):
                #ptc = DB.XYZ(cGridData['Center'].X, cGridData['Center'].Y, tmp1.Z)
                # take mid-point of the exixting curve as reference. Will cause trouble.
                # should't, if the grid is not extremelly modified, eg, reversed
                ptRef = cCurve.Evaluate(0.5, True)
                gridline = DB.Arc.Create(pt0, pt1, ptRef)
Example #21
0
    "4108-Micro AV",
    "4104-Brainstorm",
    "4105-Large AV",
    "4106-Boardroom",
    "4107-Classroom",
]

# create seet names & numbers
all_sheet_numbers = []
all_sheet_names = []
for sheet_name in sheet_names:
    for i in range(1, 5):
        all_sheet_names.append(sheet_name + "-Type {}".format(i))
        all_sheet_numbers.append(sheet_name.split("-")[0] + "." + str(i))

plan_view = doc.GetElement(DB.ElementId(11335718))
rcp_view = doc.GetElement(DB.ElementId(11632340))


def duplicate_view(view, cropbox, name_suffix):
    duplicate_plan = doc.GetElement(
        view.Duplicate(DB.ViewDuplicateOption.AsDependent))
    duplicate_plan.Name = sheet_name + name_suffix
    duplicate_plan.CropBoxActive = True
    duplicate_plan.CropBox = cropbox
    duplicate_plan.CropBoxVisible = False
    return duplicate_plan


with db.Transaction("Duplicate View"):
    for sheet_name in all_sheet_names:
 def setUp(self):
     self.wall = DB.FilteredElementCollector(revit.doc).OfClass(
         DB.Wall).ToElements()[0]
     self.wrapped_wall = rpw.db.Element(self.wall)
Example #23
0
 def test_xyz_from_DB_XYZ(self):
     pt = XYZ(DB.XYZ(2,4,6))
     self.assertEqual(pt.X, 2)
     self.assertEqual(pt.Y, 4)
     self.assertEqual(pt.Z, 6)
 def test_detail_line(self):
     self.assertIsInstance(self.detail_line, DB.DetailLine)
     curve = self.detail_line.GeometryCurve
     self.assertTrue(
         curve.GetEndPoint(1).IsAlmostEqualTo(DB.XYZ(10, 10, 0)))
Example #25
0
@rpw.db.Transaction.ensure('Make Floor')
def make_floor(new_floor):
    floor_curves = DB.CurveArray()
    for boundary_segment in new_floor.boundary:
        try:
            floor_curves.Append(boundary_segment.Curve)  # 2015, dep 2016
        except AttributeError:
            floor_curves.Append(boundary_segment.GetCurve())  # 2017

    floorType = doc.GetElement(new_floor.floor_type_id)
    level = doc.GetElement(new_floor.level_id)
    normal_plane = DB.XYZ.BasisZ
    doc.Create.NewFloor(floor_curves, floorType, level, False, normal_plane)


NewFloor = namedtuple('NewFloor', ['floor_type_id', 'boundary', 'level_id'])
new_floors = []
room_boundary_options = DB.SpatialElementBoundaryOptions()

for room in selected_rooms:
    room_level_id = room.Level.Id
    # List of Boundary Segment comes in an array by itself.
    room_boundary = room.GetBoundarySegments(room_boundary_options)[0]
    new_floor = NewFloor(floor_type_id=floor_type_id,
                         boundary=room_boundary,
                         level_id=room_level_id)
    new_floors.append(new_floor)

for new_floor in new_floors:
    make_floor(new_floor)
 def setUpClass(cls):
     logger.title('TESTING Line...')
     pt1 = DB.XYZ(0, 0, 0)
     pt2 = DB.XYZ(10, 10, 0)
     cls.Line = DB.Line.CreateBound(pt1, pt2)
     cls.line = db.Line.new(pt1, pt2)
Example #27
0
 def x(self, value):
     self._revit_object = DB.XYZ(value, self.y, self.z)
Example #28
0
 def test_collector_elements_view_element_another(self):
     # Id of view where everything is hidden
     view_hidden = doc.GetElement(DB.ElementId(12531))
     x = self.collector_helper({'of_class': DB.Wall, 'view': view_hidden})
     self.assertEqual(len(x), 0)
Example #29
0
 def z(self, value):
     self._revit_object = DB.XYZ(self.x, self.y, value)
Example #30
0
uidoc = rpw.uidoc

class_dict = {
    'family': {
        'class': DB.FamilyInstance
    },
    'system': {
        'class': DB.MEPSystem
    },
    'space': {
        'class': DB.SpatialElement
    }
}

for k, v in class_dict.items():
    element = DB.FilteredElementCollector(doc).OfClass(
        class_dict[k]['class']).FirstElement()
    class_dict[k]['parameter_name_list'] = sorted(
        [parameter.Definition.Name for parameter in element.Parameters])
    class_dict[k]['regex'] = re.compile(
        r"({})\(([\w\s]+)\)".format(k))  # class_key(parameter_name)


def set_parameter_value(pattern):
    with rpw.db.Transaction("Apply pattern to parameters"):
        for element in rpw.ui.Selection():
            applied_pattern = apply_pattern(element, pattern)
            rpw.db.Element(element).parameters['name'].value = applied_pattern


def apply_pattern(element, pattern):
    for k, v in class_dict.items():