pyRevit v4.7-beta2
Pre-release
Pre-release
New pyRevit Home
Breaking Changes
- C# bundles are NOT compiled at runtime anymore. See new C# scripts under New Features.
- New execution model and many internal core and pyRevitLabs changes/refactoring/simplifications. Does not affect your codes unless you are reaching into pyRevit or pyRevitLabs internals. You shouldn't need to in general.
- Revised
revit.activeview
torevit.active_view
(FYI underlyingHOST_APP.activeview
is also changed toHOST_APP.active_view
) - Revised
pick_message
argument onrevit.pick_*()
methods tomessage
for consistency - Anything named "Usage Logging" is now renamed to "Telemetry". New server is provided. See New Features
.stack2
and.stack3
bundles are now combined into single.stack
bundle. Rename your stack bundle types to use.stack
- Creating
.linkbutton
bundles using__assembly__
and__commandclass__
is deprecated. See pyRevit Bundles _layout
files are deprecated. See Bundle Metadatazerodoc
context renamed tozero-doc
- Command unique id formatting has changed. See the tooltips on commands for the unique ids (Looks similar to
pyrevitcore-pyrevit-pyrevit-tools-spy-getsyspath
) - Removed Revit < 2016 from supported Revits list. Any development on older Revits will be contributer driven based on usage.
- Removed
pyrevit init
command
New Features
- pyRevit Telemetry: Advanced pyRevit and Revit usage tracking for your organizations. See Telemetry System
- pyRevit Telemetry Server: Telemetry server that listens for telemetry data from all pyRevit users in your organization. Supports Supports many SQL and Document database types. See See Telemetry System for how to get it set up.
- New execution model to support more bundle languages
- pyRevit Hooks: pyRevit event handling script for your own extensions. Supports python, csharp, and visual basic script. See Extension Hooks
- New
bundle.yaml
bundle metadata file can provide information about the script. - C# bundles are now executed like a python script. A new fresh copy of the C# code is run at every execution. This means that you can make changes to the code while Revit is running and keep re-executing the code. Just like python scripts. Scripts now have access to pyRevit script information e.g. path, bundle name, ... See Create Your First .NET Command
- Tab Colorizer by Revit model or family. See Colorize Revit Tabs
- New bundle type
.invokebutton
See pyRevit Bundles - New bundle type
.content
See pyRevit Bundles - New bundle type
.urlbutton
: URL Button bundle type for opening hyperlinks without writing code. See pyRevit Bundles - Visual Basic buttons (script.vb): Runs live, similar to C# scripts
- Ruby buttons (script.rb): Scaffolding is ready. The executor will be developed when someone cares about this dying languages; hahahaaa
- Grasshopper buttons (script.gh): pyRevit can now request Rhino.Inside to rub the grasshopper scripts inside pyRevit bundles. See Rhino.Inside project. Place a
script.gh
orscript.ghx
inside a pyRevit bundle, and pyRevit will ask Rhino.Inside to run that for you. Very similar to how DynamoBIM bundles work. - More versatile
context
detection model for all bundle tools. See Bundle Context - New ReNumber tool. Currently works on spatial elements (e.g. rooms and areas), and doors, walls, windows.
__authors__
and__author__
metadata variables in python scripts can be used interchangably now. Both accept a single string value e.g.__authors__ = "Me"
or list of strings e.g.__authors__ = ["Me", "Her", "Him"]
- New Show Linked File tool: Opens explorer and points to the selected linked file in Revit
- New Save Families tool: Selectively save families. Kudos to Alex Melnikov
- New Keep Mirrored tool: Kudos to Alex Melnikov
- New Select Tompost Group tool: Kudos to Alex Melnikov
- Script logger (
logger = script.get_logger()
now hasdeprecate()
andsuccess()
levels. See Python Script Facilities - Commands now have access to their button through
EXEC_PARAMS.command_uibutton
- Started work on translating pyRevit. See pyRevit Language in Configure pyRevit and Help Translate pyRevit
New Features (beta only. Subject to change)
__persistentengine__
now allows a script to keep the engine in memory after execution. This is a necessary setting for scripts that deal with non-modal windows