pi-revit 0.2.12 → 0.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +272 -230
- package/README.md +3 -1
- package/bin/pi-revit.js +1 -1
- package/package.json +56 -56
- package/scripts/benchmark-search-docs.py +313 -313
- package/scripts/deploy.ps1 +12 -0
- package/scripts/setup-workspace.ps1 +80 -80
- package/scripts/uninstall.ps1 +146 -146
- package/skills/pi-revit/SKILL.md +53 -53
- package/src/Revit/BridgeServer.cs +67 -0
- package/src/Revit/Tools/CaptureView.cs +60 -1
- package/src/Revit/Tools/ExecuteCsharp.cs +17 -2
- package/src/Revit/Tools/ExportDocuments.cs +36 -5
- package/src/Revit/Tools/FailureGuard.cs +62 -62
- package/src/Revit/Tools/GetElements.cs +49 -15
- package/src/Revit/Tools/OpenView.cs +103 -103
- package/src/Revit/Tools/ToolSupport.cs +301 -301
- package/workspace/pi-revit-global.cmd +12 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,230 +1,272 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to pi-revit are documented here.
|
|
4
|
-
Format follows [Keep a Changelog](https://keepachangelog.com/); version headers use
|
|
5
|
-
`## [x.y.z] - YYYY-MM-DD` so tooling (and Pi's changelog parser format) can read them.
|
|
6
|
-
|
|
7
|
-
Every published version gets an entry with **Added** / **Changed** / **Fixed** sections
|
|
8
|
-
describing what the user will notice — not internal refactors.
|
|
9
|
-
|
|
10
|
-
## [0.2.
|
|
11
|
-
|
|
12
|
-
###
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
`
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
###
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
### Changed
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
### Changed
|
|
189
|
-
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
###
|
|
198
|
-
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
### Fixed
|
|
210
|
-
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
###
|
|
220
|
-
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to pi-revit are documented here.
|
|
4
|
+
Format follows [Keep a Changelog](https://keepachangelog.com/); version headers use
|
|
5
|
+
`## [x.y.z] - YYYY-MM-DD` so tooling (and Pi's changelog parser format) can read them.
|
|
6
|
+
|
|
7
|
+
Every published version gets an entry with **Added** / **Changed** / **Fixed** sections
|
|
8
|
+
describing what the user will notice — not internal refactors.
|
|
9
|
+
|
|
10
|
+
## [0.2.13] - 2026-08-21
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- `get_elements`: a display-name filter rule that matches no parameter on any probed
|
|
14
|
+
in-scope element now carries an explicit WARNING in the result (content text and a
|
|
15
|
+
`warnings` payload field) instead of silently reporting 0 matches. The typical trap:
|
|
16
|
+
querying an English display name against a non-English UI, where the same parameter
|
|
17
|
+
carries a translated name -- the query looked valid and the honest answer was "unknown
|
|
18
|
+
parameter", not "0 matches". The warning points to the language-independent
|
|
19
|
+
BuiltInParameter enum name as the fix.
|
|
20
|
+
- `get_elements`: a filter value that does not fit the parameter's storage type now fails
|
|
21
|
+
the same way regardless of scoping. Previously the identical query reported a clear error
|
|
22
|
+
when `category`/`of_class` was set (the rule ran inside Revit's collector) but silently
|
|
23
|
+
returned zero matches when it was not (the rule fell back to the per-element scan).
|
|
24
|
+
- `execute_csharp`: a script that ran successfully but returned a value the result
|
|
25
|
+
serializer could not walk — a lazy sequence over a deleted element, a property that
|
|
26
|
+
throws — was rolled back and reported as "C# script threw". The script's changes now
|
|
27
|
+
commit, `returnValue` explains what happened, and `returnValueError` carries the detail.
|
|
28
|
+
- `capture_view`: every snapshot stayed on disk forever (measured on one machine: 138
|
|
29
|
+
files, 28 MB, going back 15 months). Captures now go to `%LOCALAPPDATA%\pi-revit\captures`
|
|
30
|
+
and each capture sweeps the ones older than 24 hours. The folder had to become a fixed
|
|
31
|
+
one: `Path.GetTempPath()` can return a fresh per-session directory, so files left by
|
|
32
|
+
earlier sessions were unreachable from the current one. The file just produced is
|
|
33
|
+
untouched, so the read tool still finds it.
|
|
34
|
+
- `export_documents`: the produced-file list compared pre-existing files against a wall
|
|
35
|
+
clock window, so an untouched file that merely happened to be recent was reported as
|
|
36
|
+
exported. Each file is now compared against its own pre-export timestamp.
|
|
37
|
+
- The bridge reclaims `bridge.json` when its owner goes away. With two Revits open the
|
|
38
|
+
newer one still owns the file, but closing it no longer leaves the older, still-running
|
|
39
|
+
bridge undiscoverable — and a stale entry left by a crashed Revit is replaced within 30s
|
|
40
|
+
instead of failing every call with "could not reach the Revit bridge".
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
- `scripts/deploy.ps1` replaces the add-in folder instead of copying over it, so files from
|
|
44
|
+
a previous release cannot linger next to the new ones. It reports clearly if Revit is
|
|
45
|
+
still running and holding the folder.
|
|
46
|
+
- Docs: `open_view` was missing from the README tool table; the 0.2.10-0.2.12 changelog
|
|
47
|
+
entries were dated a day after their actual release.
|
|
48
|
+
|
|
49
|
+
Requires redeploying the Revit add-in (`scripts\deploy.ps1` with Revit closed, then
|
|
50
|
+
restart Revit).
|
|
51
|
+
|
|
52
|
+
## [0.2.12] - 2026-07-21
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
- New tool `open_view`: activates a view or sheet in the Revit UI — the equivalent of
|
|
56
|
+
double-clicking it in the Project Browser. Identify the target by `view_id` or by
|
|
57
|
+
`name` (view name, sheet number like "A-101", or "number - name"). Uses Revit's
|
|
58
|
+
queued `RequestViewChange`, which is explicitly legal from the bridge's ExternalEvent
|
|
59
|
+
context; the activation completes the instant the call returns. Ends the
|
|
60
|
+
"please double-click the sheet yourself" gap after sheet/view creation.
|
|
61
|
+
|
|
62
|
+
Requires redeploying the Revit add-in (`scripts\deploy.ps1` with Revit closed, then
|
|
63
|
+
restart Revit).
|
|
64
|
+
|
|
65
|
+
## [0.2.11] - 2026-07-21
|
|
66
|
+
|
|
67
|
+
### Fixed
|
|
68
|
+
- `search_api_docs`: signature queries now accept .NET type names and qualified names —
|
|
69
|
+
`Wall.Create(Document, Curve, ElementId, Boolean` and `...(System.String` match the
|
|
70
|
+
rendered `bool` / `string`, and `(Autodesk.Revit.DB.Document` matches `Document`.
|
|
71
|
+
Parameter types in the query are reduced exactly the way the index renders them
|
|
72
|
+
(namespace stripped, CLR name → C# keyword, case-insensitive).
|
|
73
|
+
- `search_api_docs`: Creation-factory calls resolve — `Document.Create.NewRoom(Level, UV`
|
|
74
|
+
finds `Document.NewRoom`, and `Document.Create.NewFamilyInstance` finds the
|
|
75
|
+
`ItemFactoryBase` overloads (factory members documented on a base class). A note in the
|
|
76
|
+
result explains the rewrite. Applies only to the literal `Document.Create.` /
|
|
77
|
+
`Application.Create.` prefixes; ordinary members like `Wall.Create` are untouched, and
|
|
78
|
+
nonsense like `Document.Create.Banana` still honestly returns nothing.
|
|
79
|
+
|
|
80
|
+
Both were observed live: pi stumbled on these five times across two modeling sessions.
|
|
81
|
+
The benchmark gained six regression probes for them.
|
|
82
|
+
|
|
83
|
+
Requires redeploying the Revit add-in (`scripts\deploy.ps1` with Revit closed, then
|
|
84
|
+
restart Revit).
|
|
85
|
+
|
|
86
|
+
## [0.2.10] - 2026-07-21
|
|
87
|
+
|
|
88
|
+
### Fixed
|
|
89
|
+
- `search_api_docs`: constructor overloads can now be targeted with the natural C#
|
|
90
|
+
spelling — `FilteredElementCollector(Document` matches even though constructors are
|
|
91
|
+
rendered as `new FilteredElementCollector(Document)`. Previously only the `new `-prefixed
|
|
92
|
+
form matched (the same typography-cliff family as the 0.2.8 comma-spacing fix).
|
|
93
|
+
|
|
94
|
+
### Added
|
|
95
|
+
- `scripts/benchmark-search-docs.py`: a reproducible ~630-query benchmark of
|
|
96
|
+
`search_api_docs` scored against Autodesk's own RevitAPI.xml — exact-name recall,
|
|
97
|
+
signature/spacing variants, hard syntax, namespace ambiguity, adversarial honesty
|
|
98
|
+
controls, documentation fidelity, and latency percentiles. Run it against any Revit
|
|
99
|
+
version with the bridge loaded. Measured on Revit 2025 at 0.2.9: 100% recall / 98.8%
|
|
100
|
+
top-1 on exact names, 100% spacing-variant agreement, 0 false positives across 99
|
|
101
|
+
adversarial mutations, 50/50 correct parameter docs, p50 8 ms.
|
|
102
|
+
|
|
103
|
+
Requires redeploying the Revit add-in (`scripts\deploy.ps1` with Revit closed, then
|
|
104
|
+
restart Revit).
|
|
105
|
+
|
|
106
|
+
## [0.2.9] - 2026-07-21
|
|
107
|
+
|
|
108
|
+
### Added
|
|
109
|
+
- Self-healing tool discovery: when pi starts before Revit, the extension now keeps
|
|
110
|
+
retrying tool discovery in the background (every 15s) and also re-discovers on a
|
|
111
|
+
successful `ping` — no more sessions stuck with only `ping` registered until a fresh
|
|
112
|
+
pi start. When tools arrive mid-session, `ping`'s result says so.
|
|
113
|
+
- `set_parameters` and `execute_csharp` accept an optional `expected_document` (the model
|
|
114
|
+
title): if the active document differs — e.g. the user switched models mid-session —
|
|
115
|
+
the write fails cleanly instead of landing in the wrong model.
|
|
116
|
+
- `get_element_details.parameter_names` now also matches language-independent
|
|
117
|
+
BuiltInParameter enum names (e.g. `ALL_MODEL_MARK`), so filtering works in non-English
|
|
118
|
+
Revit UIs where display names are localized.
|
|
119
|
+
|
|
120
|
+
### Fixed
|
|
121
|
+
- `get_element_details` no longer reports a misleading "0 params" when a
|
|
122
|
+
`parameter_names` filter simply matched nothing — it now reports "N of M params
|
|
123
|
+
matched parameter_names" so localization misses are visible. (This explains the
|
|
124
|
+
earlier "0 params vs 38 params" reports: different filter arguments, not flaky reads.)
|
|
125
|
+
- `get_elements`: a display-name filter rule in an **unscoped** query (no category /
|
|
126
|
+
of_class) is no longer promoted to a pinned collector filter based on a 50-element
|
|
127
|
+
probe — it stays on the per-element post-scan path, so categories beyond the probe
|
|
128
|
+
window can't be silently dropped when the same parameter name maps to different ids.
|
|
129
|
+
|
|
130
|
+
### Changed
|
|
131
|
+
- SKILL.md: guidance on localized parameter names (prefer BuiltInParameter enum names)
|
|
132
|
+
and on using `expected_document` for long sessions / multiple open models.
|
|
133
|
+
- README: new "Safety model" section stating explicitly what the add-in enforces and
|
|
134
|
+
that write-confirmation UX is a client-side decision.
|
|
135
|
+
|
|
136
|
+
Requires redeploying the Revit add-in (`scripts\deploy.ps1` with Revit closed, then
|
|
137
|
+
restart Revit).
|
|
138
|
+
|
|
139
|
+
## [0.2.8] - 2026-07-21
|
|
140
|
+
|
|
141
|
+
### Fixed
|
|
142
|
+
- `search_api_docs`: overload-targeted queries no longer fail on comma spacing.
|
|
143
|
+
`Wall.Create(Document,Curve` (no space) and `Wall.Create( Document, Curve` now match the
|
|
144
|
+
same overloads as `Wall.Create(Document, Curve` — the query's spacing around commas and
|
|
145
|
+
parentheses is normalized to the rendered signature style before matching.
|
|
146
|
+
|
|
147
|
+
Requires redeploying the Revit add-in (`scripts\deploy.ps1` with Revit closed, then restart
|
|
148
|
+
Revit).
|
|
149
|
+
|
|
150
|
+
## [0.2.7] - 2026-07-21
|
|
151
|
+
|
|
152
|
+
### Added
|
|
153
|
+
- Update announcements: after a pi-revit update, the next pi session shows a one-time
|
|
154
|
+
"What's new in pi-revit" note listing the changelog entries for every version since the
|
|
155
|
+
last one announced — the same mechanism pi uses for its own updates. The last-announced
|
|
156
|
+
version is remembered in `%APPDATA%\pi-revit\state.json` (kept outside the package
|
|
157
|
+
folder so npm updates can't erase it). Fresh installs stay silent.
|
|
158
|
+
|
|
159
|
+
Extension-only change: no Revit add-in redeploy or Revit restart needed.
|
|
160
|
+
|
|
161
|
+
## [0.2.6] - 2026-07-20
|
|
162
|
+
|
|
163
|
+
### Fixed
|
|
164
|
+
- Write transactions (`set_parameters`, `execute_csharp`, and the temporary-isolate
|
|
165
|
+
branch of `manage_selection`) now register a failures preprocessor. Previously Revit
|
|
166
|
+
handled commit failures interactively: warnings popped the transient toast and spammed
|
|
167
|
+
the journal, and an error-severity failure showed the modal resolution dialog, blocking
|
|
168
|
+
the bridge until a human clicked. Now warnings are auto-dismissed and reported back
|
|
169
|
+
(`commitWarnings` in the result, e.g. duplicate Mark values), and errors roll the
|
|
170
|
+
transaction back with the actual Revit failure text in the error message.
|
|
171
|
+
|
|
172
|
+
### Changed
|
|
173
|
+
- `set_parameters` tool description tells the model to relay `commitWarnings` to the user.
|
|
174
|
+
|
|
175
|
+
Requires redeploying the Revit add-in (`scripts\deploy.ps1` + Revit restart).
|
|
176
|
+
|
|
177
|
+
## [0.2.5] - 2026-07-20
|
|
178
|
+
|
|
179
|
+
### Fixed
|
|
180
|
+
- `execute_csharp` dialog guard no longer answers every Revit popup with OK. On some
|
|
181
|
+
dialogs OK is the destructive choice (e.g. "Delete Element(s)"), so a script could
|
|
182
|
+
silently delete dimensions or constraints and still report success. Unrecognized
|
|
183
|
+
dialogs are now answered dismissively (Cancel, then Close, then No; OK only as the
|
|
184
|
+
last resort so Revit can never hang behind a popup), a small allowlist keeps OK for
|
|
185
|
+
dialogs that are safe to confirm, and `suppressedDialogs` now reports which answer
|
|
186
|
+
was given (e.g. `TaskDialog_… (answered Cancel)`).
|
|
187
|
+
|
|
188
|
+
### Changed
|
|
189
|
+
- The `execute_csharp` tool description tells the model that confirmation prompts may be
|
|
190
|
+
cancelled and to check `suppressedDialogs` when a result looks incomplete.
|
|
191
|
+
|
|
192
|
+
Requires redeploying the Revit add-in (`scripts\deploy.ps1` + Revit restart) — `ping`
|
|
193
|
+
warns on a version mismatch until then.
|
|
194
|
+
|
|
195
|
+
## [0.2.4] - 2026-07-20
|
|
196
|
+
|
|
197
|
+
### Added
|
|
198
|
+
- This changelog. It ships inside the npm package and gets a `## [x.y.z]` entry with
|
|
199
|
+
**Added / Changed / Fixed** sections for every release, so updates report what actually
|
|
200
|
+
changed instead of just a version number.
|
|
201
|
+
|
|
202
|
+
## [0.2.3] - 2026-07-20
|
|
203
|
+
|
|
204
|
+
### Changed
|
|
205
|
+
- `search_api_docs`: results with the same short name in different namespaces are now
|
|
206
|
+
disambiguated with their full namespace, so `Category` vs internal schedule types
|
|
207
|
+
can't be confused.
|
|
208
|
+
|
|
209
|
+
### Fixed
|
|
210
|
+
- Removed a hardcoded example from the overload note that could mislead the model into
|
|
211
|
+
copying a signature that didn't apply.
|
|
212
|
+
|
|
213
|
+
## [0.2.2] - 2026-07-20
|
|
214
|
+
|
|
215
|
+
### Added
|
|
216
|
+
- `search_api_docs`: exception documentation ("Throws:") is now shown for matched members.
|
|
217
|
+
- Overload-targeted queries: a query containing `(` matches against rendered signatures.
|
|
218
|
+
|
|
219
|
+
### Changed
|
|
220
|
+
- Overloads now rank simplest-first (fewest parameters), so the common form appears on top.
|
|
221
|
+
|
|
222
|
+
## [0.2.1] - 2026-07-16
|
|
223
|
+
|
|
224
|
+
### Added
|
|
225
|
+
- Extension/add-in version handshake: `ping` reports both versions and warns when the
|
|
226
|
+
npm extension and the installed Revit add-in are out of sync (partial-update detection).
|
|
227
|
+
|
|
228
|
+
## [0.2.0] - 2026-07-15
|
|
229
|
+
|
|
230
|
+
### Changed
|
|
231
|
+
- SKILL.md: documents the top-match inline docs behaviour and the automatic
|
|
232
|
+
`Models\<title>\exports` output location so the agent uses them without prompting.
|
|
233
|
+
|
|
234
|
+
## [0.1.9] - 2026-07-15
|
|
235
|
+
|
|
236
|
+
### Added
|
|
237
|
+
- `search_api_docs` indexes every Revit API enum and surfaces `<remarks>` documentation.
|
|
238
|
+
|
|
239
|
+
### Changed
|
|
240
|
+
- The top match's full documentation is placed directly in the tool's text output
|
|
241
|
+
(where model attention is strongest) instead of only in the structured payload.
|
|
242
|
+
|
|
243
|
+
## [0.1.8] - 2026-07-13
|
|
244
|
+
|
|
245
|
+
### Added
|
|
246
|
+
- Automatic per-model output sorting: exports, captures, and scripts land under
|
|
247
|
+
`Models\<model title>\` in the workspace, keyed to the source document.
|
|
248
|
+
|
|
249
|
+
## [0.1.7] - 2026-07-13
|
|
250
|
+
|
|
251
|
+
### Fixed
|
|
252
|
+
- npm-install uninstall flow no longer blocks itself on its own installation folder.
|
|
253
|
+
|
|
254
|
+
## [0.1.6] - 2026-07-13
|
|
255
|
+
|
|
256
|
+
### Changed
|
|
257
|
+
- The global launcher installs next to the user's permanent pi under npx.
|
|
258
|
+
|
|
259
|
+
## [0.1.5] - 2026-07-13
|
|
260
|
+
|
|
261
|
+
### Fixed
|
|
262
|
+
- Uninstall of the npm-installed Pi package.
|
|
263
|
+
- Workspace paths containing non-ASCII characters.
|
|
264
|
+
|
|
265
|
+
First version published to npm.
|
|
266
|
+
|
|
267
|
+
## [0.1.0] - 2026-06-17
|
|
268
|
+
|
|
269
|
+
Initial public release: Revit bridge add-in (Revit 2025/2026/2027) plus Pi extension with
|
|
270
|
+
`ping`, `get_model_overview`, `get_elements`, `get_element_details`, `set_parameters`,
|
|
271
|
+
`manage_selection`, `capture_view`, `export_documents`, `execute_csharp`, and
|
|
272
|
+
`search_api_docs`.
|
package/README.md
CHANGED
|
@@ -160,6 +160,7 @@ Plain `pi` from any folder also works; `pi-revit` just adds the right working fo
|
|
|
160
160
|
| `get_element_details` | Parameter values, location, bounding box, materials per element |
|
|
161
161
|
| `get_element_types` | Element types / family symbols, optional placed-instance counts |
|
|
162
162
|
| `manage_selection` | Get/set/clear the selection, zoom, temporary isolate |
|
|
163
|
+
| `open_view` | Activate a view or sheet in the Revit UI (like double-clicking it in the browser) |
|
|
163
164
|
| `set_parameters` | Bulk parameter writes + rename anything (one transaction per batch) |
|
|
164
165
|
| `search_api_docs` | Search the offline Revit API docs (works with no document open) |
|
|
165
166
|
| `execute_csharp` | Run a C# script in one auto-managed transaction — the escape hatch |
|
|
@@ -177,7 +178,8 @@ Plain `pi` from any folder also works; `pi-revit` just adds the right working fo
|
|
|
177
178
|
- The add-in multi-targets .NET 8 (Revit 2025/2026) and .NET 10 (Revit 2027); `deploy.ps1`
|
|
178
179
|
auto-detects the Revit versions you have installed and builds only the matching framework(s),
|
|
179
180
|
so you only need the SDK for the Revit you run. Verified on Revit 2025 and 2027.
|
|
180
|
-
- **One Revit instance at a time** is discoverable (last started wins).
|
|
181
|
+
- **One Revit instance at a time** is discoverable (last started wins). When that instance
|
|
182
|
+
closes or crashes, another one that is still running takes the slot over within 30s.
|
|
181
183
|
- A tool call that outlives its timeout is abandoned client-side but may still complete inside
|
|
182
184
|
Revit — verify model state before re-issuing a write.
|
|
183
185
|
- Long-running scripts cannot be interrupted mid-execution (Revit's API is single-threaded);
|
package/bin/pi-revit.js
CHANGED