runtime
Module that compiles the base DLL on load.
Attributes
mlogger = logger.get_logger(__name__)
module-attribute
INTERFACE_TYPES_DIR = RUNTIME_DIR
module-attribute
DOTNET_DIR = op.join(os.getenv('windir'), 'Microsoft.NET', 'Framework')
module-attribute
DOTNET64_DIR = op.join(os.getenv('windir'), 'Microsoft.NET', 'Framework64')
module-attribute
DOTNET_SDK_DIR = op.join(os.getenv('programfiles(x86)'), 'Reference Assemblies', 'Microsoft', 'Framework', '.NETFramework')
module-attribute
DOTNET_FRAMEWORK_DIRS = sorted([x for x in os.listdir(DOTNET_DIR) if x.startswith('v4.') and 'X' not in x], reverse=True)
module-attribute
DOTNET64_FRAMEWORK_DIRS = sorted([x for x in os.listdir(DOTNET64_DIR) if x.startswith('v4.') and 'X' not in x], reverse=True)
module-attribute
DOTNET_TARGETPACK_DIRS = sorted([x for x in os.listdir(DOTNET_SDK_DIR) if x.startswith('v4.') and 'X' not in x], reverse=True)
module-attribute
RUNTIME_NAMESPACE = 'PyRevitLabs.PyRevit.Runtime'
module-attribute
CMD_EXECUTOR_TYPE_NAME = '{}.{}'.format(RUNTIME_NAMESPACE, 'ScriptCommand')
module-attribute
CMD_AVAIL_TYPE_NAME_EXTENDED = coreutils.make_canonical_name(RUNTIME_NAMESPACE, 'ScriptCommandExtendedAvail')
module-attribute
CMD_AVAIL_TYPE_NAME_SELECTION = coreutils.make_canonical_name(RUNTIME_NAMESPACE, 'ScriptCommandSelectionAvail')
module-attribute
CMD_AVAIL_TYPE_NAME_ZERODOC = coreutils.make_canonical_name(RUNTIME_NAMESPACE, 'ScriptCommandZeroDocAvail')
module-attribute
CMD_AVAIL_NAME_POSTFIX = '-avail'
module-attribute
SOURCE_FILE_EXT = '.cs'
module-attribute
SOURCE_FILE_FILTER = '(\\.cs)'
module-attribute
CPYTHON_ENGINE = user_config.get_active_cpython_engine()
module-attribute
BASE_TYPES_DIR_HASH = coreutils.get_str_hash(coreutils.calculate_dir_hash(INTERFACE_TYPES_DIR, '', SOURCE_FILE_FILTER) + EXEC_PARAMS.engine_ver + str(CPYTHON_ENGINE.Version) if CPYTHON_ENGINE else '0')[:HASH_CUTOFF_LENGTH]
module-attribute
RUNTIME_ASSM_FILE_ID = '{}_{}'.format(BASE_TYPES_DIR_HASH, RUNTIME_NAMESPACE)
module-attribute
RUNTIME_ASSM_FILE = op.join(BIN_DIR, 'pyRevitLabs.PyRevit.Runtime.{}.dll'.format(HOST_APP.version))
module-attribute
RUNTIME_ASSM_NAME = op.splitext(op.basename(RUNTIME_ASSM_FILE))[0]
module-attribute
RUNTIME_ASSM = None
module-attribute
assm_list = assmutils.find_loaded_asm(RUNTIME_ASSM_NAME)
module-attribute
CMD_EXECUTOR_TYPE = assmutils.find_type_by_name(RUNTIME_ASSM, CMD_EXECUTOR_TYPE_NAME)
module-attribute
CMD_AVAIL_TYPE_EXTENDED = assmutils.find_type_by_name(RUNTIME_ASSM, CMD_AVAIL_TYPE_NAME_EXTENDED)
module-attribute
CMD_AVAIL_TYPE_SELECTION = assmutils.find_type_by_name(RUNTIME_ASSM, CMD_AVAIL_TYPE_NAME_SELECTION)
module-attribute
CMD_AVAIL_TYPE_ZERODOC = assmutils.find_type_by_name(RUNTIME_ASSM, CMD_AVAIL_TYPE_NAME_ZERODOC)
module-attribute
Classes
Functions
get_references()
Get list of all referenced assemblies.
Returns:
Type | Description |
---|---|
list
|
referenced assemblies |
Source code in pyrevitlib/pyrevit/runtime/__init__.py
create_ipyengine_configs(clean=False, full_frame=False, persistent=False)
Return the configuration for ipython engine.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
clean |
bool
|
Engine should be clean. Defaults to False. |
False
|
full_frame |
bool
|
Engine shoul be full frame. Defaults to False. |
False
|
persistent |
bool
|
Engine should persist. Defaults to False. |
False
|
Returns:
Type | Description |
---|---|
str
|
Configuration |
Source code in pyrevitlib/pyrevit/runtime/__init__.py
create_ext_command_attrs()
Create dotnet attributes for Revit external commands.
This method is used in creating custom dotnet types for pyRevit commands
and compiling them into a DLL assembly. Current implementation sets
RegenerationOption.Manual
and TransactionMode.Manual
Returns:
Type | Description |
---|---|
list[CustomAttributeBuilder]
|
object for |
Source code in pyrevitlib/pyrevit/runtime/__init__.py
create_type(modulebuilder, type_class, class_name, custom_attr_list, *args)
Create a dotnet type for a pyRevit command.
See baseclasses.cs
code for the template pyRevit command dotnet type
and its constructor default arguments that must be provided here.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
modulebuilder |
obj: |
required | |
type_class |
type
|
source dotnet type for the command |
required |
class_name |
str
|
name for the new type |
required |
custom_attr_list |
obj: |
required | |
*args |
Any
|
list of arguments to be used with type constructor |
()
|
Returns:
Type | Description |
---|---|
type
|
returns created dotnet type |
Examples:
asm_builder = AppDomain.CurrentDomain.DefineDynamicAssembly(
win_asm_name, AssemblyBuilderAccess.RunAndSave, filepath
)
module_builder = asm_builder.DefineDynamicModule(
ext_asm_file_name, ext_asm_full_file_name
)
create_type(
module_builder,
runtime.ScriptCommand,
"PyRevitSomeCommandUniqueName",
runtime.create_ext_command_attrs(),
[scriptpath, atlscriptpath, searchpath, helpurl, name,
bundle, extension, uniquename, False, False])
Source code in pyrevitlib/pyrevit/runtime/__init__.py
371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 |
|