Пример #1
0
    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
Пример #2
0
def get_pyrevit_version():
    """Return pyRevit version.

    Returns:
        :obj:`pyrevit.versionmgr.PyRevitVersion`: pyRevit version provider
    """
    return versionmgr.get_pyrevit_version()
Пример #3
0
    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()
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
    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
Пример #7
0
    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
Пример #8
0
    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()
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
    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
Пример #12
0
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))
Пример #13
0
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())
Пример #14
0
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
Пример #15
0
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()