def get_pat_data(self): pat_type = 'MODEL' if self._model_pat else 'DRAFTING' unit_type = 'INCH' if self._scale == 12 else 'MM' pyrvtver = versionmgr.get_pyrevit_version() pattern_desc = \ PAT_FILE_TEMPLATE.format(time=coreutils.current_time(), date=coreutils.current_date(), version=pyrvtver.get_formatted(), units=unit_type, name=self._name, type=pat_type) for pat_grid in self._pattern_grids: grid_desc = \ PAT_SEPARATOR.join([str(degrees(pat_grid.angle)), str(pat_grid.origin.u * self._scale), str(pat_grid.origin.v * self._scale), str(pat_grid.shift * self._scale), str(pat_grid.offset * self._scale)]) grid_desc += PAT_SEPARATOR if pat_grid.segments: scaled_segments = [] for idx, seg in enumerate(pat_grid.segments): if idx % 2 != 0: seg *= -1 scaled_segments.append(seg * self._scale) grid_desc += PAT_SEPARATOR.join([str(seg_l) for seg_l in scaled_segments]) pattern_desc += grid_desc + '\n' return pattern_desc
def get_pyrevit_version(): """Return pyRevit version. Returns: :obj:`pyrevit.versionmgr.PyRevitVersion`: pyRevit version provider """ return versionmgr.get_pyrevit_version()
def __init_from_dir__(self, package_dir): GenericUIContainer.__init_from_dir__(self, package_dir) self.pyrvt_version = get_pyrevit_version().get_formatted() self.dir_hash_value = self._read_dir_hash() if not self.dir_hash_value: self.dir_hash_value = self._calculate_extension_dir_hash()
def report_env(): # log python version, home directory, config file, ... # get python version that includes last commit hash pyrvt_ver = versionmgr.get_pyrevit_version().get_formatted() system_diag() mlogger.info('pyRevit version: %s - </> with :growing_heart: in %s', pyrvt_ver, about.get_pyrevit_about().madein) if user_config.core.get_option('rocketmode', False): mlogger.info('pyRevit Rocket Mode enabled. :rocket:') if HOST_APP.is_newer_than(2017): full_host_name = \ HOST_APP.version_name.replace(HOST_APP.version, HOST_APP.subversion) else: full_host_name = HOST_APP.version_name mlogger.info('Host is %s (build: %s id: %s)', full_host_name, HOST_APP.build, HOST_APP.proc_id) mlogger.info('Running on: %s', sys.version) mlogger.info('User is: %s', HOST_APP.username) mlogger.info('Home Directory is: %s', HOME_DIR) mlogger.info('Session uuid is: %s', get_session_uuid()) mlogger.info('Base assembly is: %s', BASE_TYPES_ASM_NAME) mlogger.info('Config file is (%s): %s', user_config.config_type, user_config.config_file)
def setup_runtime_vars(): """Setup runtime environment variables with session information.""" # set pyrevit version pyrvt_ver = versionmgr.get_pyrevit_version().get_formatted() envvars.set_pyrevit_env_var(PYREVIT_VERSION_ENVVAR, pyrvt_ver) # set app version env var if HOST_APP.is_newer_than(2017): envvars.set_pyrevit_env_var(PYREVIT_APPVERSION_ENVVAR, HOST_APP.subversion) else: envvars.set_pyrevit_env_var(PYREVIT_APPVERSION_ENVVAR, HOST_APP.version) # set ironpython engine version env var attachment = user_config.get_current_attachment() if attachment and attachment.Clone: envvars.set_pyrevit_env_var(PYREVIT_IPYVERSION_ENVVAR, attachment.Engine.Version) # set cpython engine version env var cpyengine = user_config.get_active_cpython_engine() if cpyengine: envvars.set_pyrevit_env_var(PYREVIT_CSPYVERSION_ENVVAR, cpyengine.Version)
def __init__(self, xaml_file_name): forms.WPFWindow.__init__(self, xaml_file_name) pyrvtabout = about.get_pyrevit_about() try: pyrvt_repo = versionmgr.get_pyrevit_repo() pyrvt_ver = versionmgr.get_pyrevit_version() nice_version = 'v{}'.format(pyrvt_ver.get_formatted()) short_version = \ ' v{}'.format(pyrvt_ver.get_formatted(nopatch=True)) self.branch_name = pyrvt_repo.branch except Exception: nice_version = short_version = '' self.branch_name = None self.short_version_info.Text = short_version self.pyrevit_subtitle.Text = pyrvtabout.subtitle self.pyrevit_version.Text = nice_version self.pyrevit_branch.Text = self.branch_name self.pyrevit_engine.Text = 'Running on IronPython {}.{}.{}'\ .format(sys.version_info.major, sys.version_info.minor, sys.version_info.micro) rocketmodetext = \ 'Rocket-mode {}' \ .format('enabled' if __cachedengine__ else 'disabled') self.pyrevit_rmode.Text = rocketmodetext if not __cachedengine__: self.hide_element(self.rmode_icon) self.madein_tb.Text = 'in {}'.format(pyrvtabout.madein) self.copyright_tb.Text = pyrvtabout.copyright
def __init__(self, xaml_file_name): forms.WPFWindow.__init__(self, xaml_file_name) pyrvtabout = about.get_pyrevit_about() pyrvt_ver = versionmgr.get_pyrevit_version() nice_version = 'v{}'.format(pyrvt_ver.get_formatted()) short_version = \ ' v{}'.format(pyrvt_ver.get_formatted(nopatch=True)) self.branch_name = self.deployname = None # check to see if git repo is valid try: pyrvt_repo = versionmgr.get_pyrevit_repo() self.branch_name = pyrvt_repo.branch self.show_element(self.git_commit) self.show_element(self.git_branch) except Exception as getbranch_ex: logger.debug('Error getting branch: %s', getbranch_ex) # other wise try to get deployment name attachment = Revit.PyRevit.GetAttached(int(HOST_APP.version)) if attachment: try: self.deployname = attachment.Clone.Deployment.Name self.show_element(self.repo_deploy) except Exception as getdepl_ex: logger.debug('Error getting depoyment: %s', getdepl_ex) # get cli version pyrvt_cli_version = 'v' + versionmgr.get_pyrevit_cli_version() self.show_element(self.cli_info) self.cliversion.Text = pyrvt_cli_version # get cpython engine version self.cpyengine = user_config.get_active_cpython_engine() self.short_version_info.Text = short_version self.pyrevit_subtitle.Text = pyrvtabout.subtitle self.version.Text = nice_version self.pyrevit_branch.Text = self.branch_name self.pyrevit_deploy.Text = '{} deployment'.format(self.deployname) self.pyrevit_engine.Text = \ 'Running on IronPython {} (cpython {})'\ .format(sys.version.split('(')[0].strip(), '.'.join(list(str(self.cpyengine.Version)))) rocketmodetext = \ 'Rocket-mode {}' \ .format('enabled' if __cachedengine__ else 'disabled') self.pyrevit_rmode.Text = rocketmodetext if not __cachedengine__: self.hide_element(self.rmode_icon) self.madein_tb.Text = 'in {}'.format(pyrvtabout.madein) self.copyright_tb.Text = pyrvtabout.copyright
def _update_from_directory(self): #pylint: disable=W0221 # using classname otherwise exceptions in superclasses won't show GenericUIContainer._update_from_directory(self) self.pyrvt_version = versionmgr.get_pyrevit_version().get_formatted() # extensions can store event hooks under # hooks/ inside the component folder hooks_path = op.join(self.directory, exts.COMP_HOOKS_DIR_NAME) self.hooks_path = hooks_path if op.exists(hooks_path) else None self.dir_hash_value = self._calculate_extension_dir_hash()
def _create_asm_file(extension, ext_asm_file_name, ext_asm_file_path): # check to see if any older assemblies have been loaded for this package ext_asm_full_file_name = make_canonical_name(ext_asm_file_name, ASSEMBLY_FILE_TYPE) # this means that we currently have this package loaded and # we're reloading a new version is_reloading_pkg = _is_any_ext_asm_loaded(extension) # create assembly logger.debug('Building assembly for package: {}'.format(extension)) pyrvt_ver_int_tuple = get_pyrevit_version().as_int_tuple() win_asm_name = AssemblyName(Name=ext_asm_file_name, Version=Version(pyrvt_ver_int_tuple[0], pyrvt_ver_int_tuple[1], pyrvt_ver_int_tuple[2])) logger.debug('Generated assembly name for this package: {0}'.format( ext_asm_file_name)) logger.debug( 'Generated windows assembly name for this package: {0}'.format( win_asm_name)) logger.debug('Generated assembly file name for this package: {0}'.format( ext_asm_full_file_name)) # get assembly builder asm_builder = AppDomain.CurrentDomain.DefineDynamicAssembly( win_asm_name, AssemblyBuilderAccess.RunAndSave, op.dirname(ext_asm_file_path)) # get module builder module_builder = asm_builder.DefineDynamicModule(ext_asm_file_name, ext_asm_full_file_name) # create classes that could be called from any button (shared classes) # currently only default availability class is implemented. # Default availability class is for resetting buttons back to normal # context state (when reloading and after their context # has changed during a session). make_shared_types(module_builder) # create command classes for cmd_component in extension.get_all_commands(): # create command executor class for this command logger.debug('Creating types for command: {}'.format(cmd_component)) make_cmd_types(extension, cmd_component, module_builder) # save final assembly asm_builder.Save(ext_asm_full_file_name) load_asm_file(ext_asm_file_path) logger.debug('Executer assembly saved.') return ExtensionAssemblyInfo(ext_asm_file_name, ext_asm_file_path, is_reloading_pkg)
def _create_asm_file(extension, ext_asm_file_name, ext_asm_file_path): # check to see if any older assemblies have been loaded for this package ext_asm_full_file_name = \ coreutils.make_canonical_name(ext_asm_file_name, framework.ASSEMBLY_FILE_TYPE) # this means that we currently have this package loaded and # we're reloading a new version is_reloading_pkg = _is_any_ext_asm_loaded(extension) # create assembly mlogger.debug('Building assembly for package: %s', extension) pyrvt_ver_int_tuple = get_pyrevit_version().as_int_tuple() win_asm_name = AssemblyName(Name=ext_asm_file_name, Version=Version(pyrvt_ver_int_tuple[0], pyrvt_ver_int_tuple[1], pyrvt_ver_int_tuple[2])) mlogger.debug('Generated assembly name for this package: %s', ext_asm_file_name) mlogger.debug('Generated windows assembly name for this package: %s', win_asm_name) mlogger.debug('Generated assembly file name for this package: %s', ext_asm_full_file_name) # get assembly builder asm_builder = AppDomain.CurrentDomain.DefineDynamicAssembly( win_asm_name, AssemblyBuilderAccess.RunAndSave, op.dirname(ext_asm_file_path)) # get module builder module_builder = asm_builder.DefineDynamicModule(ext_asm_file_name, ext_asm_full_file_name) # create command classes for cmd_component in extension.get_all_commands(): # create command executor class for this command mlogger.debug('Creating types for command: %s', cmd_component) typemaker.make_bundle_types(extension, cmd_component, module_builder) # save final assembly asm_builder.Save(ext_asm_full_file_name) assmutils.load_asm_file(ext_asm_file_path) mlogger.debug('Executer assembly saved.') return ExtensionAssemblyInfo(ext_asm_file_name, ext_asm_file_path, is_reloading_pkg)
def __init__(self, xaml_file_name): forms.WPFWindow.__init__(self, xaml_file_name) pyrvtabout = about.get_pyrevit_about() pyrvt_ver = versionmgr.get_pyrevit_version() nice_version = 'v{}'.format(pyrvt_ver.get_formatted()) short_version = \ ' v{}'.format(pyrvt_ver.get_formatted(nopatch=True)) self.branch_name = self.deployname = None # check to see if git repo is valid try: pyrvt_repo = versionmgr.get_pyrevit_repo() self.branch_name = pyrvt_repo.branch self.show_element(self.git_branch) except Exception: # other wise try to get deployment name attachment = Revit.PyRevit.GetAttached(int(HOST_APP.version)) if attachment: try: self.deployname = attachment.Clone.GetDeployment().Name self.show_element(self.repo_deploy) except Exception as e: pass self.short_version_info.Text = short_version self.pyrevit_subtitle.Text = pyrvtabout.subtitle self.pyrevit_version.Text = nice_version self.pyrevit_branch.Text = self.branch_name self.pyrevit_deploy.Text = '{} deployment'.format(self.deployname) self.pyrevit_engine.Text = 'Running on IronPython {}'\ .format(sys.version.split('(')[0].strip()) rocketmodetext = \ 'Rocket-mode {}' \ .format('enabled' if __cachedengine__ else 'disabled') self.pyrevit_rmode.Text = rocketmodetext if not __cachedengine__: self.hide_element(self.rmode_icon) self.madein_tb.Text = 'in {}'.format(pyrvtabout.madein) self.copyright_tb.Text = pyrvtabout.copyright
def report_env(): # log python version, home directory, config file, ... # get python version that includes last commit hash pyrvt_ver = versionmgr.get_pyrevit_version().get_formatted() system_diag() logger.info('pyRevit version: {} - ' ':coded: with :small-black-heart: ' 'in {}'.format(pyrvt_ver, about.get_pyrevit_about().madein)) if user_config.core.get_option('rocketmode', False): logger.info('pyRevit Rocket Mode enabled. :rocket:') logger.info('Host is {} (build: {} id: {})'.format(HOST_APP.version_name, HOST_APP.build, HOST_APP.proc_id)) logger.info('Running on: {}'.format(sys.version)) logger.info('Home Directory is: {}'.format(HOME_DIR)) logger.info('Session uuid is: {}'.format(get_session_uuid())) logger.info('Base assembly is: {}'.format(BASE_TYPES_ASM_NAME)) logger.info('Config file is: {}'.format(user_config.config_file))
def setup_runtime_vars(): """Setup runtime environment variables with session information.""" # set pyrevit version pyrvt_ver = versionmgr.get_pyrevit_version().get_formatted() envvars.set_pyrevit_env_var(envvars.VERSION_ENVVAR, pyrvt_ver) # set app version env var if HOST_APP.is_newer_than(2017): envvars.set_pyrevit_env_var(envvars.APPVERSION_ENVVAR, HOST_APP.subversion) else: envvars.set_pyrevit_env_var(envvars.APPVERSION_ENVVAR, HOST_APP.version) # set ironpython engine version env var attachment = user_config.get_current_attachment() if attachment and attachment.Clone: envvars.set_pyrevit_env_var(envvars.CLONENAME_ENVVAR, attachment.Clone.Name) envvars.set_pyrevit_env_var(envvars.IPYVERSION_ENVVAR, str(attachment.Engine.Version)) else: mlogger.debug('Can not determine attachment.') envvars.set_pyrevit_env_var(envvars.CLONENAME_ENVVAR, "Unknown") envvars.set_pyrevit_env_var(envvars.IPYVERSION_ENVVAR, "0.0.0") # set cpython engine version env var cpyengine = user_config.get_active_cpython_engine() if cpyengine: envvars.set_pyrevit_env_var(envvars.CPYVERSION_ENVVAR, str(cpyengine.Version)) else: envvars.set_pyrevit_env_var(envvars.CPYVERSION_ENVVAR, "0.0.0") # set a list of important assemblies # this is required for dotnet script execution set_loaded_pyrevit_referenced_modules(runtime.get_references())
import System from System import Array from System import Enum clr.AddReferenceByName( 'Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' ) from Microsoft.Office.Interop import Excel try: from pyrevit.versionmgr import PYREVIT_VERSION except: from pyrevit import versionmgr PYREVIT_VERSION = versionmgr.get_pyrevit_version() from pyrevit import script #from pyrevit import scriptutils from pyrevit import framework from pyrevit import revit, DB, UI from pyrevit import forms pyRevitNewer44 = PYREVIT_VERSION.major >= 4 and PYREVIT_VERSION.minor >= 5 if pyRevitNewer44: from pyrevit import script, revit from pyrevit.forms import SelectFromList, SelectFromCheckBoxes output = script.get_output() logger = script.get_logger() linkify = output.linkify
import csv from pyrevit import versionmgr # SET DEBUGG TO TRUE FOR VERBOSE LOGGING IN CONSOLE WINDOW debugg = True # ... #----------BASIC VARIABLE DEFINITIONS-------- export_folder = 'C:\Temp' export_extension = 'in-place.csv' #-----------END VARIABLE DEFINITIONS---------- # 2019/03/05: Added pyrevit version checks #-----------GET PYREVIT VERSION---------------- pyrvt_ver = versionmgr.get_pyrevit_version() short_version = \ '{}'.format(pyrvt_ver.get_formatted(nopatch=True)) vv = short_version.split(".") pyrvt_ver_main = int(vv[0]) pyrvt_ver_min = int(vv[1]) #----------CONSOLE WINDOW AND ELEMENT STYLES-------- console = script.get_output() console.set_height(480) console.lock_size() report_title = 'In-Place Families' report_date = coreutils.current_date() # 2/1/2019: added query method to replace deprecated revit.get_project_info()