Exemplo n.º 1
0
 def __init__(self, pipe, DisToBeam=0):
     self.pipe = pipe
     Level = pipe.LevelId
     self.DisToBeam = DisToBeam
     self.beams = db.Collector(of_category='OST_StructuralFraming',
                               level=Level,
                               is_not_type=True)
Exemplo n.º 2
0
def make_wall():
    level = db.Collector(of_category='Levels',
                         is_type=False,
                         where=lambda x: x.parameters['Name'] == 'Level 1')[0]
    levelid = level.Id

    DB.Wall.Create(doc, curve, levelid, False)
Exemplo n.º 3
0
def get_local_gen_mods_for_link(family_filter, link_file_name):
    local_gen_mods = db.Collector(of_category="GenericModel",
                                  is_not_type=True).ToElements()
    filtered_gen_mods = []
    for gen in local_gen_mods:
        if gen.LookupParameter("Linked_Source").AsString() == link_file_name:
            if gen.Symbol.FamilyName == family_filter:
                filtered_gen_mods.append(gen)
    return filtered_gen_mods
def get_levels(doc):
    level_list = []
    levels = db.Collector(of_category='Levels',
                          is_not_type=True).get_elements()
    for level in levels:
        level_dict = {}
        level_dict['name'] = level.name
        level_dict['Elevation'] = level.Elevation * 304.8
        level_list.append(level_dict)
    sorted_level_list = sorted(level_list, key=lambda x: x['Elevation'])
    return routes.make_response(data=sorted_level_list)
Exemplo n.º 5
0
def CollectAllElements(where, ignoreTags=False, categoriesFilter=[]):
    els = []
    elsc = []
    for cat in doc.Settings.Categories:
        try:
            #if "tags" in cat.Name.lower() and ignoreTags:
            #	pass
            #else:
            if ValidCategory(cat, ignoreTags, categoriesFilter):
                if where == "ActiveView":
                    els = db.Collector(view=doc.ActiveView,
                                       of_category=cat.Name)
                elif where == "Project":
                    els = db.Collector(of_category=cat.Name)
                else:
                    break
                els = els.get_elements(True)
                elsc += els
        except:
            pass
    return elsc
Exemplo n.º 6
0
def GetTypeId(replace_familyName, replace_typeName):

	col = db.Collector(of_class=FamilySymbol)
	alltypes = col.GetElementIdIterator()
	alltypes.Reset()
	
	for el in alltypes:
		fsyb = doc.GetElement(el) 
		if fsyb.Family.Name == replace_familyName:
			tyname = Element.Name.GetValue(fsyb)
			if tyname == replace_typeName:
				return fsyb.Id
Exemplo n.º 7
0
def SelectSimilar(where='ActiveView'):
    els = ui.Selection()
    elTypes = FilterSelection(els)

    colEls = []
    colElsc = []

    for pmEnum, pmValues in elTypes.items():
        for elt in pmValues:
            param_id = DB.ElementId(pmEnum)
            parameter_filter = db.ParameterFilter(param_id, equals=elt)
            if where == 'ActiveView':
                colEls = db.Collector(view=doc.ActiveView,
                                      parameter_filter=parameter_filter)
            elif where == 'Project':
                colEls = db.Collector(parameter_filter=parameter_filter)
            else:
                return False
            colEls = colEls.get_elements(True)
            colElsc += colEls

    SetFocus(colElsc)
def get_sheet_order_dict():
    sheet_order_dict = {}
    rpw_sheets = (db.Collector(of_class=DB.ViewSheet,
                               is_not_type=True).get_elements())
    for sheet in rpw_sheets:
        sheet_category = sheet.SheetNumber[:2]
        sheet_order = sheet.SheetNumber[-2:]
        if str(sheet_category) in sheet_order_dict.keys(
        ) and sheet_order >= sheet_order_dict[str(sheet_category)]:
            sheet_order_dict[str(sheet_category)] = sheet_order
        elif str(sheet_category) not in sheet_order_dict.keys():
            sheet_order_dict[str(sheet_category)] = sheet_order
    return sheet_order_dict
