@snaptrude/plugin-core 1.0.1 → 1.0.2-plainpoint-20261026.2
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 +0 -6
- package/api-manifest.json +1581 -94
- package/dist/api/core/camera/index.d.ts +12 -4
- package/dist/api/core/camera/index.d.ts.map +1 -1
- package/dist/api/core/comment/index.d.ts +7 -3
- package/dist/api/core/comment/index.d.ts.map +1 -1
- package/dist/api/core/geom/create/index.d.ts +69 -21
- package/dist/api/core/geom/create/index.d.ts.map +1 -1
- package/dist/api/core/geom/query/circle.d.ts +31 -11
- package/dist/api/core/geom/query/circle.d.ts.map +1 -1
- package/dist/api/core/geom/query/contour.d.ts +19 -7
- package/dist/api/core/geom/query/contour.d.ts.map +1 -1
- package/dist/api/core/geom/query/curve.d.ts +72 -24
- package/dist/api/core/geom/query/curve.d.ts.map +1 -1
- package/dist/api/core/geom/query/profile.d.ts +19 -7
- package/dist/api/core/geom/query/profile.d.ts.map +1 -1
- package/dist/api/core/geom/update/contour.d.ts +36 -12
- package/dist/api/core/geom/update/contour.d.ts.map +1 -1
- package/dist/api/core/geom/update/curve.d.ts +13 -5
- package/dist/api/core/geom/update/curve.d.ts.map +1 -1
- package/dist/api/core/geom/update/profile.d.ts +36 -12
- package/dist/api/core/geom/update/profile.d.ts.map +1 -1
- package/dist/api/core/io/import/index.d.ts +7 -3
- package/dist/api/core/io/import/index.d.ts.map +1 -1
- package/dist/api/core/math/quat.d.ts +2 -2
- package/dist/api/core/math/quat.d.ts.map +1 -1
- package/dist/api/core/math/vec3.d.ts +15 -15
- package/dist/api/core/math/vec3.d.ts.map +1 -1
- package/dist/api/design/boolean/index.d.ts +20 -4
- package/dist/api/design/boolean/index.d.ts.map +1 -1
- package/dist/api/design/create/bulk-items.d.ts +20 -4
- package/dist/api/design/create/bulk-items.d.ts.map +1 -1
- package/dist/api/design/create/index.d.ts +67 -27
- package/dist/api/design/create/index.d.ts.map +1 -1
- package/dist/api/design/delete/index.d.ts +14 -7
- package/dist/api/design/delete/index.d.ts.map +1 -1
- package/dist/api/design/dimensions.d.ts +12 -4
- package/dist/api/design/dimensions.d.ts.map +1 -1
- package/dist/api/design/edit/index.d.ts +7 -3
- package/dist/api/design/edit/index.d.ts.map +1 -1
- package/dist/api/design/erase/index.d.ts +10 -2
- package/dist/api/design/erase/index.d.ts.map +1 -1
- package/dist/api/design/family.d.ts +5 -1
- package/dist/api/design/family.d.ts.map +1 -1
- package/dist/api/design/lock.d.ts +3 -0
- package/dist/api/design/lock.d.ts.map +1 -1
- package/dist/api/design/transform/index.d.ts +28 -8
- package/dist/api/design/transform/index.d.ts.map +1 -1
- package/dist/api/entity/space.d.ts +30 -6
- package/dist/api/entity/space.d.ts.map +1 -1
- package/dist/api/presentation/drawings.d.ts +1 -1
- package/dist/handles.d.ts +8 -0
- package/dist/handles.d.ts.map +1 -1
- package/dist/index.cjs +91 -79
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +90 -79
- package/dist/index.js.map +1 -1
- package/package.json +13 -13
- package/src/api/core/camera/index.ts +5 -5
- package/src/api/core/comment/index.ts +3 -3
- package/src/api/core/geom/create/index.ts +25 -25
- package/src/api/core/geom/query/circle.ts +11 -11
- package/src/api/core/geom/query/contour.ts +7 -6
- package/src/api/core/geom/query/curve.ts +25 -25
- package/src/api/core/geom/query/profile.ts +7 -6
- package/src/api/core/geom/update/contour.ts +12 -11
- package/src/api/core/geom/update/curve.ts +5 -5
- package/src/api/core/geom/update/profile.ts +12 -11
- package/src/api/core/io/import/index.ts +3 -2
- package/src/api/core/math/quat.ts +2 -2
- package/src/api/core/math/vec3.ts +16 -16
- package/src/api/design/boolean/index.ts +2 -2
- package/src/api/design/create/bulk-items.ts +3 -2
- package/src/api/design/create/index.ts +27 -26
- package/src/api/design/delete/index.ts +14 -7
- package/src/api/design/dimensions.ts +5 -4
- package/src/api/design/edit/index.ts +3 -3
- package/src/api/design/erase/index.ts +2 -2
- package/src/api/design/family.ts +2 -1
- package/src/api/design/lock.ts +6 -0
- package/src/api/design/transform/index.ts +15 -7
- package/src/api/entity/space.ts +5 -4
- package/src/handles.ts +11 -0
- package/test/handles.test.mjs +36 -0
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
ContourHandle,
|
|
5
5
|
ProfileHandle,
|
|
6
6
|
Vec3Handle,
|
|
7
|
+
Vec3Input,
|
|
7
8
|
Vec3Components,
|
|
8
9
|
} from "../../../../handles"
|
|
9
10
|
|
|
@@ -69,7 +70,7 @@ export abstract class PluginGeomUpdateContourApi {
|
|
|
69
70
|
*/
|
|
70
71
|
public abstract move(
|
|
71
72
|
contour: ContourHandle,
|
|
72
|
-
translation:
|
|
73
|
+
translation: Vec3Input,
|
|
73
74
|
): PluginApiReturn<ContourHandle>
|
|
74
75
|
|
|
75
76
|
/**
|
|
@@ -96,9 +97,9 @@ export abstract class PluginGeomUpdateContourApi {
|
|
|
96
97
|
*/
|
|
97
98
|
public abstract rotate(
|
|
98
99
|
contour: ContourHandle,
|
|
99
|
-
axis:
|
|
100
|
+
axis: Vec3Input,
|
|
100
101
|
angle: number,
|
|
101
|
-
pivot?:
|
|
102
|
+
pivot?: Vec3Input,
|
|
102
103
|
): PluginApiReturn<ContourHandle>
|
|
103
104
|
|
|
104
105
|
/**
|
|
@@ -124,7 +125,7 @@ export abstract class PluginGeomUpdateContourApi {
|
|
|
124
125
|
public abstract scale(
|
|
125
126
|
contour: ContourHandle,
|
|
126
127
|
factor: number | Vec3Components,
|
|
127
|
-
pivot?:
|
|
128
|
+
pivot?: Vec3Input,
|
|
128
129
|
): PluginApiReturn<ContourHandle>
|
|
129
130
|
|
|
130
131
|
/**
|
|
@@ -149,7 +150,7 @@ export abstract class PluginGeomUpdateContourApi {
|
|
|
149
150
|
*/
|
|
150
151
|
public abstract mirror(
|
|
151
152
|
contour: ContourHandle,
|
|
152
|
-
plane: { point:
|
|
153
|
+
plane: { point: Vec3Input; normal: Vec3Input },
|
|
153
154
|
): PluginApiReturn<ContourHandle>
|
|
154
155
|
|
|
155
156
|
/**
|
|
@@ -233,7 +234,7 @@ export type PluginGeomUpdateContourOffsetArgs = z.infer<typeof PluginGeomUpdateC
|
|
|
233
234
|
*/
|
|
234
235
|
export const PluginGeomUpdateContourMoveArgs = z.object({
|
|
235
236
|
contour: ContourHandle,
|
|
236
|
-
translation:
|
|
237
|
+
translation: Vec3Input,
|
|
237
238
|
})
|
|
238
239
|
|
|
239
240
|
export type PluginGeomUpdateContourMoveArgs = z.infer<typeof PluginGeomUpdateContourMoveArgs>
|
|
@@ -250,9 +251,9 @@ export type PluginGeomUpdateContourMoveArgs = z.infer<typeof PluginGeomUpdateCon
|
|
|
250
251
|
*/
|
|
251
252
|
export const PluginGeomUpdateContourRotateArgs = z.object({
|
|
252
253
|
contour: ContourHandle,
|
|
253
|
-
axis:
|
|
254
|
+
axis: Vec3Input,
|
|
254
255
|
angle: z.number(),
|
|
255
|
-
pivot:
|
|
256
|
+
pivot: Vec3Input.optional(),
|
|
256
257
|
})
|
|
257
258
|
|
|
258
259
|
export type PluginGeomUpdateContourRotateArgs = z.infer<typeof PluginGeomUpdateContourRotateArgs>
|
|
@@ -269,7 +270,7 @@ export type PluginGeomUpdateContourRotateArgs = z.infer<typeof PluginGeomUpdateC
|
|
|
269
270
|
export const PluginGeomUpdateContourScaleArgs = z.object({
|
|
270
271
|
contour: ContourHandle,
|
|
271
272
|
factor: z.union([z.number(), Vec3Components]),
|
|
272
|
-
pivot:
|
|
273
|
+
pivot: Vec3Input.optional(),
|
|
273
274
|
})
|
|
274
275
|
|
|
275
276
|
export type PluginGeomUpdateContourScaleArgs = z.infer<typeof PluginGeomUpdateContourScaleArgs>
|
|
@@ -285,8 +286,8 @@ export type PluginGeomUpdateContourScaleArgs = z.infer<typeof PluginGeomUpdateCo
|
|
|
285
286
|
export const PluginGeomUpdateContourMirrorArgs = z.object({
|
|
286
287
|
contour: ContourHandle,
|
|
287
288
|
plane: z.object({
|
|
288
|
-
point:
|
|
289
|
-
normal:
|
|
289
|
+
point: Vec3Input,
|
|
290
|
+
normal: Vec3Input,
|
|
290
291
|
}),
|
|
291
292
|
})
|
|
292
293
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as z from "zod"
|
|
2
2
|
import { PluginApiReturn } from "../../../../types"
|
|
3
|
-
import { Vec3Handle, CurveHandle } from "../../../../handles"
|
|
3
|
+
import { Vec3Handle, Vec3Input, CurveHandle } from "../../../../handles"
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Curve editing — produce NEW curves from an existing one (all-handle model, §11).
|
|
@@ -61,7 +61,7 @@ export abstract class PluginGeomUpdateCurveApi {
|
|
|
61
61
|
*/
|
|
62
62
|
public abstract split(
|
|
63
63
|
curve: CurveHandle,
|
|
64
|
-
point:
|
|
64
|
+
point: Vec3Input,
|
|
65
65
|
): PluginApiReturn<CurveHandle[]>
|
|
66
66
|
|
|
67
67
|
/**
|
|
@@ -110,7 +110,7 @@ export abstract class PluginGeomUpdateCurveApi {
|
|
|
110
110
|
*/
|
|
111
111
|
public abstract offset(
|
|
112
112
|
curve: CurveHandle,
|
|
113
|
-
vector:
|
|
113
|
+
vector: Vec3Input,
|
|
114
114
|
): PluginApiReturn<CurveHandle>
|
|
115
115
|
|
|
116
116
|
/**
|
|
@@ -158,7 +158,7 @@ export type PluginGeomUpdateCurveExtendArgs = z.infer<typeof PluginGeomUpdateCur
|
|
|
158
158
|
*/
|
|
159
159
|
export const PluginGeomUpdateCurveSplitArgs = z.object({
|
|
160
160
|
curve: CurveHandle,
|
|
161
|
-
point:
|
|
161
|
+
point: Vec3Input,
|
|
162
162
|
})
|
|
163
163
|
|
|
164
164
|
export type PluginGeomUpdateCurveSplitArgs = z.infer<typeof PluginGeomUpdateCurveSplitArgs>
|
|
@@ -190,7 +190,7 @@ export type PluginGeomUpdateCurveTrimArgs = z.infer<typeof PluginGeomUpdateCurve
|
|
|
190
190
|
*/
|
|
191
191
|
export const PluginGeomUpdateCurveOffsetArgs = z.object({
|
|
192
192
|
curve: CurveHandle,
|
|
193
|
-
vector:
|
|
193
|
+
vector: Vec3Input,
|
|
194
194
|
})
|
|
195
195
|
|
|
196
196
|
export type PluginGeomUpdateCurveOffsetArgs = z.infer<typeof PluginGeomUpdateCurveOffsetArgs>
|
|
@@ -3,6 +3,7 @@ import { PluginApiReturn } from "../../../../types"
|
|
|
3
3
|
import {
|
|
4
4
|
ProfileHandle,
|
|
5
5
|
Vec3Handle,
|
|
6
|
+
Vec3Input,
|
|
6
7
|
CurveHandle,
|
|
7
8
|
Vec3Components,
|
|
8
9
|
} from "../../../../handles"
|
|
@@ -66,7 +67,7 @@ export abstract class PluginGeomUpdateProfileApi {
|
|
|
66
67
|
*/
|
|
67
68
|
public abstract move(
|
|
68
69
|
profile: ProfileHandle,
|
|
69
|
-
translation:
|
|
70
|
+
translation: Vec3Input,
|
|
70
71
|
): PluginApiReturn<ProfileHandle>
|
|
71
72
|
|
|
72
73
|
/**
|
|
@@ -91,9 +92,9 @@ export abstract class PluginGeomUpdateProfileApi {
|
|
|
91
92
|
*/
|
|
92
93
|
public abstract rotate(
|
|
93
94
|
profile: ProfileHandle,
|
|
94
|
-
axis:
|
|
95
|
+
axis: Vec3Input,
|
|
95
96
|
angle: number,
|
|
96
|
-
pivot?:
|
|
97
|
+
pivot?: Vec3Input,
|
|
97
98
|
): PluginApiReturn<ProfileHandle>
|
|
98
99
|
|
|
99
100
|
/**
|
|
@@ -118,7 +119,7 @@ export abstract class PluginGeomUpdateProfileApi {
|
|
|
118
119
|
public abstract scale(
|
|
119
120
|
profile: ProfileHandle,
|
|
120
121
|
factor: number | Vec3Components,
|
|
121
|
-
pivot?:
|
|
122
|
+
pivot?: Vec3Input,
|
|
122
123
|
): PluginApiReturn<ProfileHandle>
|
|
123
124
|
|
|
124
125
|
/**
|
|
@@ -142,7 +143,7 @@ export abstract class PluginGeomUpdateProfileApi {
|
|
|
142
143
|
*/
|
|
143
144
|
public abstract mirror(
|
|
144
145
|
profile: ProfileHandle,
|
|
145
|
-
plane: { point:
|
|
146
|
+
plane: { point: Vec3Input; normal: Vec3Input },
|
|
146
147
|
): PluginApiReturn<ProfileHandle>
|
|
147
148
|
|
|
148
149
|
/**
|
|
@@ -261,7 +262,7 @@ export type PluginGeomUpdateProfileOffsetArgs = z.infer<typeof PluginGeomUpdateP
|
|
|
261
262
|
*/
|
|
262
263
|
export const PluginGeomUpdateProfileMoveArgs = z.object({
|
|
263
264
|
profile: ProfileHandle,
|
|
264
|
-
translation:
|
|
265
|
+
translation: Vec3Input,
|
|
265
266
|
})
|
|
266
267
|
|
|
267
268
|
export type PluginGeomUpdateProfileMoveArgs = z.infer<typeof PluginGeomUpdateProfileMoveArgs>
|
|
@@ -278,9 +279,9 @@ export type PluginGeomUpdateProfileMoveArgs = z.infer<typeof PluginGeomUpdatePro
|
|
|
278
279
|
*/
|
|
279
280
|
export const PluginGeomUpdateProfileRotateArgs = z.object({
|
|
280
281
|
profile: ProfileHandle,
|
|
281
|
-
axis:
|
|
282
|
+
axis: Vec3Input,
|
|
282
283
|
angle: z.number(),
|
|
283
|
-
pivot:
|
|
284
|
+
pivot: Vec3Input.optional(),
|
|
284
285
|
})
|
|
285
286
|
|
|
286
287
|
export type PluginGeomUpdateProfileRotateArgs = z.infer<typeof PluginGeomUpdateProfileRotateArgs>
|
|
@@ -297,7 +298,7 @@ export type PluginGeomUpdateProfileRotateArgs = z.infer<typeof PluginGeomUpdateP
|
|
|
297
298
|
export const PluginGeomUpdateProfileScaleArgs = z.object({
|
|
298
299
|
profile: ProfileHandle,
|
|
299
300
|
factor: z.union([z.number(), Vec3Components]),
|
|
300
|
-
pivot:
|
|
301
|
+
pivot: Vec3Input.optional(),
|
|
301
302
|
})
|
|
302
303
|
|
|
303
304
|
export type PluginGeomUpdateProfileScaleArgs = z.infer<typeof PluginGeomUpdateProfileScaleArgs>
|
|
@@ -313,8 +314,8 @@ export type PluginGeomUpdateProfileScaleArgs = z.infer<typeof PluginGeomUpdatePr
|
|
|
313
314
|
export const PluginGeomUpdateProfileMirrorArgs = z.object({
|
|
314
315
|
profile: ProfileHandle,
|
|
315
316
|
plane: z.object({
|
|
316
|
-
point:
|
|
317
|
-
normal:
|
|
317
|
+
point: Vec3Input,
|
|
318
|
+
normal: Vec3Input,
|
|
318
319
|
}),
|
|
319
320
|
})
|
|
320
321
|
|
|
@@ -2,6 +2,7 @@ import * as z from "zod"
|
|
|
2
2
|
import { PluginApiReturn } from "../../../../types"
|
|
3
3
|
import {
|
|
4
4
|
Vec3Handle,
|
|
5
|
+
Vec3Input,
|
|
5
6
|
UnderlayHandle,
|
|
6
7
|
TerrainHandle,
|
|
7
8
|
ImportJobHandle,
|
|
@@ -266,7 +267,7 @@ export abstract class PluginCoreIoImportApi {
|
|
|
266
267
|
source: string,
|
|
267
268
|
storey?: number,
|
|
268
269
|
format?: ModelFormat,
|
|
269
|
-
position?:
|
|
270
|
+
position?: Vec3Input,
|
|
270
271
|
label?: string,
|
|
271
272
|
): PluginApiReturn<ComponentHandle>
|
|
272
273
|
|
|
@@ -445,7 +446,7 @@ export const PluginImportModelArgs = z.object({
|
|
|
445
446
|
source: ImportSource,
|
|
446
447
|
storey: z.number().int().optional(),
|
|
447
448
|
format: ModelFormat.optional(),
|
|
448
|
-
position:
|
|
449
|
+
position: Vec3Input.optional(),
|
|
449
450
|
label: z.string().optional(),
|
|
450
451
|
})
|
|
451
452
|
export type PluginImportModelArgs = z.infer<typeof PluginImportModelArgs>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PluginApiReturn } from "../../../types"
|
|
2
|
-
import { Vec3Handle, QuatHandle, QuatComponents } from "../../../handles"
|
|
2
|
+
import { Vec3Handle, Vec3Input, QuatHandle, QuatComponents } from "../../../handles"
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Quaternion operations (all-handle model, §11).
|
|
@@ -39,7 +39,7 @@ export abstract class PluginQuatApi {
|
|
|
39
39
|
* const quarterTurn = await snaptrude.core.math.quat.fromAxisAngle(axis, Math.PI / 2)
|
|
40
40
|
* ```
|
|
41
41
|
*/
|
|
42
|
-
abstract fromAxisAngle(axis:
|
|
42
|
+
abstract fromAxisAngle(axis: Vec3Input, angle: number): PluginApiReturn<QuatHandle>
|
|
43
43
|
/**
|
|
44
44
|
* Build a quaternion from Euler angles in radians.
|
|
45
45
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PluginApiReturn } from "../../../types"
|
|
2
|
-
import { Vec3Handle, Vec3Components } from "../../../handles"
|
|
2
|
+
import { Vec3Handle, Vec3Input, Vec3Components } from "../../../handles"
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* 3D vector operations (all-handle model, §11).
|
|
@@ -31,7 +31,7 @@ export abstract class PluginVec3Api {
|
|
|
31
31
|
* const sum = await snaptrude.core.math.vec3.add(a, b)
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
|
-
abstract add(a:
|
|
34
|
+
abstract add(a: Vec3Input, b: Vec3Input): PluginApiReturn<Vec3Handle>
|
|
35
35
|
/**
|
|
36
36
|
* Subtract vector `b` from `a` component-wise (`a - b`).
|
|
37
37
|
*
|
|
@@ -42,7 +42,7 @@ export abstract class PluginVec3Api {
|
|
|
42
42
|
* const diff = await snaptrude.core.math.vec3.subtract(a, b)
|
|
43
43
|
* ```
|
|
44
44
|
*/
|
|
45
|
-
abstract subtract(a:
|
|
45
|
+
abstract subtract(a: Vec3Input, b: Vec3Input): PluginApiReturn<Vec3Handle>
|
|
46
46
|
/**
|
|
47
47
|
* Scale `v` by a scalar.
|
|
48
48
|
*
|
|
@@ -52,7 +52,7 @@ export abstract class PluginVec3Api {
|
|
|
52
52
|
* const doubled = await snaptrude.core.math.vec3.scale(v, 2)
|
|
53
53
|
* ```
|
|
54
54
|
*/
|
|
55
|
-
abstract scale(v:
|
|
55
|
+
abstract scale(v: Vec3Input, scalar: number): PluginApiReturn<Vec3Handle>
|
|
56
56
|
/**
|
|
57
57
|
* Compute the dot product of two vectors.
|
|
58
58
|
*
|
|
@@ -63,7 +63,7 @@ export abstract class PluginVec3Api {
|
|
|
63
63
|
* const d = await snaptrude.core.math.vec3.dot(a, b) // 0.5
|
|
64
64
|
* ```
|
|
65
65
|
*/
|
|
66
|
-
abstract dot(a:
|
|
66
|
+
abstract dot(a: Vec3Input, b: Vec3Input): PluginApiReturn<number>
|
|
67
67
|
/**
|
|
68
68
|
* Compute the cross product `a × b` — the vector perpendicular to both.
|
|
69
69
|
*
|
|
@@ -74,7 +74,7 @@ export abstract class PluginVec3Api {
|
|
|
74
74
|
* const perpendicular = await snaptrude.core.math.vec3.cross(a, b)
|
|
75
75
|
* ```
|
|
76
76
|
*/
|
|
77
|
-
abstract cross(a:
|
|
77
|
+
abstract cross(a: Vec3Input, b: Vec3Input): PluginApiReturn<Vec3Handle>
|
|
78
78
|
/**
|
|
79
79
|
* Compute the Euclidean length (magnitude) of a vector.
|
|
80
80
|
*
|
|
@@ -84,7 +84,7 @@ export abstract class PluginVec3Api {
|
|
|
84
84
|
* const len = await snaptrude.core.math.vec3.length(v) // 5
|
|
85
85
|
* ```
|
|
86
86
|
*/
|
|
87
|
-
abstract length(v:
|
|
87
|
+
abstract length(v: Vec3Input): PluginApiReturn<number>
|
|
88
88
|
/**
|
|
89
89
|
* Compute the squared Euclidean length of a vector (avoids the sqrt).
|
|
90
90
|
*
|
|
@@ -94,7 +94,7 @@ export abstract class PluginVec3Api {
|
|
|
94
94
|
* const sq = await snaptrude.core.math.vec3.lengthSquared(v) // 25
|
|
95
95
|
* ```
|
|
96
96
|
*/
|
|
97
|
-
abstract lengthSquared(v:
|
|
97
|
+
abstract lengthSquared(v: Vec3Input): PluginApiReturn<number>
|
|
98
98
|
/**
|
|
99
99
|
* Return the unit vector in the same direction (the zero vector if length is 0).
|
|
100
100
|
*
|
|
@@ -104,7 +104,7 @@ export abstract class PluginVec3Api {
|
|
|
104
104
|
* const unit = await snaptrude.core.math.vec3.normalize(v) // (0, 0, 1)
|
|
105
105
|
* ```
|
|
106
106
|
*/
|
|
107
|
-
abstract normalize(v:
|
|
107
|
+
abstract normalize(v: Vec3Input): PluginApiReturn<Vec3Handle>
|
|
108
108
|
/**
|
|
109
109
|
* Measure the straight-line (Euclidean) distance between two points.
|
|
110
110
|
*
|
|
@@ -118,7 +118,7 @@ export abstract class PluginVec3Api {
|
|
|
118
118
|
* const dist = await snaptrude.core.math.vec3.distance(a, b) // 5
|
|
119
119
|
* ```
|
|
120
120
|
*/
|
|
121
|
-
abstract distance(a:
|
|
121
|
+
abstract distance(a: Vec3Input, b: Vec3Input): PluginApiReturn<number>
|
|
122
122
|
/**
|
|
123
123
|
* Linearly interpolate between two vectors: `a + (b - a) * t`.
|
|
124
124
|
*
|
|
@@ -129,7 +129,7 @@ export abstract class PluginVec3Api {
|
|
|
129
129
|
* const midpoint = await snaptrude.core.math.vec3.lerp(a, b, 0.5)
|
|
130
130
|
* ```
|
|
131
131
|
*/
|
|
132
|
-
abstract lerp(a:
|
|
132
|
+
abstract lerp(a: Vec3Input, b: Vec3Input, t: number): PluginApiReturn<Vec3Handle>
|
|
133
133
|
/**
|
|
134
134
|
* Negate a vector, reversing its direction.
|
|
135
135
|
*
|
|
@@ -139,7 +139,7 @@ export abstract class PluginVec3Api {
|
|
|
139
139
|
* const reversed = await snaptrude.core.math.vec3.negate(v) // (-1, 2, -3)
|
|
140
140
|
* ```
|
|
141
141
|
*/
|
|
142
|
-
abstract negate(v:
|
|
142
|
+
abstract negate(v: Vec3Input): PluginApiReturn<Vec3Handle>
|
|
143
143
|
/**
|
|
144
144
|
* Test whether two vectors have exactly equal components.
|
|
145
145
|
*
|
|
@@ -150,7 +150,7 @@ export abstract class PluginVec3Api {
|
|
|
150
150
|
* const same = await snaptrude.core.math.vec3.equals(a, b) // true
|
|
151
151
|
* ```
|
|
152
152
|
*/
|
|
153
|
-
abstract equals(a:
|
|
153
|
+
abstract equals(a: Vec3Input, b: Vec3Input): PluginApiReturn<boolean>
|
|
154
154
|
/**
|
|
155
155
|
* Test whether two vectors are equal within a tolerance `epsilon` (default `1e-6`).
|
|
156
156
|
*
|
|
@@ -162,8 +162,8 @@ export abstract class PluginVec3Api {
|
|
|
162
162
|
* ```
|
|
163
163
|
*/
|
|
164
164
|
abstract equalsApprox(
|
|
165
|
-
a:
|
|
166
|
-
b:
|
|
165
|
+
a: Vec3Input,
|
|
166
|
+
b: Vec3Input,
|
|
167
167
|
epsilon?: number,
|
|
168
168
|
): PluginApiReturn<boolean>
|
|
169
169
|
/**
|
|
@@ -175,5 +175,5 @@ export abstract class PluginVec3Api {
|
|
|
175
175
|
* const { x, y, z } = await snaptrude.core.math.vec3.components(v)
|
|
176
176
|
* ```
|
|
177
177
|
*/
|
|
178
|
-
abstract components(v:
|
|
178
|
+
abstract components(v: Vec3Input): PluginApiReturn<Vec3Components>
|
|
179
179
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as z from "zod"
|
|
2
2
|
import { PluginApiReturn } from "../../../types"
|
|
3
|
-
import { ComponentHandle, Vec3Handle } from "../../../handles"
|
|
3
|
+
import { ComponentHandle, Vec3Handle, Vec3Input } from "../../../handles"
|
|
4
4
|
import { BooleanOutcome } from "../shared"
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -132,7 +132,7 @@ export abstract class PluginDesignBooleanApi {
|
|
|
132
132
|
* | `offset` | {@linkcode Vec3Handle} | Translation added to the created result mass(es) (default: none) |
|
|
133
133
|
*/
|
|
134
134
|
export const BooleanOptions = z.object({
|
|
135
|
-
offset:
|
|
135
|
+
offset: Vec3Input.optional(),
|
|
136
136
|
})
|
|
137
137
|
export type BooleanOptions = z.infer<typeof BooleanOptions>
|
|
138
138
|
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
ContourHandle,
|
|
5
5
|
ProfileHandle,
|
|
6
6
|
Vec3Handle,
|
|
7
|
+
Vec3Input,
|
|
7
8
|
} from "../../../handles"
|
|
8
9
|
import { PluginOpeningBaseOptions } from "./opening-fields"
|
|
9
10
|
import { PluginWallType } from "../types"
|
|
@@ -135,7 +136,7 @@ export type PluginCreateWallRunItems = z.infer<typeof PluginCreateWallRunItems>
|
|
|
135
136
|
export const PluginCreateFloorItem = z.object({
|
|
136
137
|
contour: ContourHandle,
|
|
137
138
|
thickness: z.number(),
|
|
138
|
-
position:
|
|
139
|
+
position: Vec3Input.optional(),
|
|
139
140
|
})
|
|
140
141
|
export type PluginCreateFloorItem = z.infer<typeof PluginCreateFloorItem>
|
|
141
142
|
|
|
@@ -245,7 +246,7 @@ export type PluginCreateWindowItems = z.infer<typeof PluginCreateWindowItems>
|
|
|
245
246
|
*/
|
|
246
247
|
export const PluginCreateFurnitureItem = z.object({
|
|
247
248
|
catalogId: z.string().min(1),
|
|
248
|
-
position:
|
|
249
|
+
position: Vec3Input,
|
|
249
250
|
label: z.string().optional(),
|
|
250
251
|
angleInDegrees: z.number().optional(),
|
|
251
252
|
})
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
CurveHandle,
|
|
9
9
|
ProfileHandle,
|
|
10
10
|
Vec3Handle,
|
|
11
|
+
Vec3Input,
|
|
11
12
|
} from "../../../handles"
|
|
12
13
|
import { PluginGridStyleOptions } from "./grids"
|
|
13
14
|
import { PluginGraphicsLineStyleId } from "../../presentation/graphics"
|
|
@@ -130,7 +131,7 @@ export abstract class PluginDesignCreateApi {
|
|
|
130
131
|
contour: ContourHandle,
|
|
131
132
|
height: number,
|
|
132
133
|
label?: string,
|
|
133
|
-
position?:
|
|
134
|
+
position?: Vec3Input,
|
|
134
135
|
spaceType?: PluginSpaceType,
|
|
135
136
|
massType?: PluginMassType,
|
|
136
137
|
departmentId?: PluginDepartmentId,
|
|
@@ -165,7 +166,7 @@ export abstract class PluginDesignCreateApi {
|
|
|
165
166
|
contour: ContourHandle,
|
|
166
167
|
height: number,
|
|
167
168
|
label?: string,
|
|
168
|
-
position?:
|
|
169
|
+
position?: Vec3Input,
|
|
169
170
|
massType?: PluginMassType,
|
|
170
171
|
): PluginApiReturn<ComponentHandle>
|
|
171
172
|
|
|
@@ -288,7 +289,7 @@ export abstract class PluginDesignCreateApi {
|
|
|
288
289
|
*/
|
|
289
290
|
public abstract floor(
|
|
290
291
|
...args:
|
|
291
|
-
| [contour: ContourHandle, thickness: number, position?:
|
|
292
|
+
| [contour: ContourHandle, thickness: number, position?: Vec3Input]
|
|
292
293
|
| [contour: ContourHandle, options: PluginFamilyFloorOptions]
|
|
293
294
|
): PluginApiReturn<ComponentHandle[]>
|
|
294
295
|
|
|
@@ -422,10 +423,10 @@ export abstract class PluginDesignCreateApi {
|
|
|
422
423
|
public abstract column(
|
|
423
424
|
...args:
|
|
424
425
|
| [
|
|
425
|
-
position:
|
|
426
|
+
position: Vec3Input,
|
|
426
427
|
crossSection: ContourHandle,
|
|
427
428
|
height: number,
|
|
428
|
-
directionUp?:
|
|
429
|
+
directionUp?: Vec3Input,
|
|
429
430
|
]
|
|
430
431
|
| [axis: LineHandle, options: PluginFamilyPlacement]
|
|
431
432
|
): PluginApiReturn<ComponentHandle>
|
|
@@ -472,7 +473,7 @@ export abstract class PluginDesignCreateApi {
|
|
|
472
473
|
*/
|
|
473
474
|
public abstract beam(
|
|
474
475
|
...args:
|
|
475
|
-
| [section: ContourHandle, length: number, direction?:
|
|
476
|
+
| [section: ContourHandle, length: number, direction?: Vec3Input]
|
|
476
477
|
| [axis: LineHandle, options: PluginFamilyPlacement]
|
|
477
478
|
): PluginApiReturn<ComponentHandle>
|
|
478
479
|
|
|
@@ -649,7 +650,7 @@ export abstract class PluginDesignCreateApi {
|
|
|
649
650
|
*/
|
|
650
651
|
public abstract staircase(
|
|
651
652
|
preset: PluginStaircasePreset,
|
|
652
|
-
position:
|
|
653
|
+
position: Vec3Input,
|
|
653
654
|
label?: string,
|
|
654
655
|
structureId?: string,
|
|
655
656
|
level?: string,
|
|
@@ -740,7 +741,7 @@ export abstract class PluginDesignCreateApi {
|
|
|
740
741
|
spacingY: number,
|
|
741
742
|
options?: {
|
|
742
743
|
angle?: number
|
|
743
|
-
center?:
|
|
744
|
+
center?: Vec3Input
|
|
744
745
|
} & PluginGridStyleOptions,
|
|
745
746
|
): PluginApiReturn<ComponentHandle>
|
|
746
747
|
|
|
@@ -895,7 +896,7 @@ export abstract class PluginDesignCreateApi {
|
|
|
895
896
|
*/
|
|
896
897
|
public abstract furniture(
|
|
897
898
|
catalogId: string,
|
|
898
|
-
position:
|
|
899
|
+
position: Vec3Input,
|
|
899
900
|
options?: { label?: string; createNewSourceMesh?: boolean },
|
|
900
901
|
angleInDegrees?: number,
|
|
901
902
|
): PluginApiReturn<ComponentHandle>
|
|
@@ -1008,14 +1009,14 @@ export abstract class PluginDesignCreateApi {
|
|
|
1008
1009
|
public abstract door(
|
|
1009
1010
|
familyId: string,
|
|
1010
1011
|
hostWall: ComponentHandle,
|
|
1011
|
-
position:
|
|
1012
|
+
position: Vec3Input,
|
|
1012
1013
|
options?: {
|
|
1013
1014
|
label?: string
|
|
1014
|
-
hinge?:
|
|
1015
|
+
hinge?: Vec3Input
|
|
1015
1016
|
version?: number
|
|
1016
1017
|
values?: Record<string, number | string>
|
|
1017
1018
|
},
|
|
1018
|
-
facing?:
|
|
1019
|
+
facing?: Vec3Input,
|
|
1019
1020
|
): PluginApiReturn<ComponentHandle>
|
|
1020
1021
|
|
|
1021
1022
|
/**
|
|
@@ -1112,14 +1113,14 @@ export abstract class PluginDesignCreateApi {
|
|
|
1112
1113
|
public abstract window(
|
|
1113
1114
|
familyId: string,
|
|
1114
1115
|
hostWall: ComponentHandle,
|
|
1115
|
-
position:
|
|
1116
|
+
position: Vec3Input,
|
|
1116
1117
|
options?: {
|
|
1117
1118
|
label?: string
|
|
1118
|
-
hinge?:
|
|
1119
|
+
hinge?: Vec3Input
|
|
1119
1120
|
version?: number
|
|
1120
1121
|
values?: Record<string, number | string>
|
|
1121
1122
|
},
|
|
1122
|
-
facing?:
|
|
1123
|
+
facing?: Vec3Input,
|
|
1123
1124
|
): PluginApiReturn<ComponentHandle>
|
|
1124
1125
|
|
|
1125
1126
|
/**
|
|
@@ -1446,7 +1447,7 @@ export abstract class PluginDesignCreateApi {
|
|
|
1446
1447
|
*/
|
|
1447
1448
|
public abstract copy(
|
|
1448
1449
|
components: ComponentHandle[],
|
|
1449
|
-
displacement:
|
|
1450
|
+
displacement: Vec3Input,
|
|
1450
1451
|
options?: { count?: number; mode?: PluginCopyMode },
|
|
1451
1452
|
): PluginApiReturn<ComponentHandle[]>
|
|
1452
1453
|
|
|
@@ -1669,7 +1670,7 @@ export const PluginDesignCreateSpaceArgs = z.object({
|
|
|
1669
1670
|
contour: ContourHandle,
|
|
1670
1671
|
height: z.number(),
|
|
1671
1672
|
label: z.string().optional(),
|
|
1672
|
-
position:
|
|
1673
|
+
position: Vec3Input.optional(),
|
|
1673
1674
|
spaceType: PluginSpaceType.optional(),
|
|
1674
1675
|
massType: PluginMassType.optional(),
|
|
1675
1676
|
departmentId: PluginDepartmentId.optional(),
|
|
@@ -1700,7 +1701,7 @@ export const PluginDesignCreateMassArgs = z.object({
|
|
|
1700
1701
|
contour: ContourHandle,
|
|
1701
1702
|
height: z.number(),
|
|
1702
1703
|
label: z.string().optional(),
|
|
1703
|
-
position:
|
|
1704
|
+
position: Vec3Input.optional(),
|
|
1704
1705
|
massType: PluginMassType.optional(),
|
|
1705
1706
|
})
|
|
1706
1707
|
export type PluginDesignCreateMassArgs = z.infer<
|
|
@@ -1767,7 +1768,7 @@ export type PluginDesignCreateSlabArgs = z.infer<
|
|
|
1767
1768
|
export const PluginDesignCreateFloorArgs = z.object({
|
|
1768
1769
|
contour: ContourHandle,
|
|
1769
1770
|
thickness: z.number(),
|
|
1770
|
-
position:
|
|
1771
|
+
position: Vec3Input.optional(),
|
|
1771
1772
|
})
|
|
1772
1773
|
export type PluginDesignCreateFloorArgs = z.infer<
|
|
1773
1774
|
typeof PluginDesignCreateFloorArgs
|
|
@@ -1830,10 +1831,10 @@ export type PluginDesignCreateCeilingArgs = z.infer<
|
|
|
1830
1831
|
* | `directionUp` | {@linkcode Vec3Handle}? | Up axis (default world up) |
|
|
1831
1832
|
*/
|
|
1832
1833
|
export const PluginDesignCreateColumnArgs = z.object({
|
|
1833
|
-
position:
|
|
1834
|
+
position: Vec3Input,
|
|
1834
1835
|
crossSection: ContourHandle,
|
|
1835
1836
|
height: z.number(),
|
|
1836
|
-
directionUp:
|
|
1837
|
+
directionUp: Vec3Input.optional(),
|
|
1837
1838
|
})
|
|
1838
1839
|
export type PluginDesignCreateColumnArgs = z.infer<
|
|
1839
1840
|
typeof PluginDesignCreateColumnArgs
|
|
@@ -1855,7 +1856,7 @@ export type PluginDesignCreateColumnArgs = z.infer<
|
|
|
1855
1856
|
export const PluginDesignCreateBeamArgs = z.object({
|
|
1856
1857
|
section: ContourHandle,
|
|
1857
1858
|
length: z.number(),
|
|
1858
|
-
direction:
|
|
1859
|
+
direction: Vec3Input.optional(),
|
|
1859
1860
|
})
|
|
1860
1861
|
export type PluginDesignCreateBeamArgs = z.infer<
|
|
1861
1862
|
typeof PluginDesignCreateBeamArgs
|
|
@@ -1910,7 +1911,7 @@ export type PluginDesignCreateWallsArgs = z.infer<
|
|
|
1910
1911
|
*/
|
|
1911
1912
|
export const PluginDesignCreateStaircaseArgs = z.object({
|
|
1912
1913
|
preset: PluginStaircasePreset,
|
|
1913
|
-
position:
|
|
1914
|
+
position: Vec3Input,
|
|
1914
1915
|
label: z.string().optional(),
|
|
1915
1916
|
structureId: z.string().optional(),
|
|
1916
1917
|
level: z.string().optional(),
|
|
@@ -1937,7 +1938,7 @@ export type PluginDesignCreateStaircaseArgs = z.infer<
|
|
|
1937
1938
|
*/
|
|
1938
1939
|
export const PluginDesignCreateFurnitureArgs = z.object({
|
|
1939
1940
|
catalogId: z.string().min(1),
|
|
1940
|
-
position:
|
|
1941
|
+
position: Vec3Input,
|
|
1941
1942
|
label: z.string().optional(),
|
|
1942
1943
|
createNewSourceMesh: z.boolean().optional(),
|
|
1943
1944
|
angleInDegrees: z.number().optional(),
|
|
@@ -2195,7 +2196,7 @@ export type PluginCopyMode = z.infer<typeof PluginCopyMode>
|
|
|
2195
2196
|
*/
|
|
2196
2197
|
export const PluginDesignCreateCopyArgs = z.object({
|
|
2197
2198
|
components: z.array(ComponentHandle).min(1),
|
|
2198
|
-
displacement:
|
|
2199
|
+
displacement: Vec3Input,
|
|
2199
2200
|
count: z.number().int().positive().optional(),
|
|
2200
2201
|
mode: PluginCopyMode.optional(),
|
|
2201
2202
|
})
|
|
@@ -2228,7 +2229,7 @@ export const PluginCreateSpaceItem = z.object({
|
|
|
2228
2229
|
contour: ContourHandle,
|
|
2229
2230
|
height: z.number(),
|
|
2230
2231
|
label: z.string().optional(),
|
|
2231
|
-
position:
|
|
2232
|
+
position: Vec3Input.optional(),
|
|
2232
2233
|
spaceType: PluginSpaceType.optional(),
|
|
2233
2234
|
massType: PluginMassType.optional(),
|
|
2234
2235
|
departmentId: PluginDepartmentId.optional(),
|
|
@@ -8,7 +8,7 @@ import { PluginDesignChangeResult } from "../lock"
|
|
|
8
8
|
*
|
|
9
9
|
* | Property | Type | Description |
|
|
10
10
|
* |---|---|---|
|
|
11
|
-
* | `components` | {@linkcode ComponentHandle}`[]` | Entities to delete.
|
|
11
|
+
* | `components` | {@linkcode ComponentHandle}`[]` | Entities to delete. Handles that no longer resolve are skipped and returned as `missing`; the call rejects only when none resolve. |
|
|
12
12
|
*
|
|
13
13
|
* `.min(1)` is deliberately stricter than the shipped `PluginDesignLockArgs`
|
|
14
14
|
* (which allows an empty array) — an empty delete is a caller error, not a no-op.
|
|
@@ -43,12 +43,19 @@ export abstract class PluginDesignDeleteApi {
|
|
|
43
43
|
* entry, exactly as the editor's Delete key does — see `design.dimensions`. They are
|
|
44
44
|
* NOT listed in `affected`, which reports component handles only.
|
|
45
45
|
*
|
|
46
|
-
* @param components - Entities to delete.
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
46
|
+
* @param components - Entities to delete. A handle that no longer resolves (already
|
|
47
|
+
* removed by an earlier edit — a door deleted with its wall, a wall replaced by an
|
|
48
|
+
* opening's re-cut) is skipped, not fatal.
|
|
49
|
+
* @returns `{ affected, cascaded?, missing?, rejected? }`: the entities you asked to delete
|
|
50
|
+
* (echoed host-side — the engine returns no ids); `cascaded`, the derived walls/floors/slabs
|
|
51
|
+
* the parametric graph removed with a deleted space; `missing`, handles that no longer
|
|
52
|
+
* resolved and were skipped; `rejected`, handles the engine accepted but left standing
|
|
53
|
+
* (delete them again, one at a time, or report them). Deleted handles are **stale**
|
|
54
|
+
* afterwards: re-resolving one throws `HANDLE_STALE`.
|
|
55
|
+
* @throws `HANDLE_INVALID` when NONE of the supplied handles resolve (nothing is deleted);
|
|
56
|
+
* hosts before Oct 2026 reject the whole call when any handle is gone. `OPERATION_FAILED`
|
|
57
|
+
* when the parametric engine rejects the deletion — the batch is rolled back.
|
|
58
|
+
* `HANDLE_STALE` for a handle the caller held that has since been retired.
|
|
52
59
|
*
|
|
53
60
|
* @examplePrompt Delete the selected objects
|
|
54
61
|
* @examplePrompt Remove these walls from the model
|