pyrevit - pyRevit (original) (raw)

pyRevit root level config for all pyrevit sub-modules.

Attributes

PYREVIT_ADDON_NAME = 'pyRevit' module-attribute

PYREVIT_CLI_NAME = 'pyrevit.exe' module-attribute

VERSION_STRING = version_file.read() module-attribute

matches = re.findall('(\\d+)\\.(\\d+)\\.(\\d+)\\.?(.+)?', VERSION_STRING)[0] module-attribute

BUILD_METADATA = '' module-attribute

VERSION_MAJOR = int(VERSION_MAJOR) module-attribute

VERSION_MINOR = int(VERSION_MINOR) module-attribute

VERSION_PATCH = int(VERSION_PATCH) module-attribute

HOME_DIR = op.dirname(op.dirname(op.dirname(__file__))) module-attribute

DOTNET_RUNTIME_ID = 'netcore' if compat.NETCORE else 'netfx' module-attribute

ROOT_BIN_DIR = op.join(HOME_DIR, 'bin') module-attribute

BIN_DIR = op.join(ROOT_BIN_DIR, DOTNET_RUNTIME_ID) module-attribute

MAIN_LIB_DIR = op.join(HOME_DIR, 'pyrevitlib') module-attribute

MISC_LIB_DIR = op.join(HOME_DIR, 'site-packages') module-attribute

MODULE_DIR = op.join(MAIN_LIB_DIR, 'pyrevit') module-attribute

LOADER_DIR = op.join(MODULE_DIR, 'loader') module-attribute

RUNTIME_DIR = op.join(MODULE_DIR, 'runtime') module-attribute

ADDIN_DIR = op.join(LOADER_DIR, 'addin') module-attribute

ENGINES_DIR = op.join(BIN_DIR, 'engines', eng.EngineVersion) module-attribute

PYREVIT_CLI_PATH = op.join(HOME_DIR, 'bin', PYREVIT_CLI_NAME) module-attribute

TRACEBACK_TITLE = 'Traceback:' module-attribute

HOST_APP = _HostApplication() module-attribute

EXEC_PARAMS = _ExecutorParams() module-attribute

DOCS = _DocsGetter() module-attribute

ALLUSER_PROGRAMDATA = os.getenv('programdata') module-attribute

USER_ROAMING_DIR = os.getenv('appdata') module-attribute

USER_SYS_TEMP = os.getenv('temp') module-attribute

USER_DESKTOP = op.expandvars('%userprofile%\\desktop') module-attribute

EXTENSIONS_DEFAULT_DIR = op.join(HOME_DIR, 'extensions') module-attribute

THIRDPARTY_EXTENSIONS_DEFAULT_DIR = op.join(USER_ROAMING_DIR, PYREVIT_ADDON_NAME, 'Extensions') module-attribute

PYREVIT_ALLUSER_APP_DIR = op.join(ALLUSER_PROGRAMDATA, PYREVIT_ADDON_NAME) module-attribute

PYREVIT_APP_DIR = op.join(USER_ROAMING_DIR, PYREVIT_ADDON_NAME) module-attribute

PYREVIT_VERSION_APP_DIR = op.join(PYREVIT_APP_DIR, HOST_APP.version) module-attribute

PYREVIT_FILE_PREFIX_UNIVERSAL = '{}_'.format(PYREVIT_ADDON_NAME) module-attribute

PYREVIT_FILE_PREFIX_UNIVERSAL_REGEX = '^' + PYREVIT_ADDON_NAME + '_(?P<fname>.+)' module-attribute

PYREVIT_FILE_PREFIX = '{}_{}_'.format(PYREVIT_ADDON_NAME, HOST_APP.version) module-attribute

PYREVIT_FILE_PREFIX_REGEX = '^' + PYREVIT_ADDON_NAME + '_(?P<version>\\d{4})_(?P<fname>.+)' module-attribute

PYREVIT_FILE_PREFIX_STAMPED = '{}_{}_{}_'.format(PYREVIT_ADDON_NAME, HOST_APP.version, HOST_APP.proc_id) module-attribute

PYREVIT_FILE_PREFIX_STAMPED_REGEX = '^' + PYREVIT_ADDON_NAME + '_(?P<version>\\d{4})_(?P<pid>\\d+)_(?P<fname>.+)' module-attribute

PYREVIT_FILE_PREFIX_UNIVERSAL_USER = '{}_{}_'.format(PYREVIT_ADDON_NAME, HOST_APP.username) module-attribute

PYREVIT_FILE_PREFIX_UNIVERSAL_USER_REGEX = '^' + PYREVIT_ADDON_NAME + '_(?P<user>.+)_(?P<fname>.+)' module-attribute

PYREVIT_FILE_PREFIX_USER = '{}_{}_{}_'.format(PYREVIT_ADDON_NAME, HOST_APP.version, HOST_APP.username) module-attribute

PYREVIT_FILE_PREFIX_USER_REGEX = '^' + PYREVIT_ADDON_NAME + '_(?P<version>\\d{4})_(?P<user>.+)_(?P<fname>.+)' module-attribute

PYREVIT_FILE_PREFIX_STAMPED_USER = '{}_{}_{}_{}_'.format(PYREVIT_ADDON_NAME, HOST_APP.version, HOST_APP.username, HOST_APP.proc_id) module-attribute

PYREVIT_FILE_PREFIX_STAMPED_USER_REGEX = '^' + PYREVIT_ADDON_NAME + '_(?P<version>\\d{4})_(?P<user>.+)_(?P<pid>\\d+)_(?P<fname>.+)' module-attribute

Classes

PyRevitException

Bases: Exception

Common base class for all pyRevit exceptions.

Parameters args and message are derived from Exception class.

Attributes

msg property

Return exception message.

PyRevitIOError

Bases: [PyRevitException](#pyrevit.PyRevitException "PyRevitException (pyrevit.PyRevitException)")

Common base class for all pyRevit io-related exceptions.

Attributes

msg property

Return exception message.

PyRevitCPythonNotSupported(feature_name)

Bases: [PyRevitException](#pyrevit.PyRevitException "PyRevitException (pyrevit.PyRevitException)")

Exception for features not supported under CPython.

Source code in pyrevitlib/pyrevit/__init__.py

def __init__(self, feature_name): super(PyRevitCPythonNotSupported, self).__init__() self.feature_name = feature_name

Attributes

feature_name = feature_name instance-attribute
msg property

Return exception message.

_HostApplication()

Bases: object

Private Wrapper for Current Instance of Revit.

Provides version info and comparison functionality, alongside providing info on the active screen, active document and ui-document, available postable commands, and other functionality.

Examples:

[](#%5F%5Fcodelineno-0-1)hostapp = _HostApplication() [](#%5F%5Fcodelineno-0-2)hostapp.is_newer_than(2017)

Source code in pyrevitlib/pyrevit/__init__.py

def __init__(self): self._postable_cmds = []

Attributes

uiapp property

Return UIApplication provided to the running command.

app property

Return Application provided to the running command.

addin_id property

Return active addin id.

has_api_context property

Determine if host application is in API context.

uidoc property

Return active UIDocument.

doc property

Return active Document.

active_view property writable

Return view that is active (UIDocument.ActiveView).

docs property

Return :obj:list of open :obj:Document objects.

available_servers property

Return :obj:list of available Revit server names.

version property

str: Return version number (e.g. '2018').

subversion property

str: Return subversion number (e.g. '2018.3').

version_name property

str: Return version name (e.g. 'Autodesk Revit 2018').

build property

str: Return build number (e.g. '20170927_1515(x64)').

serial_no property

str: Return serial number number (e.g. '569-09704828').

pretty_name property

Returns the pretty name of the host.

Examples:

Autodesk Revit 2019.2 build: 20190808_0900(x64)

Returns:

Type Description
str Pretty name of the host
is_demo property

bool: Determine if product is using demo license.

language property

str: Return language type (e.g. 'LanguageType.English_USA').

username property

str: Return the username from Revit API (Application.Username).

proc property

System.Diagnostics.Process: Return current process object.

proc_id property

int: Return current process id.

proc_name property

str: Return current process name.

proc_path property

str: Return file path for the current process main module.

proc_window property

intptr: Return handle to current process window.

proc_screen property

intptr: Return handle to screen hosting current process.

proc_screen_workarea property

System.Drawing.Rectangle: Return screen working area.

proc_screen_scalefactor property

float: Return scaling for screen hosting current process.

Functions

is_newer_than(version, or_equal=False)

bool: Return True if host app is newer than provided version.

Parameters:

Name Type Description Default
version str or int version to check against. required
or_equal bool Whether to include version in the comparison False

Source code in pyrevitlib/pyrevit/__init__.py

def is_newer_than(self, version, or_equal=False): """bool: Return True if host app is newer than provided version. Args: version (str or int): version to check against. or_equal (bool): Whether to include `version` in the comparison """ if or_equal: return int(self.version) >= int(version) else: return int(self.version) > int(version)
is_older_than(version)

bool: Return True if host app is older than provided version.

Parameters:

Name Type Description Default
version str or int version to check against. required

Source code in pyrevitlib/pyrevit/__init__.py

def is_older_than(self, version): """bool: Return True if host app is older than provided version. Args: version (str or int): version to check against. """ return int(self.version) < int(version)
is_exactly(version)

bool: Return True if host app is equal to provided version.

Parameters:

Name Type Description Default
version str or int version to check against. required

Source code in pyrevitlib/pyrevit/__init__.py

def is_exactly(self, version): """bool: Return True if host app is equal to provided version. Args: version (str or int): version to check against. """ return int(self.version) == int(version)
get_postable_commands()

Return list of postable commands.

Returns:

Type Description
list[_HostAppPostableCommand] postable commands.

Source code in pyrevitlib/pyrevit/__init__.py

def get_postable_commands(self): """Return list of postable commands. Returns: (list[_HostAppPostableCommand]): postable commands. """ # if list of postable commands is _not_ already created # make the list and store in instance parameter if not self._postable_cmds: for pc in UI.PostableCommand.GetValues(UI.PostableCommand): try: rcid = UI.RevitCommandId.LookupPostableCommandId(pc) self._postable_cmds.append( # wrap postable command info in custom namedtuple _HostAppPostableCommand(name=safe_strtype(pc), key=rcid.Name, id=rcid.Id, rvtobj=rcid) ) except Exception: # if any error occured when querying postable command # or its info, pass silently pass return self._postable_cmds
post_command(command_id)

Request Revit to run a command.

Parameters:

Name Type Description Default
command_id str command identifier e.g. ID_REVIT_SAVE_AS_TEMPLATE required

Source code in pyrevitlib/pyrevit/__init__.py

def post_command(self, command_id): """Request Revit to run a command. Args: command_id (str): command identifier e.g. ID_REVIT_SAVE_AS_TEMPLATE """ command_id = UI.RevitCommandId.LookupCommandId(command_id) self.uiapp.PostCommand(command_id)