Exemplo n.º 9
0
def main():

    selected_element_by_room = []

    family_instance_reference = uidoc.Selection.PickObject(
        UI.Selection.ObjectType.Element, ClassISelectionFilter(),
        "Select FamilyInstance")

    room_reference = uidoc.Selection.PickObject(
        UI.Selection.ObjectType.Element,
        CategoryISelectionFilterByName("Rooms"), "Select Room")
    """
    room_reference = uidoc.Selection.PickObject(
        UI.Selection.ObjectType.Element,
        CategoryISelectionFilterByBuiltInCategory(
            DB.BuiltInCategory.OST_Rooms),
        "Select Room")
    """

    source_fi = doc.GetElement(family_instance_reference.ElementId)
    source_room = doc.GetElement(room_reference.ElementId)
    # print(source_fi)

    selected_elements = db.Collector(
        of_class="FamilyInstance",
        is_not_type=True,
        where=lambda x: x.GetTypeId() == source_fi.GetTypeId()).get_elements()

    view = uidoc.ActiveView
    phase_name = view.get_Parameter(
        DB.BuiltInParameter.VIEW_PHASE).AsValueString()

    phase = get_phase(phase_name)

    with db.Transaction("Selected Element by Python"):
        for e in selected_elements:
            if e.Room[phase].Id == source_room.Id:
                selected_element_by_room.append(e)
                e.parameters['Selected Comment'].value = "Selected"
            else:
                e.parameters['Selected Comment'].value = ""

    ui.forms.Alert("Family Name: {}\nType Name: {}\nFamily Count: {}".format(
        source_fi.Symbol.FamilyName,
        db.Element(source_fi).name, len(selected_element_by_room)),
                   title="Selected Elements/Room",
                   header="Room Name: {} Room Number: {}".format(
                       db.Room(source_room).name, source_room.Number))

    uidoc.Selection.SetElementIds(List[DB.ElementId](
        e.Id for e in selected_element_by_room))
Exemplo n.º 10
0
 def __init__(self):
     #set default family type
     families = db.Collector(of_category="OST_GenericModel",is_type=True)
     types = []
     type_count = 0
     for fam in families:
         if fam.FamilyName == "重量ラック(単列)":
             types.append(fam)
             type_count += 1
         
     if type_count == 0:
         UI.TaskDialog.Show("ファミリエラー","重量ラックファミリがプロジェクトにロードされていないため,実行できません。")
     else:
         self.types = types
def duplicate_sheet_contents(sheet, new_sheet):
    copy_element_ids = []

    elements_on_sheet = db.Collector(view=sheet.Id,
                                     is_not_type=True).get_elements()
    for element in elements_on_sheet:
        if not isinstance(element.unwrap(), DB.Viewport):
            copy_element_ids.append(element.Id)
    if copy_element_ids:
        with revit.Transaction('Copy View Contents'):
            new_contents = DB.ElementTransformUtils.CopyElements(
                sheet.unwrap(), List[DB.ElementId](copy_element_ids),
                new_sheet, None, None)
    return new_contents
Exemplo n.º 12
0
def SelectAllInProject(catTypes=['Model', 'Annotation']):
    #els = db.Collector(where=lambda x: x.get_category().CategoryType.ToString() == 'Model')
    els = []
    elsc = []
    for cat in doc.Settings.Categories:
        try:
            els = db.Collector(of_category=cat.Name)
            elsc += els
        except:
            pass
    els = FilterCategoryType(elsc, catTypes)
    msg = "Any elements found in Project."
    if AlertSelection(els, msg):
        SetFocus(els)
Exemplo n.º 13
0
    def FloorFinishType(self):
        try:
            WallFinishName = self.Room.get_Parameter(
                DB.BuiltInParameter.ROOM_FINISH_FLOOR)
            param_id = DB.ElementId(DB.BuiltInParameter.SYMBOL_NAME_PARAM)
            parameter_filter = db.ParameterFilter(
                param_id, equals=WallFinishName.AsString())
            FloorType = db.Collector(of_category='OST_Floors',
                                     parameter_filter=parameter_filter,
                                     is_type=True).get_first(wrapped=False)
            return FloorType

        except Exception as e:
            print("{Room}不能获取建筑楼面类型:{Problem}".format(Room=self.RoomName,
                                                      Problem=e))
Exemplo n.º 14
0
    def __init__(self):
        #set default family type
        #families = DB.FilteredElementCollector(doc).WhereElementIsElementType().ToElements()
        families = db.Collector(of_category="OST_MechanicalEquipment",
                                is_type=True)
        temp_count = 0
        for fam in families:
            if fam.FamilyName == straightConveyorName:
                self.straightConveyorFamilySymbol = fam
                temp_count += 1

            elif fam.FamilyName == curveConveyorName:
                self.curveConveyorFamilySymbol = fam
                temp_count += 1
        if temp_count == 0:
            UI.TaskDialog.Show("ファミリエラー",
                               "コンベヤファミリがプロジェクトにロードされていないため,実行できません。")
