def __init__(self): import revitronui self.config = revitron.DocumentConfigStorage().get( 'revitron.export', defaultdict()) try: address = self.config.get('PDF_Printer_Address') output = self.config.get('PDF_Temporary_Output_Path') self.directory = self.config.get('Sheet_Export_Directory') self.defaultSize = self.config.get('Default_Sheet_Size') except: revitronui.Alert('Please configure your PDF exporter first!') if not address: revitronui.Alert('Please configure the PDF Printer address first!') if not output: revitronui.Alert( 'Please configure the temporary PDF output directory first!') if not self.directory: revitronui.Alert('Please configure the export directory first!') if not self.defaultSize: revitronui.Alert('Please configure a paper size settings first!') self.exporter = revitron.PDFExporter(address, output) self.sizeParamName = self.config.get('Sheet_Size_Parameter_Name') self.orientationParamName = self.config.get( 'Sheet_Orientation_Parameter_Name') self.defaultOrientation = self.config.get('Default_Sheet_Orientation')
def testConfigStorage(self): config = revitron.DocumentConfigStorage() config.set('test.1', {'key': 'value'}) config.set('test.2', 'string') raw = revitron._(revitron.DOC.ProjectInformation).get( config.storageName) self.assertEquals(raw, '{"test.1": {"key": "value"}, "test.2": "string"}') self.assertEquals(config.get('test.2'), 'string')
def __init__(self): import revitronui self.config = revitron.DocumentConfigStorage().get( 'revitron.export', defaultdict()) try: self.exporter = revitron.DWGExporter( self.config.get('DWG_Export_Setup')) except: revitronui.Alert('Please configure your DWG exporter first!') self.directory = self.config.get('Sheet_Export_Directory', False) if not self.directory: revitronui.Alert('Please configure the export directory first!')
import revitron import revitronui import sqlite3 import pyrevit import os config = revitron.DocumentConfigStorage().get('revitron.history', dict()) sqliteFile = config.get('file', '') output = pyrevit.output.get_output() def flexCharts(charts): nodes = [] scripts = [] for chart in charts: chart._setup_charts() canvasId = chart._make_canvas_unique_id() nodes.append(chart._make_canvas_code(canvasId)) scripts.append(chart._make_charts_script(canvasId)) output.print_html('<r-flex>{}</r-flex>'.format(''.join(nodes))) for script in scripts: output.inject_script(script, body=True) if not sqliteFile: revitronui.Alert('Logging is disabled for this model!') try: output.print_html('<h1>Model Stats for {}</h1>'.format(revitron.DOC.Title)) output.add_style('body { padding: 50px; }')
def addFields(components, fields): for field in fields: if field == '---': components.append(Separator()) else: key = revitron.String.sanitize(field) components.append(Label(field)) components.append(TextBox(key, Text=config.get(key))) return components if not revitron.Document().isFamily(): config = revitron.DocumentConfigStorage().get('revitron.export', defaultdict()) components = addFields([], [ 'Sheet Export Directory', 'Sheet Naming Template', 'Sheet Size Parameter Name', 'Default Sheet Size', 'Sheet Orientation Parameter Name' ]) orientationField = 'Default Sheet Orientation' orientationKey = revitron.String.sanitize(orientationField) orientations = ['Landscape', 'Portrait'] default = orientations[0] if config.get(orientationKey) in orientations: default = config.get(orientationKey) components.append(Label(orientationField)) components.append(ComboBox(orientationKey, orientations, default=default))
from pyrevit import script mlogger = logger.get_logger(__name__) if not revitron.Document().isFamily(): out = script.get_output() UI.printLogo() UI.printTitle() out.print_html('Removing registered extensions') extManager = rpm.ExtensionsManager() extManager.removeAll() out.print_html('Getting project dependencies<br>') lines = revitron.DocumentConfigStorage().get('rpm.extensions', '').split('\r\n') for line in lines: items = line.split('\t') try: extType = items[0].strip() extRepo = items[1].strip() except: extType = '' extRepo = '' if extRepo: try: extName = os.path.basename(extRepo).replace('.git', '')
import revitron import sys from pyrevit import forms if not forms.check_workshared(revitron.DOC): sys.exit() config = revitron.DocumentConfigStorage().get('revitron.history', dict()) sqliteFile = config.get('file', '') msgDisabled = """Logging transactions is disabled for this Revit model. Select or create a database to enable logging.""" msgEnabled = """Logging transactions is enabled for this Revit model. The following database is used: {}""" def alertReopen(): forms.alert( 'Note that changes won\'t take effect until the current file is closed and reopened again.' ) res = None optionSelect = 'Select or create database' optionDisable = 'Disable logging' optionCancel = 'Close' if not sqliteFile: res = forms.alert(msgDisabled, options=[optionSelect, optionCancel]) else:
def _getSqliteFile(self): import revitron config = revitron.DocumentConfigStorage().get('revitron.history', dict()) return config.get('file', '')
Define extensions to be used with this Revit model. Defined extensions can be installed by using the "Install Extensions" button. """ import revitron import System.Windows from pyrevit import script from rpw.ui.forms import FlexForm, TextBox, Button, Label def openHelp(sender, e): script.open_url( 'https://revitron-ui.readthedocs.io/en/latest/tools/rpm.html') if not revitron.Document().isFamily(): config = revitron.DocumentConfigStorage().get('rpm.extensions') components = [ Label( 'You can define a list of pyRevit extensions to be used with the currently active model.\n' 'That list will be stored in the project information and therefore can be easily distributed\n' 'among other team members to easly create a common work environment.\n' 'To install or switch to the extension saved with your project just hit the "Install Extensions" button.\n\n' 'Enter one extension per line providing the type of the extension ("ui" or "lib")\n' 'and the repository URL separated by a TAB as follows:', FontSize=14, Height=140, Width=650), Label( 'ui https://ui-extension-repository.git\r\nlib https://lib-extension-repository.git', FontFamily=System.Windows.Media.FontFamily('Consolas'),
import revitron import os from revitron import _ from pyrevit import script from collections import defaultdict config = revitron.DocumentConfigStorage().get('revitron.export', defaultdict()) setup = config.get('DWG_Export_Setup') exporter = revitron.DWGExporter(setup) sheets = revitron.Selection().get() if not sheets: sheets = [revitron.ACTIVEVIEW] dirs = [] for sheet in sheets: path = exporter.exportSheet(sheet, config.get('Sheet_Export_Directory'), config.get('Sheet_Naming_Template')) if path: dirs.append(os.path.dirname(path)) script.get_output().print_html( ':smiling_face: Exported <em>{}</em>'.format( os.path.basename(path))) else: script.get_output().print_html( ':pouting_face: Error exporting <em>{}</em>'.format( os.path.basename(path))) dirs = list(set(dirs))
component_values = {} window = Window.GetWindow(sender) for container in [ window.Main, window.Settings, window.Raw, window.Finished ]: for component in container.Children: try: component_values[component.Name] = component.value except AttributeError: pass window.values = component_values window.close() config = revitron.DocumentConfigStorage().get( 'revitron.rooms.calculateRoomHeights', defaultdict()) fields = addField(OrderedDict(), config, 'roomFltrParam', 'Room Filter Parameter Name', 'TextBox', tab='Settings') fields = addField(fields, config, 'roomFltrList', 'Room Filter List (separate multiple by comma)', 'TextBox', tab='Settings') fields = addField(fields, config,