@snaptrude/plugin-core 0.7.1 → 0.9.0
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 +29 -0
- package/api-manifest.full.json +7703 -0
- package/api-manifest.json +2946 -259
- package/dist/api/analysis/daylight.d.ts +603 -0
- package/dist/api/analysis/daylight.d.ts.map +1 -0
- package/dist/api/analysis/heatmaps.d.ts +438 -14
- package/dist/api/analysis/heatmaps.d.ts.map +1 -1
- package/dist/api/analysis/index.d.ts +15 -0
- package/dist/api/analysis/index.d.ts.map +1 -1
- package/dist/api/analysis/solar.d.ts +249 -0
- package/dist/api/analysis/solar.d.ts.map +1 -0
- package/dist/api/analysis/weather.d.ts +193 -0
- package/dist/api/analysis/weather.d.ts.map +1 -0
- package/dist/api/core/camera/index.d.ts +245 -0
- package/dist/api/core/camera/index.d.ts.map +1 -0
- package/dist/api/core/comment/index.d.ts +105 -2
- package/dist/api/core/comment/index.d.ts.map +1 -1
- package/dist/api/core/geom/create/index.d.ts +331 -14
- package/dist/api/core/geom/create/index.d.ts.map +1 -1
- package/dist/api/core/geom/delete/index.d.ts +8 -2
- package/dist/api/core/geom/delete/index.d.ts.map +1 -1
- package/dist/api/core/geom/query/arc.d.ts +5 -5
- package/dist/api/core/geom/query/brep.d.ts +18 -18
- package/dist/api/core/geom/query/circle.d.ts +18 -18
- package/dist/api/core/geom/query/contour.d.ts +20 -20
- package/dist/api/core/geom/query/curve.d.ts +49 -49
- package/dist/api/core/geom/query/edge.d.ts +5 -5
- package/dist/api/core/geom/query/face.d.ts +16 -16
- package/dist/api/core/geom/query/halfedge.d.ts +8 -8
- package/dist/api/core/geom/query/profile.d.ts +19 -19
- package/dist/api/core/geom/query/vertex.d.ts +8 -8
- package/dist/api/core/geom/update/contour.d.ts +14 -14
- package/dist/api/core/geom/update/curve.d.ts +7 -7
- package/dist/api/core/geom/update/profile.d.ts +16 -16
- package/dist/api/core/handles/index.d.ts +210 -0
- package/dist/api/core/handles/index.d.ts.map +1 -0
- package/dist/api/core/index.d.ts +24 -0
- package/dist/api/core/index.d.ts.map +1 -1
- package/dist/api/core/io/export/index.d.ts +134 -0
- package/dist/api/core/io/export/index.d.ts.map +1 -0
- package/dist/api/core/io/import/index.d.ts +62 -1
- package/dist/api/core/io/import/index.d.ts.map +1 -1
- package/dist/api/core/io/index.d.ts +5 -0
- package/dist/api/core/io/index.d.ts.map +1 -1
- package/dist/api/core/layers.d.ts +7 -7
- package/dist/api/core/mode/index.d.ts +99 -0
- package/dist/api/core/mode/index.d.ts.map +1 -0
- package/dist/api/core/proposals/index.d.ts +65 -9
- package/dist/api/core/proposals/index.d.ts.map +1 -1
- package/dist/api/core/storeys/index.d.ts +251 -0
- package/dist/api/core/storeys/index.d.ts.map +1 -0
- package/dist/api/core/tags.d.ts +24 -0
- package/dist/api/core/tags.d.ts.map +1 -1
- package/dist/api/core/user.d.ts +44 -0
- package/dist/api/core/user.d.ts.map +1 -0
- package/dist/api/core/zoom/index.d.ts +4 -0
- package/dist/api/core/zoom/index.d.ts.map +1 -1
- package/dist/api/design/boolean/index.d.ts +4 -4
- package/dist/api/design/create/index.d.ts +253 -47
- package/dist/api/design/create/index.d.ts.map +1 -1
- package/dist/api/design/delete/index.d.ts +3 -0
- package/dist/api/design/delete/index.d.ts.map +1 -1
- package/dist/api/design/doors/index.d.ts +36 -0
- package/dist/api/design/doors/index.d.ts.map +1 -1
- package/dist/api/design/edit/index.d.ts +1 -1
- package/dist/api/design/erase/index.d.ts +2 -2
- package/dist/api/design/furniture/index.d.ts +114 -3
- package/dist/api/design/furniture/index.d.ts.map +1 -1
- package/dist/api/design/index.d.ts +10 -0
- package/dist/api/design/index.d.ts.map +1 -1
- package/dist/api/design/materials/index.d.ts +111 -14
- package/dist/api/design/materials/index.d.ts.map +1 -1
- package/dist/api/design/query/geometry/index.d.ts +112 -0
- package/dist/api/design/query/geometry/index.d.ts.map +1 -1
- package/dist/api/design/query/index.d.ts +35 -1
- package/dist/api/design/query/index.d.ts.map +1 -1
- package/dist/api/design/query/referenceLines.d.ts +45 -0
- package/dist/api/design/query/referenceLines.d.ts.map +1 -0
- package/dist/api/design/query/spaces.d.ts +178 -5
- package/dist/api/design/query/spaces.d.ts.map +1 -1
- package/dist/api/design/transform/index.d.ts +95 -14
- package/dist/api/design/transform/index.d.ts.map +1 -1
- package/dist/api/design/types/index.d.ts +181 -0
- package/dist/api/design/types/index.d.ts.map +1 -0
- package/dist/api/design/update/index.d.ts +385 -2
- package/dist/api/design/update/index.d.ts.map +1 -1
- package/dist/api/design/visibility.d.ts +98 -0
- package/dist/api/design/visibility.d.ts.map +1 -0
- package/dist/api/entity/buildableEnvelope.d.ts +4 -0
- package/dist/api/entity/buildableEnvelope.d.ts.map +1 -1
- package/dist/api/entity/referenceLine.d.ts +10 -2
- package/dist/api/entity/referenceLine.d.ts.map +1 -1
- package/dist/api/entity/space.d.ts +19 -19
- package/dist/api/entity/story.d.ts +148 -15
- package/dist/api/entity/story.d.ts.map +1 -1
- package/dist/api/index.d.ts +5 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/presentation/annotate.d.ts +448 -0
- package/dist/api/presentation/annotate.d.ts.map +1 -0
- package/dist/api/presentation/diagrams.d.ts +49 -8
- package/dist/api/presentation/diagrams.d.ts.map +1 -1
- package/dist/api/presentation/export.d.ts +108 -0
- package/dist/api/presentation/export.d.ts.map +1 -0
- package/dist/api/presentation/import.d.ts +6 -0
- package/dist/api/presentation/import.d.ts.map +1 -1
- package/dist/api/presentation/index.d.ts +47 -0
- package/dist/api/presentation/index.d.ts.map +1 -1
- package/dist/api/presentation/placedViews.d.ts +370 -0
- package/dist/api/presentation/placedViews.d.ts.map +1 -0
- package/dist/api/presentation/shapes.d.ts +481 -0
- package/dist/api/presentation/shapes.d.ts.map +1 -0
- package/dist/api/presentation/sheets.d.ts +410 -13
- package/dist/api/presentation/sheets.d.ts.map +1 -1
- package/dist/api/presentation/views.d.ts +165 -10
- package/dist/api/presentation/views.d.ts.map +1 -1
- package/dist/api/program/areas.d.ts +63 -3
- package/dist/api/program/areas.d.ts.map +1 -1
- package/dist/api/program/cores.d.ts +3 -99
- package/dist/api/program/cores.d.ts.map +1 -1
- package/dist/api/program/index.d.ts +2 -2
- package/dist/api/program/index.d.ts.map +1 -1
- package/dist/api/program/layout.d.ts +172 -12
- package/dist/api/program/layout.d.ts.map +1 -1
- package/dist/api/program/site.d.ts +105 -8
- package/dist/api/program/site.d.ts.map +1 -1
- package/dist/api/program/spreadsheet.d.ts +365 -41
- package/dist/api/program/spreadsheet.d.ts.map +1 -1
- package/dist/api/workspace/index.d.ts +460 -0
- package/dist/api/workspace/index.d.ts.map +1 -0
- package/dist/handles.d.ts +64 -25
- package/dist/handles.d.ts.map +1 -1
- package/dist/index.cjs +3210 -1671
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3008 -1666
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/scripts/generate-manifest.mjs +45 -0
- package/src/api/analysis/daylight.ts +470 -0
- package/src/api/analysis/heatmaps.ts +444 -17
- package/src/api/analysis/index.ts +15 -0
- package/src/api/analysis/solar.ts +237 -0
- package/src/api/analysis/weather.ts +179 -0
- package/src/api/core/camera/index.ts +251 -0
- package/src/api/core/comment/index.ts +120 -2
- package/src/api/core/geom/create/index.ts +344 -1
- package/src/api/core/geom/delete/index.ts +6 -0
- package/src/api/core/handles/index.ts +233 -0
- package/src/api/core/index.ts +24 -0
- package/src/api/core/io/export/index.ts +126 -0
- package/src/api/core/io/import/index.ts +64 -0
- package/src/api/core/io/index.ts +5 -0
- package/src/api/core/mode/index.ts +96 -0
- package/src/api/core/proposals/index.ts +71 -11
- package/src/api/core/storeys/index.ts +279 -0
- package/src/api/core/tags.ts +27 -0
- package/src/api/core/user.ts +46 -0
- package/src/api/core/zoom/index.ts +4 -0
- package/src/api/design/create/index.ts +303 -36
- package/src/api/design/delete/index.ts +3 -0
- package/src/api/design/doors/index.ts +40 -0
- package/src/api/design/furniture/index.ts +127 -3
- package/src/api/design/index.ts +10 -0
- package/src/api/design/materials/index.ts +157 -30
- package/src/api/design/query/geometry/index.ts +125 -3
- package/src/api/design/query/index.ts +37 -7
- package/src/api/design/query/referenceLines.ts +52 -0
- package/src/api/design/query/spaces.ts +143 -0
- package/src/api/design/transform/index.ts +101 -12
- package/src/api/design/types/index.ts +156 -0
- package/src/api/design/update/index.ts +467 -6
- package/src/api/design/visibility.ts +109 -0
- package/src/api/entity/buildableEnvelope.ts +4 -0
- package/src/api/entity/referenceLine.ts +8 -0
- package/src/api/entity/story.ts +161 -15
- package/src/api/index.ts +5 -0
- package/src/api/presentation/annotate.ts +360 -0
- package/src/api/presentation/diagrams.ts +53 -8
- package/src/api/presentation/export.ts +108 -0
- package/src/api/presentation/import.ts +6 -0
- package/src/api/presentation/index.ts +55 -0
- package/src/api/presentation/placedViews.ts +363 -0
- package/src/api/presentation/shapes.ts +274 -0
- package/src/api/presentation/sheets.ts +346 -13
- package/src/api/presentation/views.ts +164 -12
- package/src/api/program/areas.ts +57 -6
- package/src/api/program/cores.ts +3 -91
- package/src/api/program/index.ts +2 -2
- package/src/api/program/layout.ts +182 -12
- package/src/api/program/site.ts +106 -8
- package/src/api/program/spreadsheet.ts +376 -35
- package/src/api/workspace/index.ts +516 -0
- package/src/handles.ts +77 -13
- package/tsconfig.json +7 -2
|
@@ -18,10 +18,21 @@ import { PluginApiReturn } from "../../types";
|
|
|
18
18
|
* longer `"running"` — a run can take up to 20 minutes.
|
|
19
19
|
* 3. {@linkcode PluginProgramLayoutApi.cancel} aborts an in-flight run.
|
|
20
20
|
*
|
|
21
|
-
* `arrange` produces several candidate layouts
|
|
22
|
-
* solution** as one undoable edit
|
|
23
|
-
*
|
|
24
|
-
*
|
|
21
|
+
* `arrange` produces several candidate layouts. By default it **auto-commits
|
|
22
|
+
* the first solution** as one undoable edit; pass `autoCommit: false` to hold
|
|
23
|
+
* the candidates for review instead — `getState` then reports
|
|
24
|
+
* `status: "pendingReview"` with `totalSolutions`, and
|
|
25
|
+
* {@linkcode PluginProgramLayoutApi.applySolution} commits the one you pick
|
|
26
|
+
* (the headless counterpart of the product's "Solution N of M → Apply" bar).
|
|
27
|
+
* `pack` re-shapes and applies its single result directly. Both are
|
|
28
|
+
* **Pro-plan-gated**, matching the product UI.
|
|
29
|
+
*
|
|
30
|
+
* {@linkcode PluginProgramLayoutApi.stack} is the **cross-storey** action —
|
|
31
|
+
* the product's *Pack in envelope* / auto-stack. It splits the building
|
|
32
|
+
* envelope by storey and packs each storey's departments into its slice as one
|
|
33
|
+
* undoable edit. Unlike `arrange` / `pack`, it is **not** the async-job model:
|
|
34
|
+
* it resolves inline when the whole multi-storey pack is done (no `getState`
|
|
35
|
+
* polling) and returns the storeys it had to skip. It is Pro-gated too.
|
|
25
36
|
*
|
|
26
37
|
* Accessed via `snaptrude.program.layout`.
|
|
27
38
|
*/
|
|
@@ -33,9 +44,16 @@ export declare abstract class PluginProgramLayoutApi {
|
|
|
33
44
|
* Starts the backend job and **returns immediately** — poll
|
|
34
45
|
* {@linkcode PluginProgramLayoutApi.getState} until `status` leaves
|
|
35
46
|
* `"running"` (a run can take up to 20 minutes). The solver produces
|
|
36
|
-
* several candidate layouts; this **auto-commits the first
|
|
37
|
-
*
|
|
38
|
-
*
|
|
47
|
+
* several candidate layouts; by default this **auto-commits the first
|
|
48
|
+
* solution** as one undoable edit. Pass `autoCommit: false` to review them
|
|
49
|
+
* instead: the run finishes with `status: "pendingReview"` and
|
|
50
|
+
* `totalSolutions` in `getState`, and
|
|
51
|
+
* {@linkcode PluginProgramLayoutApi.applySolution} commits the candidate you
|
|
52
|
+
* pick ({@linkcode PluginProgramLayoutApi.cancel} discards them). An
|
|
53
|
+
* arrange **without an envelope** applies directly (there is nothing to
|
|
54
|
+
* review) regardless of `autoCommit`. Starting a run while one is in flight
|
|
55
|
+
* replaces it; while solutions are pending review, new runs are refused —
|
|
56
|
+
* apply or cancel first.
|
|
39
57
|
*
|
|
40
58
|
* With no `options`, operates on the eligible Room/Department masses on the
|
|
41
59
|
* active storey and auto-detects the single buildable envelope there.
|
|
@@ -51,11 +69,14 @@ export declare abstract class PluginProgramLayoutApi {
|
|
|
51
69
|
* @throws When a `spaceId` / `departmentId` / `envelopeId` does not resolve.
|
|
52
70
|
* @throws When more than one envelope is on the active storey and none was
|
|
53
71
|
* given (ambiguous).
|
|
72
|
+
* @throws When arrange solutions are pending review (apply or cancel them
|
|
73
|
+
* first).
|
|
54
74
|
* @throws When plugin writes are disabled.
|
|
55
75
|
*
|
|
56
76
|
* @examplePrompt Arrange the rooms in the envelope
|
|
57
77
|
* @examplePrompt Lay out the departments inside the building envelope
|
|
58
78
|
* @examplePrompt Auto-arrange the program spaces
|
|
79
|
+
* @examplePrompt Arrange the rooms but let me pick the solution
|
|
59
80
|
*
|
|
60
81
|
* # Example
|
|
61
82
|
* ```ts
|
|
@@ -93,6 +114,8 @@ export declare abstract class PluginProgramLayoutApi {
|
|
|
93
114
|
* @throws When a `spaceId` / `departmentId` / `envelopeId` does not resolve.
|
|
94
115
|
* @throws When more than one envelope is on the active storey and none was
|
|
95
116
|
* given (ambiguous).
|
|
117
|
+
* @throws When arrange solutions are pending review (apply or cancel them
|
|
118
|
+
* first).
|
|
96
119
|
* @throws When plugin writes are disabled.
|
|
97
120
|
*
|
|
98
121
|
* @examplePrompt Pack the rooms into the envelope
|
|
@@ -110,6 +133,88 @@ export declare abstract class PluginProgramLayoutApi {
|
|
|
110
133
|
* ```
|
|
111
134
|
*/
|
|
112
135
|
abstract pack(options?: PluginProgramLayoutRunArgs): PluginApiReturn<PluginProgramLayoutRunResult>;
|
|
136
|
+
/**
|
|
137
|
+
* Apply one of the pending arrange solutions.
|
|
138
|
+
*
|
|
139
|
+
* The headless counterpart of the product's **"Solution N of M → Apply"**
|
|
140
|
+
* review bar: after an {@linkcode PluginProgramLayoutApi.arrange} run
|
|
141
|
+
* started with `autoCommit: false` finishes with `status: "pendingReview"`,
|
|
142
|
+
* this commits the candidate at `index` (0-based,
|
|
143
|
+
* `0 ≤ index < totalSolutions` from
|
|
144
|
+
* {@linkcode PluginProgramLayoutApi.getState}) as **one undoable edit** and
|
|
145
|
+
* discards the other candidates. `getState` then reports
|
|
146
|
+
* `status: "active"`.
|
|
147
|
+
*
|
|
148
|
+
* @param index - 0-based index of the pending solution to apply.
|
|
149
|
+
* @returns A {@linkcode PluginProgramLayoutApplyResult} —
|
|
150
|
+
* `{ success: true }` when the solution was applied.
|
|
151
|
+
* @throws When no arrange solutions are pending review (no
|
|
152
|
+
* `arrange({ autoCommit: false })` run has finished, or its solutions were
|
|
153
|
+
* already applied / cancelled).
|
|
154
|
+
* @throws When `index` is out of range for the pending solutions.
|
|
155
|
+
* @throws When plugin writes are disabled.
|
|
156
|
+
*
|
|
157
|
+
* @examplePrompt Apply the second arrange solution
|
|
158
|
+
* @examplePrompt Pick layout solution 3 and commit it
|
|
159
|
+
* @examplePrompt Apply the arrange solution I chose
|
|
160
|
+
*
|
|
161
|
+
* # Example
|
|
162
|
+
* ```ts
|
|
163
|
+
* await snaptrude.program.layout.arrange({ autoCommit: false })
|
|
164
|
+
* let job = await snaptrude.program.layout.getState()
|
|
165
|
+
* while (job?.status === "running") {
|
|
166
|
+
* await new Promise((r) => setTimeout(r, 5000))
|
|
167
|
+
* job = await snaptrude.program.layout.getState()
|
|
168
|
+
* }
|
|
169
|
+
* if (job?.status === "pendingReview") {
|
|
170
|
+
* console.log(`${job.totalSolutions} candidate layouts`)
|
|
171
|
+
* await snaptrude.program.layout.applySolution(1) // commit the second one
|
|
172
|
+
* }
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
abstract applySolution(index: number): PluginApiReturn<PluginProgramLayoutApplyResult>;
|
|
176
|
+
/**
|
|
177
|
+
* Stack the program across **every storey** of the building — the product's
|
|
178
|
+
* *Pack in envelope* / auto-stack.
|
|
179
|
+
*
|
|
180
|
+
* Splits the building envelope massing into per-storey envelope slices, then
|
|
181
|
+
* packs each storey's departments into its slice, applying the whole
|
|
182
|
+
* multi-storey result as **one undoable edit**.
|
|
183
|
+
*
|
|
184
|
+
* Unlike {@linkcode PluginProgramLayoutApi.arrange} /
|
|
185
|
+
* {@linkcode PluginProgramLayoutApi.pack}, this **is not** the async-job
|
|
186
|
+
* model: `await` it and it resolves when the stack is done — there is no
|
|
187
|
+
* `getState` polling. It operates on the whole active model (no id / envelope
|
|
188
|
+
* arguments): it auto-discovers the departments and envelope on each storey.
|
|
189
|
+
*
|
|
190
|
+
* Storeys that have departments but **no envelope** are reported in
|
|
191
|
+
* `skippedStoreys` (nothing was packed there). A storey's departments must
|
|
192
|
+
* already be on that storey — `stack` does not move departments between
|
|
193
|
+
* floors, it lays out each floor's program into that floor's envelope.
|
|
194
|
+
*
|
|
195
|
+
* @returns A {@linkcode PluginProgramLayoutStackResult} — `success: true`
|
|
196
|
+
* with the (possibly empty) `skippedStoreys` when the stack was applied, or
|
|
197
|
+
* `success: false` with an `error` when the run failed (e.g. the adjacency
|
|
198
|
+
* service was unreachable).
|
|
199
|
+
* @throws When the project is not on a Pro plan.
|
|
200
|
+
* @throws When plugin writes are disabled.
|
|
201
|
+
* @throws When an `arrange` / `pack` run, or another `stack`, is already in
|
|
202
|
+
* flight, or arrange solutions are pending review (finish, apply, or
|
|
203
|
+
* `cancel` first).
|
|
204
|
+
*
|
|
205
|
+
* @examplePrompt Stack the program across all floors
|
|
206
|
+
* @examplePrompt Auto-stack the departments into the envelope on every storey
|
|
207
|
+
* @examplePrompt Pack the whole building's program into its envelope
|
|
208
|
+
*
|
|
209
|
+
* # Example
|
|
210
|
+
* ```ts
|
|
211
|
+
* const { success, skippedStoreys, error } = await snaptrude.program.layout.stack()
|
|
212
|
+
* if (!success) throw new Error(error)
|
|
213
|
+
* if (skippedStoreys.length)
|
|
214
|
+
* console.warn(`No envelope on storeys: ${skippedStoreys.join(", ")}`)
|
|
215
|
+
* ```
|
|
216
|
+
*/
|
|
217
|
+
abstract stack(): PluginApiReturn<PluginProgramLayoutStackResult>;
|
|
113
218
|
/**
|
|
114
219
|
* Get the state of the layout run.
|
|
115
220
|
*
|
|
@@ -122,6 +227,10 @@ export declare abstract class PluginProgramLayoutApi {
|
|
|
122
227
|
* | `"running"` | A run is in flight — keep polling |
|
|
123
228
|
* | `"active"` | The run finished and its layout is applied to the model |
|
|
124
229
|
* | `"inactive"` | A run finished without applying a layout (the solver failed or found no solution) |
|
|
230
|
+
* | `"pendingReview"` | An `arrange({ autoCommit: false })` run finished and its candidates await {@linkcode PluginProgramLayoutApi.applySolution} / {@linkcode PluginProgramLayoutApi.cancel} |
|
|
231
|
+
*
|
|
232
|
+
* While `status` is `"pendingReview"` the state also carries
|
|
233
|
+
* `totalSolutions` — the number of candidate layouts to pick from.
|
|
125
234
|
*
|
|
126
235
|
* @returns A {@linkcode PluginProgramLayoutStateResult} with the run
|
|
127
236
|
* `status`, or `null` when no run result is available (never ran or was
|
|
@@ -141,11 +250,13 @@ export declare abstract class PluginProgramLayoutApi {
|
|
|
141
250
|
/**
|
|
142
251
|
* Cancel the in-flight layout run.
|
|
143
252
|
*
|
|
144
|
-
* Aborts the backend job and discards any pending solution.
|
|
145
|
-
*
|
|
253
|
+
* Aborts the backend job and discards any pending solution. Also discards
|
|
254
|
+
* a finished run's **pending-review** solutions (after
|
|
255
|
+
* `arrange({ autoCommit: false })`) without applying one. A no-op (returns
|
|
256
|
+
* `false`) when nothing is running and nothing is pending.
|
|
146
257
|
*
|
|
147
|
-
* @returns `true` when a run was cancelled
|
|
148
|
-
*
|
|
258
|
+
* @returns `true` when a run was cancelled or pending solutions were
|
|
259
|
+
* discarded, `false` when there was nothing to cancel.
|
|
149
260
|
* @throws When plugin writes are disabled.
|
|
150
261
|
*
|
|
151
262
|
* @examplePrompt Cancel the arrange
|
|
@@ -170,11 +281,13 @@ export declare abstract class PluginProgramLayoutApi {
|
|
|
170
281
|
* | `spaceIds` | `string[] \| undefined` | Component ids of the Room masses to lay out |
|
|
171
282
|
* | `departmentIds` | `string[] \| undefined` | Component ids of the Department masses to lay out |
|
|
172
283
|
* | `envelopeId` | `string \| undefined` | The envelope to fit into — a mass component id or a buildable-envelope handle (`be_…`); omit to auto-detect the single envelope on the active storey |
|
|
284
|
+
* | `autoCommit` | `boolean \| undefined` | `arrange` only — `true` / omitted (default) auto-commits the first candidate solution; `false` holds the candidates for review via {@linkcode PluginProgramLayoutApi.applySolution}. Ignored by `pack` (it applies its single result directly) |
|
|
173
285
|
*/
|
|
174
286
|
export declare const PluginProgramLayoutRunArgs: z.ZodObject<{
|
|
175
287
|
spaceIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
176
288
|
departmentIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
177
289
|
envelopeId: z.ZodOptional<z.ZodString>;
|
|
290
|
+
autoCommit: z.ZodOptional<z.ZodBoolean>;
|
|
178
291
|
}, z.core.$strip>;
|
|
179
292
|
export type PluginProgramLayoutRunArgs = z.infer<typeof PluginProgramLayoutRunArgs>;
|
|
180
293
|
/**
|
|
@@ -201,11 +314,13 @@ export type PluginProgramLayoutRunResult = z.infer<typeof PluginProgramLayoutRun
|
|
|
201
314
|
* | `"running"` | A run is in flight — keep polling |
|
|
202
315
|
* | `"active"` | The run finished and its layout is applied to the model |
|
|
203
316
|
* | `"inactive"` | A run finished without applying a layout (the solver failed or found no solution) |
|
|
317
|
+
* | `"pendingReview"` | An `arrange({ autoCommit: false })` run finished and its candidate solutions await {@linkcode PluginProgramLayoutApi.applySolution} / {@linkcode PluginProgramLayoutApi.cancel} |
|
|
204
318
|
*/
|
|
205
319
|
export declare const PluginProgramLayoutJobStatus: z.ZodEnum<{
|
|
206
320
|
running: "running";
|
|
207
321
|
active: "active";
|
|
208
322
|
inactive: "inactive";
|
|
323
|
+
pendingReview: "pendingReview";
|
|
209
324
|
}>;
|
|
210
325
|
export type PluginProgramLayoutJobStatus = z.infer<typeof PluginProgramLayoutJobStatus>;
|
|
211
326
|
/**
|
|
@@ -213,14 +328,17 @@ export type PluginProgramLayoutJobStatus = z.infer<typeof PluginProgramLayoutJob
|
|
|
213
328
|
*
|
|
214
329
|
* | Property | Type | Description |
|
|
215
330
|
* |---|---|---|
|
|
216
|
-
* | `status` | {@linkcode PluginProgramLayoutJobStatus} | `"running"` \| `"active"` \| `"inactive"` |
|
|
331
|
+
* | `status` | {@linkcode PluginProgramLayoutJobStatus} | `"running"` \| `"active"` \| `"inactive"` \| `"pendingReview"` |
|
|
332
|
+
* | `totalSolutions` | `number \| undefined` | Number of candidate solutions awaiting review — present only while `status` is `"pendingReview"` |
|
|
217
333
|
*/
|
|
218
334
|
export declare const PluginProgramLayoutJobState: z.ZodObject<{
|
|
219
335
|
status: z.ZodEnum<{
|
|
220
336
|
running: "running";
|
|
221
337
|
active: "active";
|
|
222
338
|
inactive: "inactive";
|
|
339
|
+
pendingReview: "pendingReview";
|
|
223
340
|
}>;
|
|
341
|
+
totalSolutions: z.ZodOptional<z.ZodNumber>;
|
|
224
342
|
}, z.core.$strip>;
|
|
225
343
|
export type PluginProgramLayoutJobState = z.infer<typeof PluginProgramLayoutJobState>;
|
|
226
344
|
/**
|
|
@@ -232,7 +350,49 @@ export declare const PluginProgramLayoutStateResult: z.ZodNullable<z.ZodObject<{
|
|
|
232
350
|
running: "running";
|
|
233
351
|
active: "active";
|
|
234
352
|
inactive: "inactive";
|
|
353
|
+
pendingReview: "pendingReview";
|
|
235
354
|
}>;
|
|
355
|
+
totalSolutions: z.ZodOptional<z.ZodNumber>;
|
|
236
356
|
}, z.core.$strip>>;
|
|
237
357
|
export type PluginProgramLayoutStateResult = z.infer<typeof PluginProgramLayoutStateResult>;
|
|
358
|
+
/**
|
|
359
|
+
* Arguments for {@linkcode PluginProgramLayoutApi.applySolution}.
|
|
360
|
+
*
|
|
361
|
+
* | Property | Type | Description |
|
|
362
|
+
* |---|---|---|
|
|
363
|
+
* | `index` | `number` | 0-based index of the pending solution to apply (`0 ≤ index < totalSolutions`) |
|
|
364
|
+
*/
|
|
365
|
+
export declare const PluginProgramLayoutApplySolutionArgs: z.ZodObject<{
|
|
366
|
+
index: z.ZodNumber;
|
|
367
|
+
}, z.core.$strip>;
|
|
368
|
+
export type PluginProgramLayoutApplySolutionArgs = z.infer<typeof PluginProgramLayoutApplySolutionArgs>;
|
|
369
|
+
/**
|
|
370
|
+
* Result of {@linkcode PluginProgramLayoutApi.applySolution}.
|
|
371
|
+
*
|
|
372
|
+
* | Property | Type | Description |
|
|
373
|
+
* |---|---|---|
|
|
374
|
+
* | `success` | `boolean` | Whether the chosen solution was applied |
|
|
375
|
+
* | `error` | `string \| undefined` | Failure reason when `success` is `false` |
|
|
376
|
+
*/
|
|
377
|
+
export declare const PluginProgramLayoutApplyResult: z.ZodObject<{
|
|
378
|
+
success: z.ZodBoolean;
|
|
379
|
+
error: z.ZodOptional<z.ZodString>;
|
|
380
|
+
}, z.core.$strip>;
|
|
381
|
+
export type PluginProgramLayoutApplyResult = z.infer<typeof PluginProgramLayoutApplyResult>;
|
|
382
|
+
/**
|
|
383
|
+
* Result of {@linkcode PluginProgramLayoutApi.stack} — reports whether the
|
|
384
|
+
* cross-storey stack was applied and which storeys were skipped.
|
|
385
|
+
*
|
|
386
|
+
* | Property | Type | Description |
|
|
387
|
+
* |---|---|---|
|
|
388
|
+
* | `success` | `boolean` | Whether the stack was applied |
|
|
389
|
+
* | `skippedStoreys` | `number[]` | Storey values that had departments but no envelope, so nothing was packed there |
|
|
390
|
+
* | `error` | `string \| undefined` | Failure reason when `success` is `false` |
|
|
391
|
+
*/
|
|
392
|
+
export declare const PluginProgramLayoutStackResult: z.ZodObject<{
|
|
393
|
+
success: z.ZodBoolean;
|
|
394
|
+
skippedStoreys: z.ZodArray<z.ZodNumber>;
|
|
395
|
+
error: z.ZodOptional<z.ZodString>;
|
|
396
|
+
}, z.core.$strip>;
|
|
397
|
+
export type PluginProgramLayoutStackResult = z.infer<typeof PluginProgramLayoutStackResult>;
|
|
238
398
|
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/api/program/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/api/program/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,8BAAsB,sBAAsB;;IAG1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;aACa,OAAO,CACrB,OAAO,CAAC,EAAE,0BAA0B,GACnC,eAAe,CAAC,4BAA4B,CAAC;IAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;aACa,IAAI,CAClB,OAAO,CAAC,EAAE,0BAA0B,GACnC,eAAe,CAAC,4BAA4B,CAAC;IAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;aACa,aAAa,CAC3B,KAAK,EAAE,MAAM,GACZ,eAAe,CAAC,8BAA8B,CAAC;IAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;aACa,KAAK,IAAI,eAAe,CAAC,8BAA8B,CAAC;IAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;aACa,QAAQ,IAAI,eAAe,CAAC,8BAA8B,CAAC;IAE3E;;;;;;;;;;;;;;;;;;;;OAoBG;aACa,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC;CACnD;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0BAA0B;;;;;iBAKrC,CAAA;AACF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,0BAA0B,CAClC,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B;;;iBAGvC,CAAA;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAChD,OAAO,4BAA4B,CACpC,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B;;;;;EAKvC,CAAA;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAChD,OAAO,4BAA4B,CACpC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;iBAGtC,CAAA;AACF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,2BAA2B,CACnC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;kBACH,CAAA;AACxC,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAClD,OAAO,8BAA8B,CACtC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oCAAoC;;iBAE/C,CAAA;AACF,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,KAAK,CACxD,OAAO,oCAAoC,CAC5C,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B;;;iBAGzC,CAAA;AACF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAClD,OAAO,8BAA8B,CACtC,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,8BAA8B;;;;iBAIzC,CAAA;AACF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAClD,OAAO,8BAA8B,CACtC,CAAA"}
|
|
@@ -4,8 +4,9 @@ import { PluginApiReturn } from "../../types";
|
|
|
4
4
|
* Program site — read the planning context of the project's site/plot.
|
|
5
5
|
*
|
|
6
6
|
* The **site** is the set of plot/parcel footprints the program is planned
|
|
7
|
-
* against: their total area, per-parcel footprints (
|
|
8
|
-
*
|
|
7
|
+
* against: their total area, per-parcel footprints (world XZ plan coordinates
|
|
8
|
+
* in Snaptrude units — the same plan space as a space's `planPoints`), and —
|
|
9
|
+
* when the project is geo-located on terrain — their geographic
|
|
9
10
|
* (latitude/longitude) rings. This is the program-planning view of the site;
|
|
10
11
|
* zoning numbers (setbacks, FAR/FSI, height limits) live in the site-analysis
|
|
11
12
|
* sheet and are not read here.
|
|
@@ -59,7 +60,8 @@ export declare abstract class PluginProgramSiteApi {
|
|
|
59
60
|
*/
|
|
60
61
|
abstract getArea(): PluginApiReturn<PluginProgramSiteAreaResult>;
|
|
61
62
|
/**
|
|
62
|
-
* List the site parcels with their footprints (
|
|
63
|
+
* List the site parcels with their footprints (world XZ plan coordinates,
|
|
64
|
+
* Snaptrude units).
|
|
63
65
|
*
|
|
64
66
|
* @returns A {@linkcode PluginProgramSiteListPolygonsResult} with each parcel's
|
|
65
67
|
* id, area, label, and 2D footprint (XZ ground-plane points). Empty when the
|
|
@@ -82,7 +84,7 @@ export declare abstract class PluginProgramSiteApi {
|
|
|
82
84
|
*
|
|
83
85
|
* Only available when the project is geo-located on terrain; returns `[]` (no
|
|
84
86
|
* rings) otherwise. Use {@linkcode PluginProgramSiteApi.listPolygons} for the
|
|
85
|
-
*
|
|
87
|
+
* world-coordinate footprints that are always available.
|
|
86
88
|
*
|
|
87
89
|
* @returns A {@linkcode PluginProgramSiteListGeoPolygonsResult} with one ring
|
|
88
90
|
* of `{ lat, lng, alt }` points per parcel.
|
|
@@ -175,15 +177,64 @@ export declare abstract class PluginProgramSiteApi {
|
|
|
175
177
|
* ```
|
|
176
178
|
*/
|
|
177
179
|
abstract getNorthAngle(): PluginApiReturn<PluginProgramSiteNorthAngleResult>;
|
|
180
|
+
/**
|
|
181
|
+
* Get the IANA timezone of the project's geographic location.
|
|
182
|
+
*
|
|
183
|
+
* The timezone identifier (e.g. `"America/New_York"`, `"Asia/Kolkata"`)
|
|
184
|
+
* looked up from the same geo-location
|
|
185
|
+
* {@linkcode PluginProgramSiteApi.getLocation} returns. Returns `null` when
|
|
186
|
+
* the project is not geo-located on terrain.
|
|
187
|
+
*
|
|
188
|
+
* @returns A {@linkcode PluginProgramSiteTimezoneResult} — the IANA timezone
|
|
189
|
+
* id string, or `null` when the project has no geo-located site.
|
|
190
|
+
*
|
|
191
|
+
* @examplePrompt What timezone is this project in?
|
|
192
|
+
* @examplePrompt Get the site's IANA timezone
|
|
193
|
+
* @examplePrompt What's the local time zone at the project location?
|
|
194
|
+
* @examplePrompt Which timezone should I use for the sun study schedule?
|
|
195
|
+
*
|
|
196
|
+
* # Example
|
|
197
|
+
* ```ts
|
|
198
|
+
* const timezone = await snaptrude.program.site.getTimezone()
|
|
199
|
+
* if (timezone) console.log(`Project timezone: ${timezone}`)
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
abstract getTimezone(): PluginApiReturn<PluginProgramSiteTimezoneResult>;
|
|
203
|
+
/**
|
|
204
|
+
* Get the weather file resolved for the project site.
|
|
205
|
+
*
|
|
206
|
+
* A lightweight read of the EPW weather file the `analysis.*` sun and
|
|
207
|
+
* daylight studies compute against — its catalog id, station name, content
|
|
208
|
+
* checksum, and how it was selected. This is the same file (same
|
|
209
|
+
* `weatherFileId`) that {@linkcode PluginAnalysisWeatherApi.getSeries} reads
|
|
210
|
+
* rows from and that a daylight run echoes in its provenance. Returns `null`
|
|
211
|
+
* when the project has no geo-located site (no weather file to resolve).
|
|
212
|
+
*
|
|
213
|
+
* @returns A {@linkcode PluginProgramSiteWeatherResult} —
|
|
214
|
+
* `{ weatherFileId, station, checksum, selectionMethod }`, or `null` when
|
|
215
|
+
* the project has no geo-located site.
|
|
216
|
+
*
|
|
217
|
+
* @examplePrompt Which weather file is my project using?
|
|
218
|
+
* @examplePrompt What EPW station was resolved for this site?
|
|
219
|
+
* @examplePrompt Get the weather file id for the daylight analysis
|
|
220
|
+
*
|
|
221
|
+
* # Example
|
|
222
|
+
* ```ts
|
|
223
|
+
* const weather = await snaptrude.program.site.getWeather()
|
|
224
|
+
* if (weather) console.log(weather.station, weather.selectionMethod)
|
|
225
|
+
* ```
|
|
226
|
+
*/
|
|
227
|
+
abstract getWeather(): PluginApiReturn<PluginProgramSiteWeatherResult>;
|
|
178
228
|
}
|
|
179
229
|
/**
|
|
180
|
-
* A 2D ground-plane point of a site parcel footprint, in
|
|
181
|
-
* (
|
|
230
|
+
* A 2D ground-plane point of a site parcel footprint, in world XZ plan
|
|
231
|
+
* coordinates (Snaptrude units) — the same plan space as a space's
|
|
232
|
+
* `planPoints`, so site parcels overlay space footprints directly.
|
|
182
233
|
*
|
|
183
234
|
* | Property | Type | Description |
|
|
184
235
|
* |---|---|---|
|
|
185
|
-
* | `x` | `number` | X coordinate (
|
|
186
|
-
* | `z` | `number` | Z coordinate (
|
|
236
|
+
* | `x` | `number` | X coordinate (world, Snaptrude units) |
|
|
237
|
+
* | `z` | `number` | Z coordinate (world, Snaptrude units) |
|
|
187
238
|
*/
|
|
188
239
|
export declare const PluginSiteFootprintPoint: z.ZodObject<{
|
|
189
240
|
x: z.ZodNumber;
|
|
@@ -448,4 +499,50 @@ export type PluginProgramSiteLocationResult = z.infer<typeof PluginProgramSiteLo
|
|
|
448
499
|
*/
|
|
449
500
|
export declare const PluginProgramSiteNorthAngleResult: z.ZodNullable<z.ZodNumber>;
|
|
450
501
|
export type PluginProgramSiteNorthAngleResult = z.infer<typeof PluginProgramSiteNorthAngleResult>;
|
|
502
|
+
/**
|
|
503
|
+
* Result of {@linkcode PluginProgramSiteApi.getTimezone} — the IANA timezone
|
|
504
|
+
* id of the project's geo-location (e.g. `"Europe/London"`), or `null` when
|
|
505
|
+
* the project is not geo-located.
|
|
506
|
+
*/
|
|
507
|
+
export declare const PluginProgramSiteTimezoneResult: z.ZodNullable<z.ZodString>;
|
|
508
|
+
export type PluginProgramSiteTimezoneResult = z.infer<typeof PluginProgramSiteTimezoneResult>;
|
|
509
|
+
/**
|
|
510
|
+
* A summary of the weather file resolved for the project site. Matches the
|
|
511
|
+
* relevant fields of `analysis.weather`'s `PluginWeatherSourceMeta`;
|
|
512
|
+
* `selectionMethod` is one of `"nearest-station"`, `"user-upload"`, or
|
|
513
|
+
* `"project-override"`.
|
|
514
|
+
*
|
|
515
|
+
* | Property | Type | Description |
|
|
516
|
+
* |---|---|---|
|
|
517
|
+
* | `weatherFileId` | `string` | Catalog id (same key as `core.io.import.epw`) |
|
|
518
|
+
* | `station` | `string` | Station/file name |
|
|
519
|
+
* | `checksum` | `string` | sha256 of the EPW file |
|
|
520
|
+
* | `selectionMethod` | `"nearest-station" \| "user-upload" \| "project-override"` | How the file was matched |
|
|
521
|
+
*/
|
|
522
|
+
export declare const PluginProgramSiteWeather: z.ZodObject<{
|
|
523
|
+
weatherFileId: z.ZodString;
|
|
524
|
+
station: z.ZodString;
|
|
525
|
+
checksum: z.ZodString;
|
|
526
|
+
selectionMethod: z.ZodEnum<{
|
|
527
|
+
"nearest-station": "nearest-station";
|
|
528
|
+
"user-upload": "user-upload";
|
|
529
|
+
"project-override": "project-override";
|
|
530
|
+
}>;
|
|
531
|
+
}, z.core.$strip>;
|
|
532
|
+
export type PluginProgramSiteWeather = z.infer<typeof PluginProgramSiteWeather>;
|
|
533
|
+
/**
|
|
534
|
+
* Result of {@linkcode PluginProgramSiteApi.getWeather} — the resolved weather
|
|
535
|
+
* file summary, or `null` when the project has no geo-located site.
|
|
536
|
+
*/
|
|
537
|
+
export declare const PluginProgramSiteWeatherResult: z.ZodNullable<z.ZodObject<{
|
|
538
|
+
weatherFileId: z.ZodString;
|
|
539
|
+
station: z.ZodString;
|
|
540
|
+
checksum: z.ZodString;
|
|
541
|
+
selectionMethod: z.ZodEnum<{
|
|
542
|
+
"nearest-station": "nearest-station";
|
|
543
|
+
"user-upload": "user-upload";
|
|
544
|
+
"project-override": "project-override";
|
|
545
|
+
}>;
|
|
546
|
+
}, z.core.$strip>>;
|
|
547
|
+
export type PluginProgramSiteWeatherResult = z.infer<typeof PluginProgramSiteWeatherResult>;
|
|
451
548
|
//# sourceMappingURL=site.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/api/program/site.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C
|
|
1
|
+
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/api/program/site.ts"],"names":[],"mappings":"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"}
|