def get_furnitures(doc):
    furnitures = db.Collector(of_category='Furniture',
                              is_not_type=True).get_elements()
    furniture_dict = {}
    furniture_type_dict = {}
    for f in furnitures:
        if f.Symbol.FamilyName in furniture_dict.keys():
            furniture_dict[f.Symbol.FamilyName] += 1
        else:
            furniture_dict[f.Symbol.FamilyName] = 1
        if f.Symbol.FamilyName + ' - ' + f.name in furniture_type_dict.keys():
            furniture_type_dict[f.Symbol.FamilyName + ' - ' + f.name] += 1
        else:
            furniture_type_dict[f.Symbol.FamilyName + ' - ' + f.name] = 1
        family_dict = {
            'family': furniture_dict,
            'family_type': furniture_type_dict
        }
    return routes.make_response(data=family_dict)
Exemplo n.º 16
0
    def WallFinishType(self):
        try:
            WallFinishName = self.WrapedRoom.parameters[
                ParameterName.Room_Wall_Finish].value
            param_id = DB.ElementId(DB.BuiltInParameter.SYMBOL_NAME_PARAM)
            parameter_filter = db.ParameterFilter(param_id,
                                                  equals=WallFinishName)
            WallType = db.Collector(of_category='OST_Walls',
                                    parameter_filter=parameter_filter,
                                    is_type=True).get_first()

            WallType = WallType.unwrap()
            return WallType

        except Exception as e:
            print("{roomname} 没有设置墙体类型,使用默认墙体".format(roomname=self.RoomName))
            defaultWallTypeId = doc.GetDefaultElementTypeId(
                DB.ElementTypeGroup.WallType)
            WallType = doc.GetElement(defaultWallTypeId)
            return WallType
Exemplo n.º 17
0
    def WallFinishType(self):
        try:
            WallFinishName = self.WrapedRoom.parameters['Wall Finish'].value
            param_id = DB.ElementId(DB.BuiltInParameter.SYMBOL_NAME_PARAM)
            parameter_filter = db.ParameterFilter(param_id,
                                                  equals=WallFinishName)
            WallType = db.Collector(of_category='OST_Walls',
                                    parameter_filter=parameter_filter,
                                    is_type=True).get_first()

            return WallType

        except Exception as e:
            print(
                "{roomname} is not set WallFinishType,We use Default Wall Type defaultType"
                .format(roomname=self.RoomName))
        finally:
            defaultWallTypeId = doc.GetDefaultElementTypeId(
                DB.ElementTypeGroup.WallType)
            WallType = doc.GetElement(defaultWallTypeId)
            return WallType
Exemplo n.º 18
0
    def getStartDirectionLengthLevelFromLine(self, modelLine):
        # find start point XYZ
        location = modelLine.Location
        line = location.Curve
        start = line.Origin
        start = DB.XYZ(start.X, start.Y, 0)

        #find direction XYZ
        direction = line.Direction

        # find length double
        length = line.Length

        # find level
        sketchPlane = modelLine.SketchPlane
        levs = db.Collector(of_category="OST_Levels", is_not_type=True)
        level = 0
        for lev in levs:
            if lev.Name == sketchPlane.Name:
                level = lev

        return start, direction, length, level
Exemplo n.º 19
0
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:
        # check if duplicate exists
        col_plan = db.Collector(
            of_class="ViewPlan",
            is_type=False,
            where=lambda x: sheet_name + "-Plan" in x.Name,
        ).unwrap()
        col_rcp = db.Collector(
            of_class="ViewPlan",
            is_type=False,
            where=lambda x: sheet_name + "-RCP" in x.Name,
        ).unwrap()
        # get cropbox region
        cropbox = DB.BoundingBoxXYZ()
        bbmin, bbmax = ui.Pick.pick_box(sheet_name)
        cropbox.Min = bbmin.unwrap()
        cropbox.Max = bbmax.unwrap()

        if col_plan.GetElementCount() < 1:
            # create duplicate
Exemplo n.º 20
0
SelectMirroredWindows
Selects All Window Instances that have been Mirrored.
TESTED REVIT API: 2015 | 2016

Copyright (c) 2014-2016 Gui Talarico
github.com/gtalarico

This script is part of PyRevitPlus: Extensions for PyRevit
github.com/gtalarico

