diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/bundle.yaml b/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/bundle.yaml deleted file mode 100644 index a46ea7e0a..000000000 --- a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/bundle.yaml +++ /dev/null @@ -1,71 +0,0 @@ -title: - en_us: Compare Detail Views - fr_fr: Comparer les vues de détail - ru: Сравнить виды - chinese_s: 比较详图视图 - es_es: Comparar vistas de detalle - de_de: Detailansichten vergleichen - pt_br: Comparar Vistas de Detalhe -tooltip: - en_us: >- - Compared two views by comparing the contents against each other. By default - this tool does not pay attention to the element types. For example, two text - elements having the same contents but with different styles are considered - equal. This however can be overridden using the SHIFT-Click. If the views do - not match, all the different elements will be selected. This tool is helpful - when comparing duplicate detail views - - - SHIFT-Click: - - Include Element Types in comparing views - fr_fr: >- - Comparé deux vues en comparant les contenus les uns par rapport aux autres. Par défaut - cet outil ne fait pas attention aux types d'éléments. Par exemple, deux textes - ayant le même contenu mais avec des styles différents sont considérés - égal. Ceci peut cependant être remplacé en utilisant le SHIFT-Click. Si les vues ne correspondent pas, tous les différents éléments seront sélectionnés. Cet outil est utile - lors de la comparaison de vues de détail en double - - - SHIFT-Click: - - Inclure les types d'élément dans la comparaison des vues - ru: >- - Сравнение двух видов путем сравнения содержимого друг с другом. По умолчанию данный инструмент не учитывает типы элементов. Например, два текстовых элемента - с одинаковым текстом, но с разными стилями считаются одинаковыми. Однако это можно изменить, нажав SHIFT. Если виды не совпадают, будут выбраны все различные элементы. Данный инструмент полезен при сравнении скопированных видов. - - - SHIFT-Click: - - Включить типы элементов при сравнении видов. - chinese_s: "通过相互比较内容来对比两个视图。默认情况下,此工具不关注图元类型。例如,两个内容相同但样式不同的文字图元将被视为相等。但这可以通过按住 SHIFT 键单击来覆盖。如果视图不匹配,所有不同的图元将被选中。此工具在比较重复的详图视图时很有用\n\nSHIFT-单击:在比较视图时包含图元类型" - es_es: >- - Compara dos vistas comparando sus contenidos entre sí. Por defecto - esta herramienta no presta atención a los tipos de elementos. Por ejemplo, dos elementos - de texto que tienen el mismo contenido pero con diferentes estilos se consideran - iguales. Sin embargo, esto se puede anular usando SHIFT-Clic. Si las vistas no - coinciden, se seleccionarán todos los elementos diferentes. Esta herramienta es útil - al comparar vistas de detalle duplicadas - - - SHIFT-Clic: - - Incluir tipos de elementos al comparar vistas - de_de: >- - Vergleicht zwei Ansichten, indem es die Inhalte gegeneinander abgleicht. Standardmäßig berücksichtigt dieses Werkzeug die Elementtypen nicht. So werden beispielsweise zwei Textelemente mit gleichem Inhalt, aber unterschiedlichem Stil als gleichwertig betrachtet. Dies kann jedoch mit dem SHIFT-Klick außer Kraft gesetzt werden. Wenn die Ansichten nicht übereinstimmen, werden alle unterschiedlichen Elemente ausgewählt. Dieses Werkzeug ist hilfreich beim Vergleich von doppelten Detailansichten - - - SHIFT-Click: - - Ziehe Element Typen beim Vergleich mit ein - pt_br: >- - Compara duas vistas comparando o conteúdo uma contra a outra. - Por padrão, esta ferramenta não considera os tipos de elemento. - Por exemplo, dois elementos de texto com o mesmo conteúdo, - mas com estilos diferentes, são considerados iguais. - No entanto, isso pode ser substituído usando SHIFT-Clique. - Se as vistas não coincidirem, todos os elementos diferentes serão selecionados. - Esta ferramenta é útil ao comparar vistas de detalhe duplicadas - - SHIFT-Clique: - Incluir Tipos de Elemento na comparação de vistas diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/diffutils.py b/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/diffutils.py deleted file mode 100644 index 6bb240164..000000000 --- a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/diffutils.py +++ /dev/null @@ -1,139 +0,0 @@ -import re - -from pyrevit.coreutils.logger import get_logger -from pyrevit.coreutils import reverse_dict, get_str_hash -from pyrevit import DB -from pyrevit.compat import get_elementid_value_func - - -logger = get_logger(__name__) - - -type_param_exclude_list = ['Type', 'Type Name', 'Type Id', 'Family', - 'Family Name', 'Family and Type'] - -domain_param_exclude_list = ['Workset', 'Edited by', 'Design Option', - 'Drawn By', 'Level', 'Comments', - 'Copyright', 'Image'] - -custom_attrs = {DB.TextNote: ['LeaderCount', 'LeaderLeftAttachment', - 'LeaderRightAttachment', 'Text'], - DB.Dimension: ['Above', 'Below', 'Prefix', 'Suffix', - 'ValueOverride', 'AreSegmentsEqual', - 'NumberOfSegments']} - - -class DiffResults: - def __init__(self): - self.processed_params = set() - self.rvt_element_types = set() - self.diff_elements = [] - - -def cleanup_repr_str(repr_str): - repr_str = repr_str.strip('\n,\r') - return re.sub(' +', ' ', repr_str) - - -def element_hash(rvt_element, include_type=False, diff_results=None): - - def param_hash(param): - repr_str = '{} {}'.format(unicode(param.Definition.Name).ljust(30), - param.AsValueString()) - if diff_results: - diff_results.processed_params.add(param.Definition.Name) - return get_str_hash(cleanup_repr_str(repr_str)) - - def attribute_hash(el, attribute): - try: - repr_str = unicode(getattr(el, attribute)) - except Exception as hash_err: - logger.debug('Error reading attribute: ' - '{} form element {} with id: {} | {}' - .format(attribute, el, el.Id, hash_err)) - return '' - - if diff_results: - diff_results.processed_params.add(attribute) - - return get_str_hash(cleanup_repr_str(repr_str)) - - sorted_params = sorted(rvt_element.Parameters, - key=lambda x: x.Definition.Name) - if diff_results: - diff_results.rvt_element_types.add(type(rvt_element)) - - hash_value = '' - for parameter in sorted_params: - if parameter.Definition.Name not in domain_param_exclude_list: - if include_type: - hash_value += param_hash(parameter) - elif parameter.Definition.Name not in type_param_exclude_list: - hash_value += param_hash(parameter) - - if type(rvt_element) in custom_attrs: - for el_attr in custom_attrs[type(rvt_element)]: - hash_value += attribute_hash(rvt_element, el_attr) - - return get_str_hash(hash_value) - - -def element_hash_dict(element_list, include_type=False, diff_results=None): - get_elementid_value = get_elementid_value_func() - return {get_elementid_value(el.Id): element_hash(el, include_type, diff_results) - for el in element_list} - - -def compare(element_a, element_b, compare_types=False, diff_results=None): - return element_hash(element_a, - compare_types, - diff_results) == element_hash(element_b, - compare_types, - diff_results) - - -def compare_elmnt_sets(elementset_a, elementset_b, - compare_types=False, diff_results=None): - dict_a = element_hash_dict(elementset_a, compare_types, diff_results) - hash_list_a = sorted(dict_a.values()) - - dict_b = element_hash_dict(elementset_b, compare_types, diff_results) - hash_list_b = sorted(dict_b.values()) - - if hash_list_a == hash_list_b: - return True - - elif diff_results: - rdict_a = reverse_dict(dict_a) - rdict_b = reverse_dict(dict_b) - for el_hash in set(hash_list_a) ^ set(hash_list_b): - if el_hash in rdict_a: - for el_id in rdict_a[el_hash]: - diff_results.diff_elements.append(DB.ElementId(el_id)) - - if el_hash in rdict_b: - for el_id in rdict_b[el_hash]: - diff_results.diff_elements.append(DB.ElementId(el_id)) - - return False - - -def compare_views(doc, view_a, view_b, compare_types=False, diff_results=None): - view_a_elmts = DB.FilteredElementCollector(doc)\ - .OwnedByView(view_a.Id)\ - .WhereElementIsNotElementType()\ - .ToElements() - view_b_elmts = DB.FilteredElementCollector(doc)\ - .OwnedByView(view_b.Id)\ - .WhereElementIsNotElementType()\ - .ToElements() - - # pick the detail elements only - det_elmts_a = [el for el in view_a_elmts if el.ViewSpecific] - det_elmts_b = [el for el in view_b_elmts if el.ViewSpecific] - - # compare and return result - return compare_elmnt_sets(det_elmts_a, - det_elmts_b, - compare_types, - diff_results) diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/icon.dark.png b/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/icon.dark.png deleted file mode 100644 index 0889a9c87..000000000 Binary files a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/icon.dark.png and /dev/null differ diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/icon.png b/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/icon.png deleted file mode 100644 index f6e24de6c..000000000 Binary files a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/icon.png and /dev/null differ diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/script.py b/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/script.py deleted file mode 100644 index 34f3122b3..000000000 --- a/extensions/pyRevitTools.extension/pyRevit.tab/Analysis.panel/Tools.stack/Inspect.pulldown/Compare Detail Views.deprecate/script.py +++ /dev/null @@ -1,29 +0,0 @@ -from pyrevit import revit, DB, EXEC_PARAMS -from pyrevit import forms - -import diffutils - - -view_list = [] -selection = revit.get_selection() - -for view in selection.elements: - if isinstance(view, DB.View): - view_list.append(view) - -if len(view_list) == 2: - res = diffutils.DiffResults() - comp = diffutils.compare_views(revit.doc, - view_list[0], - view_list[1], - compare_types=EXEC_PARAMS.config_mode, - diff_results=res) - - forms.alert('Views are smiliar (not identical).' - if comp else 'Views are NOT smiliar.') - - if not comp: - revit.uidoc.ActiveView = view_list[0] - selection.set_to(res.diff_elements) -else: - forms.alert('Exactly 2 views need to be selected.') diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/bundle.yaml b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/bundle.yaml deleted file mode 100644 index 2838d4e76..000000000 --- a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/bundle.yaml +++ /dev/null @@ -1,17 +0,0 @@ -title: - en_us: Revu Popup - fr_fr: Revu Popup - ru: Revu Popup - chinese_s: Revu 弹窗 - es_es: Revu Popup - de_de: Revu Popup - pt_br: Revu Popup -tooltip: - en_us: Enables and disables the Revu PDF Printer prompt for filename option. The Icon shows the current state of this setting. - fr_fr: Active et désactive l'invite de l'imprimante PDF Revu pour l'option de nom de fichier. L'icône indique l'état actuel de ce paramètre. - ru: Включает и отключает запрос принтера Revu PDF для имени файла. Иконка показывает текущее состояние этого параметра. - chinese_s: 启用或禁用 Revu PDF 打印机关于文件名选项的提示。图标显示此设置的当前状态 - es_es: Enables and disables the Revu PDF Printer prompt for filename option. The Icon shows the current state of this setting. - de_de: Aktiviert und deaktiviert die Revu PDF Drucker Aufforderung für Dateinamen. Das Icon zeigt den aktuellen Status dieser Einstellung an. - pt_br: Habilita e desabilita a opção de prompt de nome de arquivo da impressora PDF Revu. O ícone mostra o estado atual desta configuração. -context: zero-doc diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/icon.dark.png b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/icon.dark.png deleted file mode 100644 index dc6b0c4d0..000000000 Binary files a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/icon.dark.png and /dev/null differ diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/icon.png b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/icon.png deleted file mode 100644 index 5da357996..000000000 Binary files a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/icon.png and /dev/null differ diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/off.dark.png b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/off.dark.png deleted file mode 100644 index dc6b0c4d0..000000000 Binary files a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/off.dark.png and /dev/null differ diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/off.png b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/off.png deleted file mode 100644 index 5da357996..000000000 Binary files a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/off.png and /dev/null differ diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/on.png b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/on.png deleted file mode 100644 index 0e59c02ff..000000000 Binary files a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/on.png and /dev/null differ diff --git a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/script.py b/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/script.py deleted file mode 100644 index 051040372..000000000 --- a/extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/toggles1.stack/Revu Popup.deprecate/script.py +++ /dev/null @@ -1,144 +0,0 @@ -import re -import os.path as op - -from pyrevit import script -from pyrevit.compat import winreg as wr -from pyrevit.coreutils.ribbon import ICON_MEDIUM -from pyrevit.revit import ui -import pyrevit.extensions as exts - - -logger = script.get_logger() - - -# op.sep = '\\' -driver_keys = [] -BBS_KEY_PATH = r'Software\Bluebeam Software' - -BBS_PRINT_DRIVER_MATCH_STR = r'\d{4}\\Brewery\\V\d{2}\\Printer Driver\Z' -logger.debug('Match string is: {}'.format(BBS_PRINT_DRIVER_MATCH_STR)) -key_finder = re.compile(BBS_PRINT_DRIVER_MATCH_STR) - - -def get_reg_key(key, subkey): - try: - return wr.OpenKey(key, subkey, 0, wr.KEY_WRITE) - except Exception as key_error: - logger.debug('Can not open key: {}'.format(subkey)) - return None - - -def find_driver_key(driver_keys, parent_string, key): - subkey_count, value_count, last_changed = wr.QueryInfoKey(key) - logger.debug('{} reg key has {} subkeys and {} values.' - .format(parent_string, subkey_count, value_count)) - for idx in range(0, subkey_count): - subkey_name = wr.EnumKey(key, idx) - key_path = op.join(parent_string, subkey_name) - - logger.debug('Checking subkey: {}'.format(key_path)) - dkey = get_reg_key(key, subkey_name) - if dkey: - if key_finder.match(key_path): - logger.debug('Driver key found: {}'.format(key_path)) - driver_keys.append(dkey) - - logger.debug('Looking into subkey for key: {}'.format(key_path)) - find_driver_key(driver_keys, key_path, dkey) - - -def get_driver_keys(): - global driver_keys - - if not driver_keys: - logger.debug('Opening master bluebeam registry key: %s' % BBS_KEY_PATH) - bbs_key = get_reg_key(wr.HKEY_CURRENT_USER, BBS_KEY_PATH) - if bbs_key: - logger.debug('Master key acquired.') - logger.debug('Finding list of printer driver keys.') - find_driver_key(driver_keys, '', bbs_key) - return driver_keys - else: - return None - else: - return driver_keys - - -def close_keys(dkeys): - for dkey in dkeys: - wr.FlushKey(dkey) - dkey.Close() - - -def set_filename_prompt_state(dkeys, state): - if dkeys: - try: - for dkey in dkeys: - wr.SetValueEx(dkey, - r'PromptForFileName', - 0, - wr.REG_SZ, - '1' if state else '0') - return state - except Exception as key_read_err: - logger.debug('Error accessing registry key value.' - ' | {}'.format(key_read_err)) - else: - logger.debug('No registry keys are available for revu printer driver.') - - -def query_filename_prompt_state(dkeys): - state = False - if dkeys: - try: - for dkey in dkeys: - key_state = wr.QueryValueEx(dkey, r'PromptForFileName')[0] - logger.debug('Checking reg key state: {}'.format(key_state)) - state |= int(key_state) > 0 - return state - except Exception as key_read_err: - logger.debug('Error accessing registry key value.' - ' | {}'.format(key_read_err)) - else: - logger.debug('No registry keys are available for revu printer driver.') - - -# noinspection PyUnusedLocal -def __selfinit__(script_cmp, ui_button_cmp, __rvt__): - on_icon = ui.resolve_icon_file(script_cmp.directory, exts.DEFAULT_ON_ICON_FILE) - off_icon = ui.resolve_icon_file(script_cmp.directory, exts.DEFAULT_OFF_ICON_FILE) - - dkeys = get_driver_keys() - if dkeys: - curval = query_filename_prompt_state(dkeys) - close_keys(dkeys) - - if curval: - logger.debug('PDF Printer PromptForFileName is Enabled...') - ui_button_cmp.set_icon(on_icon, icon_size=ICON_MEDIUM) - else: - logger.debug('PDF Printer PromptForFileName is Disabled...') - ui_button_cmp.set_icon(off_icon, icon_size=ICON_MEDIUM) - return True - else: - return False - - -def toggle_state(): - dkeys = get_driver_keys() - if dkeys: - curval = query_filename_prompt_state(dkeys) - - if curval: - logger.debug('Prompt For FileName is Enabled. Disabling...') - set_filename_prompt_state(dkeys, False) - else: - logger.debug('Prompt For FileName is Disabled. Enabling...') - set_filename_prompt_state(dkeys, True) - - script.toggle_icon(not curval) - close_keys(dkeys) - - -if __name__ == '__main__': - toggle_state()