Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
526 commits
Select commit Hold shift + click to select a range
1881a4f
Update pyrevit-hosts.json - added 2026.3
jmcouffin Sep 22, 2025
a6d8f7b
Update _install.py
jmcouffin Sep 22, 2025
c3ed896
Update _install.py
jmcouffin Sep 22, 2025
605db11
Update main.yml
jmcouffin Sep 22, 2025
234e556
Update _install.py
jmcouffin Sep 22, 2025
a32f259
use pyrevits native (de-)serialize functionality
Wurschdhaud Sep 22, 2025
bedd095
Merge pull request #2808 from Wurschdhaud/develop
jmcouffin Sep 23, 2025
30005e7
PY3 compatibility for itertools
Wurschdhaud Sep 23, 2025
f3cc3b0
Update pyrevitlib\rpws\server.py
Denver-22 Sep 23, 2025
84d6974
turn get_all_ctx into a generator
MohamedAsli Sep 23, 2025
594a909
Merge branch 'develop' into selectfromlist-fix
MohamedAsli Sep 23, 2025
bda032b
Adding Revitesse to extensions
ramyamaher Sep 24, 2025
62eaf5d
add flush for print_md, cleanup zip_longest
Wurschdhaud Sep 24, 2025
49fde07
Add Option to Generate Dynamo Stubs
tay0thman Sep 24, 2025
ff820f4
Update __init__.py
nasmovk Sep 25, 2025
118db80
Merge pull request #2806 from MohamedAsli/selectfromlist-fix
jmcouffin Sep 25, 2025
7d40210
Merge branch 'develop' into tay0thman-patch-3
tay0thman Sep 25, 2025
5d98e18
add check for Int64, compat for new constructor
Wurschdhaud Sep 26, 2025
352b4f8
Merge branch 'pyrevitlabs:develop' into fix-for-#2818-ensure
Wurschdhaud Sep 26, 2025
e399529
Merge pull request #2819 from Wurschdhaud/fix-for-#2818-ensure
jmcouffin Sep 26, 2025
0902ea8
Merge pull request #2813 from pyrevitlabs/tay0thman-patch-3
jmcouffin Sep 26, 2025
de91ecb
Merge pull request #2812 from Denver-22/develop
jmcouffin Sep 26, 2025
7bf6f13
add unit, storagetype to select parameters dialogue
Wurschdhaud Sep 26, 2025
7cafb3b
Update __init__.py
nasmovk Sep 26, 2025
6332a36
Merge pull request #2820 from Wurschdhaud/enhancement-forms-parameter…
jmcouffin Sep 26, 2025
ad8a199
Merge branch 'pyrevitlabs:develop' into develop
Wurschdhaud Sep 27, 2025
d5b664e
update 1.11->1.17, last version to support 3.3-3.5
Wurschdhaud Sep 27, 2025
7f2dc14
Merge pull request #2821 from Wurschdhaud/update-six
jmcouffin Sep 28, 2025
74e1138
cleanup code by using pyrevit.compat module for ElementId creation an…
Wurschdhaud Sep 28, 2025
04c6ca6
add coarse and fine to output
Wurschdhaud Sep 29, 2025
8748452
Merge pull request #2822 from Wurschdhaud/cleanup-elementid-compat
jmcouffin Sep 29, 2025
d35d45d
Merge pull request #2825 from Wurschdhaud/enhancement-triangle-count
jmcouffin Sep 29, 2025
0829243
Merge pull request #2811 from Wurschdhaud/develop
jmcouffin Sep 29, 2025
dfe9f9b
Merge pull request #2824 from ramyamaher/main
jmcouffin Sep 29, 2025
1820cac
Merge branch 'develop' into feature-2065
MohamedAsli Sep 30, 2025
15d37ed
Update __init__.py
nasmovk Sep 30, 2025
e9379be
fix geometry objects detaillevel
Wurschdhaud Oct 1, 2025
d79f772
Update __init__.py
nasmovk Oct 1, 2025
c6e0dad
syntax, comments and black formating
jmcouffin Oct 1, 2025
af3d76b
nitpicking
jmcouffin Oct 1, 2025
ad1e579
Bump black from 25.1.0 to 25.9.0
dependabot[bot] Oct 1, 2025
fe48015
Bump mkdocstrings from 0.30.0 to 0.30.1
dependabot[bot] Oct 1, 2025
ba77f9f
Bump ruff from 0.12.11 to 0.13.2
dependabot[bot] Oct 1, 2025
d09ce9f
Bump mypy from 1.17.1 to 1.18.2
dependabot[bot] Oct 1, 2025
69a9d6f
Merge pull request #2832 from pyrevitlabs/dependabot/pip/develop/mkdo…
jmcouffin Oct 1, 2025
0463995
Merge pull request #2834 from pyrevitlabs/dependabot/pip/develop/mypy…
jmcouffin Oct 1, 2025
dfae3aa
Merge pull request #2833 from pyrevitlabs/dependabot/pip/develop/ruff…
jmcouffin Oct 1, 2025
058376e
Bump mkdocs-material from 9.6.18 to 9.6.21
dependabot[bot] Oct 1, 2025
2b2534e
Merge pull request #2830 from pyrevitlabs/dependabot/pip/develop/blac…
jmcouffin Oct 1, 2025
94ed459
Merge pull request #2835 from pyrevitlabs/dependabot/pip/develop/mkdo…
jmcouffin Oct 1, 2025
b418bb0
Bump actions/setup-dotnet from 4 to 5
dependabot[bot] Oct 1, 2025
1fbbc2a
Bump actions/setup-python from 5 to 6
dependabot[bot] Oct 1, 2025
26d807a
Bump actions/stale from 9 to 10
dependabot[bot] Oct 1, 2025
1d574bd
Merge pull request #2838 from pyrevitlabs/dependabot/github_actions/d…
jmcouffin Oct 1, 2025
8ada4e2
Merge pull request #2837 from pyrevitlabs/dependabot/github_actions/d…
jmcouffin Oct 1, 2025
ed805c7
Merge pull request #2836 from pyrevitlabs/dependabot/github_actions/d…
jmcouffin Oct 1, 2025
ecedec8
Merge pull request #2829 from Wurschdhaud/fix-orient-detaillevel
jmcouffin Oct 1, 2025
07c1ff3
add missing import, remove leftover double counting, minor black form…
Wurschdhaud Oct 4, 2025
2bc9c2a
add view templates for comparison, warningbar for target, black format
Wurschdhaud Oct 4, 2025
c02c729
add view filter override comparison
Wurschdhaud Oct 4, 2025
d41fbd4
added all attributes, simplified using gettattr
Wurschdhaud Oct 4, 2025
725904c
Merge pull request #2846 from Wurschdhaud/enhancement-compare-props
jmcouffin Oct 4, 2025
09cc70d
Merge pull request #2845 from Wurschdhaud/fix-#2844
jmcouffin Oct 4, 2025
778a7d7
made error message descriptive
Wurschdhaud Oct 6, 2025
f0c3530
Merge pull request #2848 from Wurschdhaud/fix-for-#2847
jmcouffin Oct 6, 2025
cc23308
Enhance table HTML header and input validation in PyRevitOutputWindow
jmcouffin Oct 7, 2025
2b0079a
Merge branch 'develop' into patch-2
jmcouffin Oct 7, 2025
0fb8c5e
Merge pull request #2827 from nasmovk/patch-2
jmcouffin Oct 7, 2025
1961abc
add Russian localization to ColorSplasher
dosymep Oct 7, 2025
57ad81f
add Russian localization to Count Faces tool
dosymep Oct 7, 2025
a7f1a67
update Russian localization for ParametersValuesToParameter tool
dosymep Oct 7, 2025
4892ac8
update Russian localization for Replace Fonts tool
dosymep Oct 7, 2025
ce5360c
update Russian localization for Section Box tool
dosymep Oct 7, 2025
e2426a5
add Russian localization to Synchronize tool
dosymep Oct 7, 2025
88c592a
add Russian localization for View Range tool
dosymep Oct 7, 2025
432049e
Change ElementId(-1) to ElementId.InvalidElementId
Wurschdhaud Oct 7, 2025
d00b5df
update for 2025 support
Wurschdhaud Oct 7, 2025
63fe92d
Merge pull request #2853 from Wurschdhaud/update-bug-template
jmcouffin Oct 7, 2025
3b5ec93
Merge pull request #2852 from Wurschdhaud/fix-#2851
jmcouffin Oct 7, 2025
bfaf313
Merge pull request #2850 from pyrevitlabs/russian
jmcouffin Oct 7, 2025
7d01a8f
Added Sheet Sets to Print Sheets drop down
WemyssJ Oct 7, 2025
b7344f0
Update Print Sheets.Xaml
WemyssJ Oct 7, 2025
8f2f465
Update report.py - Remove Circular referencing between report.py and …
tay0thman Oct 9, 2025
ea4d5a3
Merge pull request #2857 from pyrevitlabs/tay0thman-patch-3
jmcouffin Oct 9, 2025
a01e13d
Update cad_audit_check.py - Partial Compatibility with Cloud CAD Files
tay0thman Oct 9, 2025
471ce0b
Fix bare except clause - use Exception instead
devloai Oct 9, 2025
9f759d5
Update cad_audit_check.py per DelvoAI
tay0thman Oct 9, 2025
f2364f8
Merge pull request #2859 from pyrevitlabs/tay0thman-patch-4
jmcouffin Oct 10, 2025
9926567
Merge branch 'develop' into Wemyss-patch-1
WemyssJ Oct 13, 2025
5c9a9bd
Update script.py in Print Sheets pushbutton to handle missing attribu…
jmcouffin Oct 13, 2025
fad85fb
Merge pull request #2855 from WemyssJ/Wemyss-patch-1
jmcouffin Oct 13, 2025
8c7c791
Update ui.xaml
ramyamaher Oct 13, 2025
4311142
Update parameter values to parameter
ramyamaher Oct 13, 2025
9f3dfe7
add support for content and content_alt in bundle file. Fallback to n…
Wurschdhaud Oct 13, 2025
83b4f96
path + extension validation for content bundle
Wurschdhaud Oct 14, 2025
cf585bb
Refactor localization strings and improve code formatting
jmcouffin Oct 14, 2025
fdffab3
Enhance ParametersValuesToParameter tool functionality
jmcouffin Oct 14, 2025
b66561e
Merge pull request #2861 from ramyamaher/main
jmcouffin Oct 14, 2025
f39b25c
Add new content bundles and update bundle.yaml files for testing
jmcouffin Oct 14, 2025
4b00dd2
Remove unused binary files for content bundles in Debug panel
jmcouffin Oct 14, 2025
eed6336
Merge pull request #2862 from Wurschdhaud/fix-#1809
jmcouffin Oct 14, 2025
ee6f5f8
DWG Exporter, Progress Bar + more
WemyssJ Oct 14, 2025
402158c
DWG Exporter, Progress Bar + more
WemyssJ Oct 14, 2025
372b585
added error handling
WemyssJ Oct 14, 2025
370fe8f
removed uidoc, doc moved to PrintUtils class
WemyssJ Oct 14, 2025
210b95f
Improved overall tool functionality
Isaiah-Narvaez-42 Oct 14, 2025
e7bf24c
Removed negative margin
WemyssJ Oct 14, 2025
83eb75e
fixed PDFing linked sheets. Disallowed DWGing linked sheets
WemyssJ Oct 14, 2025
a246aea
added missing pbCount1 += 1
WemyssJ Oct 14, 2025
e193c89
more missing pbCount added
WemyssJ Oct 14, 2025
9570b8e
Update pyrevit-hosts.json -- add Revit 2024.3.4
924312 Oct 15, 2025
37016a4
Merge pull request #2867 from 924312/patch-2
jmcouffin Oct 15, 2025
209093a
Merge branch 'develop' into develop
WemyssJ Oct 15, 2025
c509a3a
Merge branch 'develop' into patch-2
Isaiah-Narvaez-42 Oct 15, 2025
59acfc2
initial commit
Wurschdhaud Oct 15, 2025
7c7c557
Refactor print compatibility check for Revit 2022
WemyssJ Oct 16, 2025
b4046c5
changed visual aids to dc3d instead of using modellines and objects
Wurschdhaud Oct 17, 2025
5c2ea29
removed unnecessary global, added context to yaml (dc3d not working i…
Wurschdhaud Oct 17, 2025
6d87a7d
remove useless logging debug
Wurschdhaud Oct 17, 2025
18099ef
export all elements, option to pick schedule instead
Wurschdhaud Oct 17, 2025
e3f6a80
add detail level to lib function, simplifying others.
Wurschdhaud Oct 18, 2025
9a5e295
make use of lib functions, cleanup
Wurschdhaud Oct 18, 2025
c70738c
Merge commit '37016a4b0a755086547f7fa8ab930a9d17658c1b' into new-tool…
Wurschdhaud Oct 18, 2025
30f97cf
make use of latestet formatting options for parameter selection, enab…
Wurschdhaud Oct 18, 2025
e01f352
mistakenly commited code, removed.
Wurschdhaud Oct 18, 2025
795ec7d
changed defaultconfig and bundle
Wurschdhaud Oct 18, 2025
b2683c3
added loop to tooltip playback
Wurschdhaud Oct 18, 2025
8b09285
- adds support for project unit conversion for parameters other than …
Wurschdhaud Oct 19, 2025
088ae01
Merge pull request #2875 from Wurschdhaud:fix-#2274
jmcouffin Oct 20, 2025
b75caa6
Merge pull request #2872 from Wurschdhaud:fix-#2863
jmcouffin Oct 20, 2025
aa9dcfd
Merge branch 'develop' into develop
WemyssJ Oct 20, 2025
ec3a423
changed from length_unit to correct distance_unit, since we're calcul…
Wurschdhaud Oct 20, 2025
8570095
Keep old print_table. Add new print_html_table
nasmovk Oct 20, 2025
ded5479
Merge pull request #2876 from nasmovk/develop
jmcouffin Oct 20, 2025
3dc359d
changed unit from distance to length, as distance doesnt support frac…
Wurschdhaud Oct 20, 2025
a1a7031
Merge pull request #2869 from Wurschdhaud/new-tool-3D-measure
jmcouffin Oct 20, 2025
63a9f5e
fixed extraction of family name: has to be accessed via
Wurschdhaud Oct 21, 2025
a2efe8c
Merge branch 'develop' into develop
WemyssJ Oct 21, 2025
c111b65
Merge branch 'develop' into new-tool-simple-xls-ex+import
tay0thman Oct 21, 2025
a36c490
- distinguish type and instance
Wurschdhaud Oct 21, 2025
8b6ec6a
xaml ui for element selection, similar to parameterselection, added
Wurschdhaud Oct 21, 2025
afb8d03
- removed config for exportunit type, just stick to projectunits
Wurschdhaud Oct 22, 2025
545fbfd
Add clean option to bundle.yaml configuration
jmcouffin Oct 22, 2025
6a2b211
Merge pull request #2877 from pyrevitlabs/fix-2856
jmcouffin Oct 22, 2025
5717799
Merge pull request #2871 from Wurschdhaud/improvement-to-query.get_ge…
jmcouffin Oct 23, 2025
a9a44fc
Merge pull request #2793 from MohamedAsli/feature-2065
jmcouffin Oct 23, 2025
e59d6cb
Update binary files and modify runtime configuration and autocomplete…
jmcouffin Oct 23, 2025
a66603d
Merge pull request #2879 from pyrevitlabs/compiled-dll
jmcouffin Oct 23, 2025
bd6db79
QOL:
Wurschdhaud Oct 23, 2025
5f594b6
initial commit
Wurschdhaud Oct 23, 2025
e6e20ef
Add Relink Textures tool to pyRevitTools
Swichllc Oct 23, 2025
f9dcc6c
- default values in project units
Wurschdhaud Oct 24, 2025
3620277
delete duplicate grids check
Wurschdhaud Oct 27, 2025
a58ec15
Merge pull request #2886 from Wurschdhaud/fix-#2885
jmcouffin Oct 27, 2025
1900691
- support for section and elevation
Wurschdhaud Oct 27, 2025
e599f74
Refactor Relink Textures tool and improve config handling
Swichllc Oct 27, 2025
0a9ea97
Moved to Modifiy, Edit section
jmcouffin Oct 27, 2025
e27e32d
Refactor Relink Textures script to enhance modularity and configurati…
jmcouffin Oct 27, 2025
2a17ab3
Refactor logging and configuration constants in Relink Textures script
jmcouffin Oct 27, 2025
0c9fe99
Enhance folder validation and error handling in Relink Textures script
jmcouffin Oct 27, 2025
487a3de
Enhance user feedback in Relink Textures script with progress bars
jmcouffin Oct 27, 2025
27f928e
Implement texture index caching and folder validation improvements in…
jmcouffin Oct 27, 2025
91cb204
Enhance error handling and initialization in Relink Textures script
jmcouffin Oct 27, 2025
a070c81
Remove unused dark icon for Relink Textures pushbutton and update exi…
jmcouffin Oct 27, 2025
a2761f1
- Replaced Autodesk.Revit.DB.Visual classes with current DB.Visual eq…
jmcouffin Oct 27, 2025
46e4235
Refactor texture indexing and configuration management in Relink Text…
jmcouffin Oct 27, 2025
c265ff4
Remove unnecessary logging statements in Relink Textures script
jmcouffin Oct 27, 2025
3dd8418
Merge branch 'develop' into develop
jmcouffin Oct 27, 2025
8903f1d
Merge branch 'develop' into develop
WemyssJ Oct 28, 2025
e674845
Refactor texture indexing and relinking processes in Relink Textures …
jmcouffin Oct 28, 2025
b7c107d
Merge branch 'develop' of https://github.com/swichllc/pyrevit into pr…
jmcouffin Oct 28, 2025
d349dfd
Refactor texture relinking and folder management in Relink Textures s…
jmcouffin Oct 28, 2025
3c7d685
Refactor logging and folder management in Relink Textures script
jmcouffin Oct 28, 2025
9643680
Improve logging and user feedback in Relink Textures script
jmcouffin Oct 28, 2025
aef9746
Enhance texture indexing performances in Relink Textures script
jmcouffin Oct 28, 2025
329b3c8
reverted to walk
jmcouffin Oct 28, 2025
25be21c
save window position on close
Wurschdhaud Oct 28, 2025
e37b1a8
save window position on close
Wurschdhaud Oct 28, 2025
0cd1810
Enhance texture indexing in Relink Textures script
jmcouffin Oct 28, 2025
9efad9d
safeguard for out of screen
Wurschdhaud Oct 28, 2025
5f676f9
safeguard out of screen
Wurschdhaud Oct 28, 2025
865eb88
Merge pull request #2883 from Swichllc/develop
jmcouffin Oct 28, 2025
650cf1a
use native handle_esc
Wurschdhaud Oct 28, 2025
65c5c15
Update French translations for Section Box Navigator in bundle.yaml
jmcouffin Oct 28, 2025
ad18e9d
Enhance error handling and input validation in Section Box Navigator.…
jmcouffin Oct 28, 2025
6e792eb
Merge branch 'develop' into new-tool-sectionbox-navigator
jmcouffin Oct 28, 2025
0bb95c7
Merge pull request #2881 from Wurschdhaud/new-tool-sectionbox-navigator
jmcouffin Oct 28, 2025
d192752
Refactor script to use HOST_APP for document access
jmcouffin Oct 28, 2025
bb4f530
Fix typos in comments and docstrings for clarity in Measure script
jmcouffin Oct 28, 2025
2f9b055
Add error handling and 3D view validation in Measure script
jmcouffin Oct 28, 2025
3f3e54b
implement stl interop as Mesh, add mesh from stl to dc3dserver, add t…
Wurschdhaud Oct 28, 2025
e4f6c43
remove os import
Wurschdhaud Oct 28, 2025
e5adaf6
add selectionchangedevent (>2022)
Wurschdhaud Oct 28, 2025
8873ba8
adjust height slightly if additional message is displayed
Wurschdhaud Oct 29, 2025
dcb4050
error loggin for outdated version
Wurschdhaud Oct 29, 2025
b04c808
Update Measure script to improve unit display formatting
jmcouffin Oct 29, 2025
78106ab
Enhance 3D Measure functionality and user experience
jmcouffin Oct 29, 2025
26598a1
Merge branch 'develop' into enhancements-3dmeasure
jmcouffin Oct 29, 2025
a3dca42
Merge pull request #2880 from Wurschdhaud/enhancements-3dmeasure
jmcouffin Oct 29, 2025
50d91c8
Merge branch 'develop' into implement-stl-interop
jmcouffin Oct 29, 2025
0b02345
Update extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/to…
jmcouffin Oct 29, 2025
1dd1e96
Update extensions/pyRevitTools.extension/pyRevit.tab/Toggles.panel/to…
jmcouffin Oct 29, 2025
693aa57
Merge branch 'develop' into patch-2
jmcouffin Oct 29, 2025
385244c
use is_older_than
Wurschdhaud Oct 29, 2025
343f211
Merge branch 'develop' into add-SelectionChangedEvent
jmcouffin Oct 29, 2025
abdb5c1
Merge pull request #2888 from Wurschdhaud/add-SelectionChangedEvent
jmcouffin Oct 29, 2025
4507192
Merge branch 'develop' into implement-stl-interop
jmcouffin Oct 29, 2025
5177b4f
Merge branch 'develop' into new-tool-simple-xls-ex+import
jmcouffin Oct 29, 2025
96ed5ec
use enumerate to improve performance
Wurschdhaud Oct 29, 2025
8e928d1
Merge pull request #2887 from Wurschdhaud/implement-stl-interop
jmcouffin Oct 29, 2025
49f1c5d
Bump ruff from 0.13.2 to 0.14.3
dependabot[bot] Nov 1, 2025
d8fa54b
Bump pylint from 3.3.8 to 4.0.2
dependabot[bot] Nov 1, 2025
fe95ebe
Bump mkdocs-material from 9.6.21 to 9.6.22
dependabot[bot] Nov 1, 2025
8aeaa3f
Bump azure/trusted-signing-action from 0.5.9 to 0.5.10
dependabot[bot] Nov 1, 2025
756c243
Bump actions/upload-artifact from 4 to 5
dependabot[bot] Nov 1, 2025
07bc983
Merge pull request #2892 from pyrevitlabs/dependabot/pip/develop/ruff…
jmcouffin Nov 1, 2025
c9a780f
Merge pull request #2893 from pyrevitlabs/dependabot/pip/develop/pyli…
jmcouffin Nov 1, 2025
8b68959
Merge pull request #2894 from pyrevitlabs/dependabot/pip/develop/mkdo…
jmcouffin Nov 1, 2025
f4378f6
Merge pull request #2895 from pyrevitlabs/dependabot/github_actions/d…
jmcouffin Nov 1, 2025
6ec2e33
Merge pull request #2896 from pyrevitlabs/dependabot/github_actions/d…
jmcouffin Nov 1, 2025
842f39b
Merge branch 'develop' into patch-2
Isaiah-Narvaez-42 Nov 2, 2025
ada204e
Update icons for XLS Export and Import pushbuttons in Modify panel
jmcouffin Nov 3, 2025
e780a6a
Enhance XLS Export and Import functionality
jmcouffin Nov 3, 2025
a4de879
Merge branch 'develop' into new-tool-simple-xls-ex+import
jmcouffin Nov 3, 2025
73e5ab5
Merging changes from PR #2866 - Enhance View Range Editor UI with ne…
jmcouffin Nov 3, 2025
ffde02a
Update View Range Editor UI and refactor event handling in script.py.…
jmcouffin Nov 3, 2025
573d8c9
add shift-click to bypass issued check
Wurschdhaud Nov 3, 2025
5472ff3
Update translations in Set Revision On Sheets button for improved cla…
jmcouffin Nov 3, 2025
ca44157
Merge pull request #2897 from Wurschdhaud/bypass-issued
jmcouffin Nov 3, 2025
39f2b46
Merge branch 'develop' into new-tool-simple-xls-ex+import
jmcouffin Nov 3, 2025
de74272
Merge pull request #2873 from Wurschdhaud/new-tool-simple-xls-ex+import
jmcouffin Nov 3, 2025
38719e6
Merge branch 'develop' into patch-2
jmcouffin Nov 3, 2025
7594dfd
Refactor ViewRange script to improve element ID handling and code org…
jmcouffin Nov 3, 2025
dac1f8e
Merge pull request #2865 from Isaiah-Narvaez-42/patch-2
jmcouffin Nov 3, 2025
f817de7
Refactor version check for Revit 2022: Replace static method with con…
jmcouffin Nov 3, 2025
3d6272b
Refactor file path construction in Print Sheets script for improved c…
jmcouffin Nov 3, 2025
0271f19
Refactor filename handling in Print Sheets script to use os.path.spli…
jmcouffin Nov 3, 2025
984e799
Refactor progress bar updates in Print Sheets script for improved cla…
jmcouffin Nov 3, 2025
5b4cb37
Remove Inno Setup installation from CI workflow
jmcouffin Nov 3, 2025
d9ce418
Merge branch 'develop' into develop
jmcouffin Nov 3, 2025
e4a880a
Merge pull request #2864 from WemyssJ/develop
jmcouffin Nov 3, 2025
4d841eb
bump to version 5.3.0
jmcouffin Nov 3, 2025
39d0223
Merge pull request #2898 from pyrevitlabs/bump-version-5.3.0
jmcouffin Nov 3, 2025
12be564
fixed value handling for `InvalidElementId`, cleanup
thumDer Nov 3, 2025
6421f8d
Fix syntax error in Transaction context manager
jmcouffin Nov 3, 2025
cf4bcf2
Merge branch 'develop' of https://github.com/pyrevitlabs/pyRevit into…
thumDer Nov 3, 2025
85b7fb1
Fix syntax error in get_elementid_value usage
jmcouffin Nov 3, 2025
ec30537
Fix text width scale setting in create.py
jmcouffin Nov 3, 2025
48562f6
Merge pull request #2900 from thumDer/id-fix
jmcouffin Nov 3, 2025
bfa8754
Update copyright notice in README.md
jmcouffin Nov 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 3 additions & 1 deletion .github/ISSUE_TEMPLATE/BUG_REPORT.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ body:
Please make a little effort, do your research and [ask questions the smart way](http://www.catb.org/~esr/faqs/smart-questions.html#beprecise).
**If you didn't fill the form properly or lie about the pre-flight checks, the issue could be closed without any explanation!**
## 🚧🚧 Revit 2025 🚧🚧
pyRevit 4.8.x is not compatible with Revit 2025. If you really need it, you can try (**at your own risk!**) the WIP version that you can find at [this page](https://www.pyrevitlabs.io/)
pyRevit 4.8.x is not compatible with Revit 2025.
Use pyRevit 5.0.0+, it is backwards compatible.
Latest WIP version can be found at [this page](https://www.pyrevitlabs.io/)
## 🚧 SentinelOne 🚧
If you have SentinelOne installed as an antivirus, **look no further**.
**You will need to create exceptions for Revit and pyRevit**, both on the software and the %appdata% folders. ask your IT guy to do that.
Expand Down
87 changes: 87 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Repository organization
The pyRevit repository is organized in the following folders:

- bin contains the binaries (dll and other support files) for pyRevit; usually a source repository doesn't have these, but it was made like this to be able to switch pyRevit versions using clones. This may change in the future and we could get rid of most content of this folder. Note that in this folder there also are the python envrionments (for example the CPython dlls and core packages).
- dev is where the c# code resides.
- docs is for the automatic generation of the documentation website
- extensions holds the various pyRevit extensions; the pyRevitCore.extension is the one that build the pyRevit ribbon tab, the others can be enabled via the Extension button inside pyRevit itself. pyRevitDevTools is quite handy to run tests and check if pyRevit (and the modifications you'll do) is running fine.
- extras are… extra files that can come in handy (icons and the dark mode generator are there to this date).
- licenses contains all the licenses of the included third party projects.
- pyrevitlib contains pyRevit and other related project's python libraries. It is usually the library that gets imported in the user scripts to ease the Revit API development.
- release contains static assets needed to build the final product (pyrevit and pyrevit cli installers).
- site-packages is the collection of third-party python packaces that are made available by pyRevit to the user. Given that the main python engine is IronPython 2.7.12, packages in that folder needs to be compatible with it.
- static are assets for the website, youtube channels and so on, you can ignore it.

# Understanding pyRevit Architecture
This guide provides an overview of pyRevit’s architecture to help new contributors understand how the software works.
Whether you want to create tools, troubleshoot issues, or contribute code, understanding these components will help you navigate the project.
Components of pyRevit
1. pyRevit Add-In (pyRevitLoader)
◦ A small piece of C# code that starts pyRevit inside Revit.
◦ It loads a Python script using the IronPython engine, which handles the rest of pyRevit’s functionality.
2. pyRevit python Libraries (pyrevitlibs)
◦ Python packages that simplify working with the .NET Revit API.
◦ Provide tools to create ribbon buttons, run scripts, and more.
3. Extensions
◦ These are the tools and features users see inside Revit.
◦ They are mostly written in python, but can also be C#/VB.NET scripts, dynamo projects, and so on
◦ Bundled extensions appear in the "pyRevit" tab, offering many tools.
◦ Users can add extensions by:
▪ Enabling listed extensions in dev/extensions/extensions.json via the “Extensions” button in pyRevit.
▪ Creating custom extensions and adding their paths to the configuration.
4. pyRevit Command-Line Interface (CLI)
◦ A tool for managing configurations, running scripts in bulk, and troubleshooting.
◦ Useful for corporate setups and advanced users.
5. Telemetry Server
◦ A small server (written in Go) that tracks usage data of pyRevit tools.
◦ Stores data in MongoDB or PostgreSQL for business intelligence.
How pyRevit Loads in Revit
TL;DR:
• Revit reads the .addin manifest in the Addins folders
• The .addin manifest points to pyRevitLoader.dll
• pyRevitLoader.dll launches pyrevitloader.py inside an IronPython environment
• pyrevitloader.py calls functions from the pyrevit python package to build the UI and the buttons commands.
.addin Manifest
• The installer creates a file with .addin extension, called manifest, in the Revit Addins folder, instructing Revit to load pyRevit when it starts.
• The Addins folder can be located in one of these paths, depending on pyRevit installation:
◦ C:\ProgramData\Autodesk\Revit\Addins (for all users)
◦ %APPDATA%\Autodesk\Revit\Addins (for the current user only)
• The manifest points to pyRevitLoader.dll, which acts as the entry point for pyRevit.
pyRevitLoader.dll
The pyRevitLoader.dll file is a small C# program that:
• Ensures required .NET assemblies are loaded.
• Loads the IronPython engine and runs pyRevit’s Python startup script (pyrevitloader.py).Info
the source code is in PyRevitLoaderApplication.cs and it is an implementation of the Revit API IExternalApplication interface (the standard way to create a plugin for Revit).
There are multiple versions of pyRevitLoader.dll to support:
• different Revit versions:
◦ One for Revit 2025 and newer, built with .NET 8.
◦ Another for older Revit versions, built with the .NET Framework.
• different IronPython versions; to this date:
◦ version 2.7.12, the default one
◦ version 3.4.0, more recent but not fully tested.
They share the same source code, but are compiled against the different .net runtimes and IronPython versions.
Note
Since we cannot have multiple IronPython engines running at the same time, if the user switches the engine in the configuration, pyRevit will change the .addin manifest mentioned above to point to the correct dll path. It may be that sometimes the addin is not created correctly or points to the wrong path, and this is why most of the times the pyrevit attach command solves the installation issues.
Startup Script: pyrevitloader.py
This Python script is the first code executed by pyRevit inside Revit. It:
• Sets up environment variables.
• Initializes the logging system and prepares the script console
• Checks for updates if enabled, pulling changes for pyRevit and extensions.
• Loads extensions and creates UI elements like ribbons and buttons (see below).
• Activates hooks, which enable features like event-driven scripts.
• Initializes API routes and Telemetry, if enabledInfo
pyrevitloader.py is a small script that just calls the pyrevit.loader.sessionmgr.load_session function. That function is responsible to do all the things mentioned above.
Extensions discovery
• pyRevit scans known paths and user defined folders to find extensions.
• For each extension, it builds a .net assembly to create buttons, tabs, and other UI elements.Info
Extensions directories are detected by pyrevit.userconfig.PyRevitConfig.get_ext_root_dirs. Extension components discovery is performed by pyrevit.extensions.extensionmgr.get_installed_ui_extensions. Assemblies are generated by pyrevit.loader.asmmaker with types from pyrevit.runtime.create_type.
How pyRevit Commands run
TL;DR:
Command execution is handled by the c# project pyRevitLabs.Pyrevit.Runtime
Each button generated by the Extension discovery is bound to a command derived by the ScriptCommand.cs source code.
This code deals with:
• detecting the modifier keys hold while clicking the button, and change the behavior accordingly
• calling ScriptExcecutor.ExcecuteScript passing the python script (or any other supportesd script) for the commandInfo
The ScriptCommand class implements Revit’s IExternalCommand interface. The Execute method is the one called when you click the Ribbon button.
In turn, the code in ScriptExecutor.cs calls the appropriate script engine based on the type of (IronPython, CPython, .NET, and so on).Info
You can find the code of the engines in the files that end Engine.cs. 
4 changes: 2 additions & 2 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Prepare Python 3.10
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.10'

Expand Down
49 changes: 8 additions & 41 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,13 @@ jobs:
echo "commit: ${{ github.sha }}"

- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: recursive

- name: Prepare Python 3.10
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.10'

Expand All @@ -63,12 +63,12 @@ jobs:

# needed for MahApps XamlColorSchemeGenerator
- name: Prepare .NET 3.1
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@v5
with:
dotnet-version: 3.1.x

- name: Prepare .NET 8.0
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@v5
with:
dotnet-version: 8.0.x

Expand All @@ -78,7 +78,7 @@ jobs:
- name: Prepare git
if: (github.repository == env.MainRepo)
uses: fregante/setup-git-user@v2

- name: Check Build Environment
if: (github.repository == env.MainRepo)
run: pipenv run pyrevit check
Expand All @@ -88,16 +88,6 @@ jobs:
run: |
pipenv run pyrevit set year

# - name: Update Certificate
# if: (github.repository == env.MainRepo)
# env:
# CERTIFICATE: ${{ secrets.CERTIFICATE }}
# CERTIFICATEPASSWORD: ${{ secrets.PASSWORD }}
# CERTIFICATESHA1: "${{ secrets.CERTIFICATESHA1 }}"
# CERTIFICATENAME: "${{ secrets.CERTIFICATENAME }}"
# run: |
# pipenv run pyrevit sign addcert

# WIP only
- name: Update Build Info (WIP)
if: (github.base_ref != env.ReleaseBranch && github.repository == env.MainRepo)
Expand Down Expand Up @@ -131,33 +121,10 @@ jobs:
uses: juliangruber/read-file-action@v1
with:
path: release/version

# - name: Sign Products
# if: (github.repository == env.MainRepo)
# env:
# CERTIFICATE: ${{ secrets.CERTIFICATE }}
# CERTIFICATEPASSWORD: ${{ secrets.PASSWORD }}
# CERTIFICATESHA1: "${{ secrets.CERTIFICATESHA1 }}"
# CERTIFICATENAME: "${{ secrets.CERTIFICATENAME }}"
# run: |
# pipenv run pyrevit sign products

# - name: Sign Installers
# if: (github.repository == env.MainRepo)
# env:
# CERTIFICATE: ${{ secrets.CERTIFICATE }}
# CERTIFICATEPASSWORD: ${{ secrets.PASSWORD }}
# CERTIFICATESHA1: "${{ secrets.CERTIFICATESHA1 }}"
# CERTIFICATENAME: "${{ secrets.CERTIFICATENAME }}"
# run: |
# pipenv run pyrevit sign installers

# default retention period is 90 days
# https://github.com/marketplace/actions/upload-a-build-artifact#retention-period

- name: Sign files with Trusted Signing (DLLs and EXEs)
if: (github.repository == env.MainRepo)
uses: azure/trusted-signing-action@v0.5.1
uses: azure/trusted-signing-action@v0.5.10
with:
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
Expand All @@ -179,7 +146,7 @@ jobs:

- name: Sign files with Trusted Signing (installers)
if: (github.repository == env.MainRepo)
uses: azure/trusted-signing-action@v0.5.1
uses: azure/trusted-signing-action@v0.5.10
with:
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
Expand All @@ -196,7 +163,7 @@ jobs:
timestamp-digest: SHA256

- name: Upload Installers
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: pyrevit-installers
path: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/stale-issues.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v9
- uses: actions/stale@v10
with:
days-before-issue-stale: 60
days-before-issue-close: 14
Expand Down
2 changes: 1 addition & 1 deletion Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ verify_ssl = true

[dev-packages]
mypy = "*"
pylint = "==3.3.7"
pylint = "==4.0.2"

[packages]
docopt = "*"
Expand Down
Loading
Loading