--------------------------------------------------------
PyRevit Notice:
Copyright (c) 2014-2016 Ehsan Iran-Nejad
pyRevit: repository at https://github.com/eirannejad/pyRevit

"""
#pylint: disable=E0401,W0621,W0631,C0413,C0111,C0103
__doc__ = "Selects All Window Instances that have been Mirrored."
__author__ = '@gtalarico'
__title__ = "Select Mirrored\nWindows"

from rpw import db, ui

windows = db.Collector(of_category='Windows').get_elements(wrapped=True)
mirrored_windows = [x for x in windows if getattr(x, 'Mirrored', False)]

msg = "Mirrored: {} of {} Windows".format(len(mirrored_windows), len(windows))
ui.forms.Alert(msg, title="Mirrored Windows")

selection = ui.Selection(mirrored_windows)
Exemplo n.º 21
0
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()
        if col.GetElementCount() < 1:
            marker = DB.ElevationMarker.CreateElevationMarker(
                doc, viewTypeId, pt, 20)
            viewPlanId = doc.ActiveView.Id
            for i in range(4):
                elevation = marker.CreateElevation(doc, viewPlanId, i)
                elevation.Name = sheet_name + " - Elevation {}".format(i + 1)
Exemplo n.º 22
0
from rpw import db

# is_type=False allows it to only return FamilyInstance rather than also FamilySymbol

# LEVEL COLLECTOR
level_filter = lambda x: x.Name == 'LEVEL 1'
levels = db.Collector(of_class='Level', is_type=False, where=level_filter)
level_elements = levels.get_elements()
print 'levels', level_elements

# ROOM COLLECTOR
# create a filter that will pass through the 'where' method
room_filter = lambda x: x.name == 'STUDIO'
room_collector = db.Collector(of_category='OST_Rooms',
                              is_type=False,
                              where=room_filter)
room_elements = room_collector.get_elements()
print 'room elements', room_elements

# room location

for room in room_elements:
    room_name = room.Location
print room_name.Point

# FURNITURE COLLECTOR
# OST_Furniture will collect all of the Instances and not the Parent Family.
# create a furniture type name filter
# furn_filter = lambda x:x.name == '54"'
#is_type=False allows it to only return FamilyInstance rather than also FamilySymbol
furn_collector = db.Collector(of_category='OST_Furniture', is_type=False)
Exemplo n.º 23
0
doc = __revit__.ActiveUIDocument.Document

Picked = uidoc.Selection.PickObject(UI.Selection.ObjectType.Element)
PickedElementId = Picked.ElementId

Picked_Selection = db.Element.from_id(PickedElementId)
# 信息输入部分
Framing_types = rpw.db.Collector(of_category='OST_StructuralFraming',
                                 is_type=True).elements

Framing_type_options = {
    t.FamilyName + DB.Element.Name.GetValue(t): t
    for t in Framing_types
}

Level_type = db.Collector(of_category='Levels', is_type=False).elements
Level_type_options = {DB.Element.Name.GetValue(t): t for t in Level_type}

components = [
    Label('输入图层名称'),
    TextBox('图层名称', Text="S-STEL-BEAM"),
    Label('构件名称'),
    ComboBox('FamilyName', Framing_type_options),
    Label('标高'),
    ComboBox('Level', Level_type_options),
    Label('偏移标高'),
    TextBox('Offset', Text="-300"),
    Button('确定')
]
form = FlexForm('结构', components)
form.show()
Exemplo n.º 24
0
Author: Pyline Tangsuvanich
Overrides graphics of all linked CADs to gray. 
'''

# Import modules from RevitPythonWrapper

from rpw import revit, db, ui, UI, DB

# Set active document

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
Exemplo n.º 25
0
from Autodesk.Revit.DB.Architecture import Room

import rpw
from rpw import revit, doc, uidoc, DB, UI, db, ui

DEFAULT_CROP = '0.75'  # About 9"

# Validate + Filter Selection
selection = rpw.ui.Selection()
selected_rooms = [e for e in selection.elements if isinstance(e, Room)]

if not selected_rooms:
    ui.forms.Alert('MakeViews', 'You need to select at lest one Room.')

# Get View Types and Prompt User
plan_types = db.Collector(of_class='ViewFamilyType',
                          is_type=True).wrapped_elements

# Filter all view types that are FloorPlan or CeilingPlan
plan_types_options = {
    t.name: t
    for t in plan_types if t.view_family.name in ('FloorPlan', 'CeilingPlan')
}

plan_type = ui.forms.SelectFromList('MakeViews',
                                    plan_types_options,
                                    description='Select View Type')
view_type_id = plan_type.Id

crop_offset = ui.forms.TextInput('MakeViews',
                                 default=DEFAULT_CROP,
                                 description='View Crop Offset [feet]')
Exemplo n.º 26
0
	Intersect_Lines.append(c.ToRevitType())

#Picked_Selection=db.Element.from_id(PickedElementId).unwrap()
#信息输入部分


	
	

@rpw.db.Transaction.ensure('CreateBeam')
def CreateBeam(Curves,FamilySymbol,Level,StructureType):
	for i in Curves:
		doc.Create.NewFamilyInstance(i,FamilySymbol,Level,StructureType)
	
	
Level_Roof=db.Collector(of_category='Levels', is_type=False,where=lambda x: x.parameters['Name']=='Roof')[0]
FramingSymbol=db.Collector(of_category='OST_StructuralFraming',is_not_type=False).wrapped_elements
for i in FramingSymbol:
	if i.name==FamilyName:
		FramingSymbol=i.unwrap()
StructuralType=DB.Structure.StructuralType.Beam


c=CreateBeam(Intersect_Lines,FramingSymbol,Level_Roof,StructuralType)
print(Intersect_Lines)
print("绘制完成")

	


		
Exemplo n.º 27
0
import revitron
from revitron import _

from pyrevit import revit
from rpw import db, ui, DB, UI

cws = db.Collector(elements=ids.get_element_ids(),
                   of_class='Wall',
                   where=lambda x: x.get_family().name == 'Curtain')

els = db.Collector(of_category='OST_Walls', level='1')
Exemplo n.º 28
0
__doc__ = "DepthMap Analysis"
import clr
import time
import sys
import rpw
import pyrevit
from rpw import db, doc, uidoc
from pyrevit import revit, DB, UI, forms, HOST_APP
import System
from System.Collections.Generic import List
from pyrevit.framework import Stopwatch

######################################

#allElementsInView = DB.FilteredElementCollector(doc, doc.ActiveView.Id).ToElements()

#for i in allElementsInView:
#    print(i)

allElementsInView = db.Collector(view=doc.ActiveView,
                                 is_type=False).get_elements(wrapped=True)

with db.Transaction('AddElementId'):

    for i in allElementsInView:
        #print(i.unwrap().Id)
        try:
            i.parameters['ElementId'].value = i.unwrap().Id
        except:
            pass
Exemplo n.º 29
0
# Import modules from RevitPythonWrapper

from rpw import revit, db, ui, UI, DB
create = revit.doc.Create

# Set active document

doc_active = revit.uidoc.ActiveView
alert = ui.forms.Alert

wall_collector = db.Collector(view = doc_active, of_class='Wall', is_type=False)
wall_elements = wall_collector.get_elements()


level_collector = db.Collector(view = doc_active, of_class='Level', is_type=False)
level_elements = level_collector.get_elements()
#print level_elements

# WALLS ON CURRENT LEVEL

for wall in wall_elements:
	param_height = wall.parameters['Unconnected Height']
	param_constraint = wall.parameters['Top Constraint']
	param_constraint2 = wall.parameters.builtins['WALL_HEIGHT_TYPE']
	elementid = param_constraint.AsElementId()
	#element1 = db.Element.from_int(elementid)
#	print param_height.value
#	print param_constraint
#	print param_constraint.AsValueString()
#	print elementid
Exemplo n.º 30
0
print(hostapp.app.Language)

if hostapp.app.Language.ToString() == "English_USA":
    ParameterName = LG_EUN()
elif hostapp.app.Language.ToString() == "Chinese_Simplified":
    ParameterName = LG_CHS()

LocationFile = select_file('CSV(*.csv)|*.csv')

# 信息输入部分
GenericCategory = rpw.db.Collector(of_category='OST_GenericModel',
                                   is_type=True).get_elements(wrapped=False)

Framing_type_options = {t.FamilyName: t for t in GenericCategory}

Level_type = db.Collector(of_category='Levels',
                          is_type=False).get_elements(wrapped=False)
Level_type_options = {DB.Element.Name: t for t in Level_type}

components = [
    Label('构件名称'),
    ComboBox('FamilyName', Framing_type_options),
    Button('确定')
]
Structure = []
form = FlexForm('结构', components)
form.show()

Value = form.values

Locations = []
with open(LocationFile, 'rbU') as csvfile: