def get_styles(): fromStyleLine = \ revit.pick_element('Pick a line with the style to be replaced.') fromStyle = fromStyleLine.LineStyle toStyleLine = \ revit.pick_element('Pick a line with the interfacetypes style.') toStyle = toStyleLine.LineStyle return fromStyle, toStyle
def pick_and_match_styles(src_element): with forms.WarningBar(title='Pick target elements:'): while True: dest_element = revit.pick_element() if not dest_element: break with revit.Transaction('Match Tags'): tagsmgr.match_tags(src_element, [dest_element])
def pick_and_match_styles(src_style): with forms.WarningBar(title='Pick objects to match overrides:'): while True: dest_element = revit.pick_element() if not dest_element: break with revit.Transaction('Match Graphics Overrides'): revit.activeview.SetElementOverrides(dest_element.Id, src_style)
def pick_and_match_types(src_props): """Match property values for selected types.""" with forms.WarningBar(title="Pick objects to match type properties:"): while True: dest_element = revit.pick_element() if not dest_element: break dest_type = revit.query.get_type(dest_element) with revit.Transaction("Match Type Properties"): match_prop(dest_element, dest_type, src_props)
def pick_and_match_dim_overrides(src_dim_id): with forms.WarningBar(title='Pick dimensions to match overrides:'): src_dim = revit.doc.GetElement(src_dim_id) while True: dest_dim = revit.pick_element() if not dest_dim: break if isinstance(dest_dim, DB.Dimension): with revit.Transaction('Match Dimension Overrides'): setup_dim_overrides_per_config(src_dim, dest_dim)
def pick_and_match_styles(src_style): with forms.WarningBar(title='Pick objects to match overrides:'): while True: dest_element = revit.pick_element() if not dest_element: break dest_element_ids = [dest_element.Id] if hasattr(dest_element, 'GetSubComponentIds'): dest_element_ids.extend(dest_element.GetSubComponentIds()) with revit.Transaction('Match Graphics Overrides'): for dest_elid in dest_element_ids: revit.active_view.SetElementOverrides(dest_elid, src_style)
def pick_and_match_dim_overrides(src_dim_id): with forms.WarningBar(title='Pick dimensions to match overrides:'): src_dim = revit.doc.GetElement(src_dim_id) if src_dim.NumberOfSegments > 1: src_dim = src_dim.Segments[0] while True: dest_dim = revit.pick_element() if not dest_dim: break if isinstance(dest_dim, DB.Dimension): with revit.Transaction('Match Dimension Overrides'): if dest_dim.NumberOfSegments > 1: segments = dest_dim.Segments for segment in segments: setup_dim_overrides_per_config(src_dim, segment) else: setup_dim_overrides_per_config(src_dim, dest_dim)
def pick_chain(doc): selection = revit.selection.get_selection() # last_selection = selection.element_ids selected_curve = revit.pick_element("Select curves to sort by") if not selected_curve: forms.alert("Nothing selected") return None, None logger.debug("selected_curve: %s" % str(selected_curve.Id)) try: selected_curve.GeometryCurve except: forms.alert( "Error! Selected element is not a Curve.\nOr it have no GeometryCurve parameter" ) return None, None if not selected_curve.GeometryCurve.IsBound: forms.alert("Error! Curve cannot be bounded") # chain selection_list_sorted, selection_list_sorted_isreversed = _find_curve_chain( selected_curve, doc) logger.debug("selection_list_sorted: %s" % selection_list_sorted) if len(selection_list_sorted) > 1: # TODO undo selection.set_to(selection_list_sorted) form_result = TaskDialog.Show( "Select curve chain?", "Curve chain found. Use it?\nIf not, only one selected curve will be used", TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.No) # selection.set_to(last_selection) if str(form_result) == "Yes": return selection_list_sorted, selection_list_sorted_isreversed logger.debug("Selected_curve: %s" % [selected_curve.Id]) return [selected_curve.Id], None
source_element = selected_elements[0] target_type = "Views" if isinstance(source_element, DB.View)\ else "Elements" else: source_element = None # ask for type of elements to match # some are not selectable in graphical views target_type = \ forms.CommandSwitchWindow.show( ["Elements", "Views"], message="Pick type of targets:") # determine source element if target_type == "Elements": with forms.WarningBar(title="Pick source object:"): source_element = revit.pick_element() elif target_type == "Views": source_element = \ forms.select_views(title="Select Source View", multiple=False) # grab parameters from source element if source_element: target_element = None if target_type == "Elements": target_element = revit.pick_element(message="Pick target element:") elif target_type == "Views": target_element = \ forms.select_views(title="Select Target View", multiple=False) if target_element: compare_props(source_element, target_element)
from pyrevit import revit from pyrevit import forms import tagscfg import tagsmgr __author__ = '{{author}}' def pick_and_match_styles(src_element): with forms.WarningBar(title='Pick target elements:'): while True: dest_element = revit.pick_element() if not dest_element: break with revit.Transaction('Match Tags'): tagsmgr.match_tags(src_element, [dest_element]) if tagscfg.verify_tags_configs(): with forms.WarningBar(title='Pick source element:'): source_element = revit.pick_element() if source_element: pick_and_match_styles(source_element) else: forms.alert('Tags tools need to be configured before using. ' 'Click on the Tags Settings button to setup.')
Solids.append(d) elif type(i) == DB.Solid: if i.Volume != 0: Solids.append(i) return Solids #elementInstance= revit.pick_element() allColumn = rpw.db.Collector(of_category='OST_StructuralColumns', is_type=False).get_elements(wrapped=False) allFraming = rpw.db.Collector(of_category='OST_StructuralFraming', is_type=False).get_elements(wrapped=False) picked = revit.pick_element() @rpw.db.Transaction.ensure('ResetColumnToInstance') def ResetColumnToInstance(Element): for element in Element: try: level = doc.GetElement(element.LevelId) baseLevel = element.Parameter[ DB.BuiltInParameter.FAMILY_BASE_LEVEL_PARAM] topLevel = element.Parameter[ DB.BuiltInParameter.FAMILY_TOP_LEVEL_PARAM] baseOffset = element.Parameter[ DB.BuiltInParameter.FAMILY_BASE_LEVEL_OFFSET_PARAM] topOffset = element.Parameter[
for param in element.Parameters: param_name = param.Definition.Name if not param.IsReadOnly and param.Definition.BuiltInParameter not in exclude_biparams: if param_name in value_dict.keys(): param_value = value_dict[param_name] try: logger.debug('Setting param: {} to value: {}'.format( param_name, param_value)) param.Set(param_value) except Exception: logger.debug('Param: {} Value is not settable: {}'.format( param_name, param_value)) selection = revit.get_selection() with revit.Transaction('Change Element Types'): src_element = \ revit.pick_element('Pick object with source element type') if src_element: src_type = src_element.GetTypeId() for dest_element in selection.elements: logger.debug('Converting: {} | {}'.format(dest_element.Id, dest_element)) value_dict = get_param_values(dest_element) new_element = dest_element.ChangeTypeId(src_type) if new_element != DB.ElementId.InvalidElementId: set_param_values(revit.doc.GetElement(new_element), value_dict) else: set_param_values(dest_element, value_dict)
# -*- coding: utf-8 -*- __doc__ = "返回选择物体的类型" import rpw import clr from rpw import db, doc from pyrevit import revit, DB, HOST_APP, UI from rpw.ui.forms import FlexForm, Label, ComboBox, TextBox, TextBox, Separator, Button, SelectFromList floor = revit.pick_element() beams = revit.pick_elements() #out_sUV = clr.Reference[DB.UV]() #out_eUV = clr.Reference[DB.UV]() #out_sDistance = clr.Reference[float]() #out_eDistance = clr.Reference[float]() currentView = revit.uidoc.ActiveView @rpw.db.Transaction.ensure('CreateBeam') def CreateBeam(Curve, FamilySymbol, Level, StructureType): doc.Create.NewFamilyInstance(Curve, FamilySymbol, Level, StructureType) @rpw.db.Transaction.ensure('DeleteFamilyInstance') def DeleteFamilyInstance(FamilyInstanceId): doc.Delete(FamilyInstanceId) for beam in beams:
exitscript=True) vport_element_ids = vsheet.GetAllViewports() vports = [] for vp_id in vport_element_ids: vports.Add(doc.GetElement(vp_id)) counter = 0 carry = '' try: while True: counter += 1 selection_element = revit.pick_element('Anything') detail_number = selection_element.LookupParameter("Detail Number") with revit.Transaction("Toggle", doc=doc): for vp in vports: cur_vp_param = vp.LookupParameter("Detail Number") cur_vp = str(cur_vp_param.AsString()) if cur_vp == str(counter): carry = str(detail_number.AsString()) detail_number.Set("99") cur_vp_param.Set(carry) detail_number.Set(str(counter)) except: TaskDialog.Show('Test', 'Done') pass
import clr #clr.AddReference('libintl') clr.AddReference('ProtoGeometry') from Autodesk.DesignScript.Geometry import * clr.AddReference("RevitAPI") from Autodesk.Revit.DB import * #clr.AddReference('mscorlib') clr.AddReference("RevitServices") import RevitServices from RevitServices.Persistence import DocumentManager # Import ToDSType(bool) extension method clr.AddReference("RevitNodes") import Revit from Revit.GeometryConversion import * # Import ToProtoType, ToRevitType geometry conversion extension methods clr.ImportExtensions(Revit.Elements) clr.ImportExtensions(Revit.GeometryConversion) #Wall = revit.pick_element().get_Geometry(DB.Options()).GetEnumerator() Wall = revit.pick_element() #Wall.MoveNext() #C=Wall.Current #print(C) with db.Transaction('Move Beam To Floor'): Element = Wall.ToDSType(False) print(Element) #print (assembly.GetName().Name for assembly in clr.References)
# -*- coding: utf-8 -*- __doc__ = "返回选择物体的类型" import rpw from rpw.ui.forms import FlexForm, Label, ComboBox, TextBox, TextBox, Separator, Button, SelectFromList from System.Collections.Generic import List from rpw import doc, db from pyrevit import revit, DB, HOST_APP, UI import json import pickle from Helper import * import math import random from pyrevit import forms from pyrevit.framework import Stopwatch curview = revit.active_view curdoc = revit.doc selections = revit.pick_element() print(selections.UniqueId)