├── pyApex.tab ├── lib │ ├── __init__.py │ ├── pyapex_utils.py │ └── curve_chain.py ├── Misc.panel │ ├── icon.png │ ├── bundle.yaml │ ├── Purge.pulldown │ │ ├── icon.png │ │ ├── PurgeFamilies.pushbutton │ │ │ ├── icon.png │ │ │ ├── lib │ │ │ │ └── purge_families_defaults.py │ │ │ ├── PurgeFamiliesConfig.xaml │ │ │ └── config.py │ │ └── TagsDuplicates.pushbutton │ │ │ ├── icon.png │ │ │ ├── switches │ │ │ └── script.py │ ├── ShowDependent.pushbutton │ │ ├── icon.png │ │ ├── lib │ │ │ └── show_dependent_defaults.py │ │ ├── ShowDependentConfig.xaml │ │ ├── config.py │ │ └── script.py │ ├── utils3.stack │ │ ├── LinkMore.pushbutton │ │ │ ├── icon.png │ │ │ └── script.py │ │ ├── CopyBtwDocs.pushbutton │ │ │ ├── icon.png │ │ │ └── script.py │ │ └── LinkDWGsite.pushbutton │ │ │ ├── icon.png │ │ │ └── script.py │ ├── utils2.stack │ │ ├── ReplaceText.pushbutton │ │ │ ├── icon.png │ │ │ ├── window.xaml │ │ │ └── script.py │ │ ├── CopyParameter.pushbutton │ │ │ ├── icon.png │ │ │ ├── window.xaml │ │ │ └── script.py │ │ └── SumParameter.pushbutton │ │ │ ├── icon.png │ │ │ ├── window.xaml │ │ │ └── script.py │ ├── utils4.stack │ │ ├── SelectGroup.pushbutton │ │ │ ├── icon.png │ │ │ └── script.py │ │ ├── ExcludeGrouped.pushbutton │ │ │ ├── icon.png │ │ │ └── script.py │ │ └── SaveFamilies.pushbutton │ │ │ ├── icon.png │ │ │ └── SaveFamilies_script.py │ └── utils.stack │ │ ├── WhiteMaterials.pushbutton │ │ ├── icon.png │ │ ├── lib │ │ │ └── white_materials_defaults.py │ │ ├── WhiteMaterialsConfig.xaml │ │ ├── config.py │ │ └── script.py │ │ └── SortAndEnumerate.pushbutton │ │ ├── icon.png │ │ ├── window.xaml │ │ └── script.py ├── bundle.yaml ├── Model.panel │ ├── Level.pulldown │ │ ├── icon.png │ │ └── RemoveLevel.pushbutton │ │ │ ├── icon.png │ │ │ └── script.py │ ├── UnjoinSelected.pushbutton │ │ ├── icon.png │ │ └── script.py │ └── DisableConstraints.pushbutton │ │ ├── icon.png │ │ └── script.py ├── Detail.panel │ ├── FlipGridEnds.pushbutton │ │ ├── icon.png │ │ └── script.py │ ├── Copy_VG_Filters.pushbutton │ │ ├── icon.png │ │ └── script.py │ └── TextNotes2csv.pushbutton │ │ ├── icon.png │ │ └── script.py ├── QualityControl.panel │ ├── Links.pushbutton │ │ ├── icon.png │ │ └── script.py │ ├── GridAngle.pushbutton │ │ ├── icon.png │ │ └── script.py │ └── GridDistance.pushbutton │ │ ├── icon.png │ │ └── GridDistance_script.py ├── Selection.panel │ └── sel1.stack │ │ ├── OpenViews.pushbutton │ │ ├── icon.png │ │ └── script.py │ │ ├── ZoomBasePoint.pushbutton │ │ ├── icon.png │ │ └── script.py │ │ └── ExtractIdsText.pushbutton │ │ ├── icon.png │ │ ├── window.xaml │ │ └── script.py └── WIP.panel │ └── CopyParameterTest.pushbutton │ └── script.py ├── .gitignore └── README.md /pyApex.tab/lib/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/icon.png -------------------------------------------------------------------------------- /pyApex.tab/bundle.yaml: -------------------------------------------------------------------------------- 1 | layout: 2 | - Selection 3 | - Model 4 | - Detail 5 | - Misc 6 | - QualityControl 7 | - WIP 8 | -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/bundle.yaml: -------------------------------------------------------------------------------- 1 | layout: 2 | - utils 3 | - utils2 4 | - utils3 5 | - utils4 6 | - ShowDependent 7 | - Purge 8 | -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/Purge.pulldown/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/Purge.pulldown/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Model.panel/Level.pulldown/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Model.panel/Level.pulldown/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Detail.panel/FlipGridEnds.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Detail.panel/FlipGridEnds.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/ShowDependent.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/ShowDependent.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Detail.panel/Copy_VG_Filters.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Detail.panel/Copy_VG_Filters.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Detail.panel/TextNotes2csv.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Detail.panel/TextNotes2csv.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Model.panel/UnjoinSelected.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Model.panel/UnjoinSelected.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/QualityControl.panel/Links.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/QualityControl.panel/Links.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Model.panel/DisableConstraints.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Model.panel/DisableConstraints.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/QualityControl.panel/GridAngle.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/QualityControl.panel/GridAngle.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils3.stack/LinkMore.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/utils3.stack/LinkMore.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/QualityControl.panel/GridDistance.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/QualityControl.panel/GridDistance.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils2.stack/ReplaceText.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/utils2.stack/ReplaceText.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils3.stack/CopyBtwDocs.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/utils3.stack/CopyBtwDocs.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils3.stack/LinkDWGsite.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/utils3.stack/LinkDWGsite.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils4.stack/SelectGroup.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/utils4.stack/SelectGroup.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils.stack/WhiteMaterials.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/utils.stack/WhiteMaterials.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils2.stack/CopyParameter.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/utils2.stack/CopyParameter.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils2.stack/SumParameter.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/utils2.stack/SumParameter.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils4.stack/ExcludeGrouped.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/utils4.stack/ExcludeGrouped.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils4.stack/SaveFamilies.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/utils4.stack/SaveFamilies.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Model.panel/Level.pulldown/RemoveLevel.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Model.panel/Level.pulldown/RemoveLevel.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Selection.panel/sel1.stack/OpenViews.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Selection.panel/sel1.stack/OpenViews.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/Purge.pulldown/PurgeFamilies.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/Purge.pulldown/PurgeFamilies.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/Purge.pulldown/TagsDuplicates.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/Purge.pulldown/TagsDuplicates.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils.stack/SortAndEnumerate.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Misc.panel/utils.stack/SortAndEnumerate.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Selection.panel/sel1.stack/ZoomBasePoint.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Selection.panel/sel1.stack/ZoomBasePoint.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Selection.panel/sel1.stack/ExtractIdsText.pushbutton/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apex-project/pyApex/HEAD/pyApex.tab/Selection.panel/sel1.stack/ExtractIdsText.pushbutton/icon.png -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/Purge.pulldown/PurgeFamilies.pushbutton/lib/purge_families_defaults.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import tempfile 3 | import os 4 | temp_dir = os.path.join(tempfile.gettempdir(), "pyApex_purgeFamilies") -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils.stack/WhiteMaterials.pushbutton/lib/white_materials_defaults.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import pyapex_utils 3 | exceptions = [ 4 | "Glass", 5 | ] 6 | material = "Default" 7 | ignore_transparent = True 8 | -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/ShowDependent.pushbutton/lib/show_dependent_defaults.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | exceptions = [ 4 | "Levels", 5 | "Work Plane Grid", 6 | "Viewports", 7 | "Other", 8 | "Sun Path", 9 | "Automatic Sketch Dimensions", 10 | "", 11 | "", 12 | "Constraints", 13 | ] 14 | 15 | limit = 10 16 | -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils4.stack/ExcludeGrouped.pushbutton/script.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | __title__ = 'Exclude Grouped' 3 | __doc__ = """Exclude grouped elements from selection 4 | 5 | Shift+Click - isolate grouped elements""" 6 | __context__ = 'Selection' 7 | __helpurl__ = "https://apex-project.github.io/pyApex/help#exclude-grouped" 8 | 9 | from pyrevit import revit 10 | selection = revit.get_selection() 11 | 12 | def filter_grouped(e, inverse = False): 13 | if inverse: 14 | return e.GroupId.IntegerValue != -1 15 | else: 16 | return e.GroupId.IntegerValue == -1 17 | 18 | if __name__ == '__main__': 19 | sel = selection.elements 20 | sel = list(filter(lambda e: filter_grouped(e, __shiftclick__), sel)) 21 | selection.set_to(sel) 22 | -------------------------------------------------------------------------------- /pyApex.tab/lib/pyapex_utils.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | def filter_list(l): 3 | l = filter(lambda x: len(x) > 0, l) 4 | l = map(lambda x: x.strip("\n").strip("\n").strip("\r"), l) 5 | return l 6 | 7 | 8 | def list2str(l): 9 | """""" 10 | 11 | """back compatibility START""" 12 | if type(l) != list: 13 | l = str2list(l) 14 | """back compatibility END""" 15 | 16 | l = filter_list(l) 17 | return "\n".join(l) 18 | 19 | 20 | def str2list(s): 21 | l = s.split("\n") 22 | 23 | """back compatibility START""" 24 | # remove empty rows 25 | l = filter_list(l) 26 | # check is separator is ',' - not '\n' 27 | if len(l) == 1: 28 | if "," in l[0]: 29 | l = l[0].split(",") 30 | l = filter(lambda x: len(x) > 0, l) 31 | """back compatibility END""" 32 | 33 | l = filter_list(l) 34 | 35 | return l 36 | 37 | 38 | def compare_xyz(xyz1, xyz2, precision = None): 39 | if precision != None: 40 | return round(xyz1.X, precision) == round(xyz2.X, precision) \ 41 | and round(xyz1.Y, precision) == round(xyz2.Y, precision) \ 42 | and round(xyz1.Z, precision) == round(xyz2.Z, precision) 43 | else: 44 | return xyz1.X == xyz2.X and xyz1.Y == xyz2.Y and xyz1.Z == xyz2.Z 45 | 46 | def is_ascii(s): 47 | return all(ord(c) < 128 for c in s) 48 | 49 | def almost_equal(x, y, rnd=10): 50 | return round(x*(10^rnd)) == round(y*(10^rnd)) -------------------------------------------------------------------------------- /pyApex.tab/Misc.panel/utils2.stack/ReplaceText.pushbutton/window.xaml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 22 | 23 |