Compare commits

..

12 Commits

Author SHA1 Message Date
f297e0827e Comments and rename vars 2024-06-17 15:36:58 -05:00
70023a31ef Neaten up the code 2024-06-17 15:36:58 -05:00
fb0def6797 KCL test server starts a connection pool 2024-06-17 15:36:58 -05:00
793e3cfa95 Update test snapshots 2024-06-17 15:36:58 -05:00
7f25c4ebed Track origin of WebSocket read errors 2024-06-17 15:36:58 -05:00
e66204398f Interactive timer 2024-06-17 15:36:57 -05:00
255dbc70da Try fixing CI again 2024-06-17 15:36:57 -05:00
6e93375f26 Fix CI 2024-06-17 15:36:57 -05:00
28b30127cb Lints 2024-06-17 15:36:57 -05:00
8064ac8b31 Start debugging why the WebSocket is getting closed 2024-06-17 15:36:57 -05:00
c3040aa053 Fix wasm builds 2024-06-17 15:36:57 -05:00
c12b5b67ee Test server works for one request at a time.
TODO: Concurrency control
2024-06-17 15:36:53 -05:00
235 changed files with 13876 additions and 9090 deletions

1
.envrc
View File

@ -1 +0,0 @@
use flake .

View File

@ -1,40 +0,0 @@
on:
push:
branches:
- main
paths:
- '**/Cargo.toml'
- '**/Cargo.lock'
- '**/rust-toolchain.toml'
- '**.rs'
- .github/workflows/cargo-check.yml
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
name: cargo check
jobs:
cargocheck:
name: cargo check
runs-on: ubuntu-latest
strategy:
matrix:
dir: ['src/wasm-lib']
steps:
- uses: actions/checkout@v4
- name: Install latest rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Rust Cache
uses: Swatinem/rust-cache@v2.6.1
- name: Run check
run: |
cd "${{ matrix.dir }}"
# We specifically want to test the disable-println feature
# Since it is not enabled by default, we need to specify it
# This is used in kcl-lsp
cargo check --all --features disable-println --features pyo3

View File

@ -9,12 +9,6 @@ on:
- '**.rs' - '**.rs'
- .github/workflows/cargo-clippy.yml - .github/workflows/cargo-clippy.yml
pull_request: pull_request:
paths:
- '**/Cargo.toml'
- '**/Cargo.lock'
- '**/rust-toolchain.toml'
- '**.rs'
- .github/workflows/cargo-clippy.yml
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true cancel-in-progress: true

View File

@ -59,11 +59,21 @@ jobs:
- uses: taiki-e/install-action@nextest - uses: taiki-e/install-action@nextest
- name: Rust Cache - name: Rust Cache
uses: Swatinem/rust-cache@v2.6.1 uses: Swatinem/rust-cache@v2.6.1
- name: cargo test - name: Compile tests
run: |-
cd "${{ matrix.dir }}"
cargo nextest archive --archive-file tests.tar.zst --workspace --profile ci
- name: Start test KCL server
run: |-
cd "${{ matrix.dir }}"
cargo build --quiet --bin kcl-test-server --workspace && ./target/debug/kcl-test-server &
env:
KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}}
- name: Run tests
shell: bash shell: bash
run: |- run: |-
cd "${{ matrix.dir }}" cd "${{ matrix.dir }}"
cargo llvm-cov nextest --all --lcov --output-path lcov.info --test-threads=1 --no-fail-fast -P ci 2>&1 | tee /tmp/github-actions.log cargo llvm-cov nextest --lcov --output-path lcov.info --test-threads=1 --no-fail-fast --profile ci --archive-file tests.tar.zst 2>&1 | tee /tmp/github-actions.log
env: env:
KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}} KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}}
RUST_MIN_STACK: 10485760000 RUST_MIN_STACK: 10485760000

View File

@ -57,7 +57,7 @@ jobs:
- name: Download Wasm Cache - name: Download Wasm Cache
id: download-wasm id: download-wasm
if: needs.check-rust-changes.outputs.rust-changed == 'false' if: needs.check-rust-changes.outputs.rust-changed == 'false'
uses: dawidd6/action-download-artifact@v6 uses: dawidd6/action-download-artifact@v5
continue-on-error: true continue-on-error: true
with: with:
github_token: ${{secrets.GITHUB_TOKEN}} github_token: ${{secrets.GITHUB_TOKEN}}
@ -133,7 +133,7 @@ jobs:
- uses: actions/upload-artifact@v3 - uses: actions/upload-artifact@v3
if: always() if: always()
with: with:
name: playwright-report-ubuntu name: playwright-report
path: playwright-report/ path: playwright-report/
retention-days: 30 retention-days: 30
@ -162,7 +162,7 @@ jobs:
- name: Download Wasm Cache - name: Download Wasm Cache
id: download-wasm id: download-wasm
if: needs.check-rust-changes.outputs.rust-changed == 'false' if: needs.check-rust-changes.outputs.rust-changed == 'false'
uses: dawidd6/action-download-artifact@v6 uses: dawidd6/action-download-artifact@v5
continue-on-error: true continue-on-error: true
with: with:
github_token: ${{secrets.GITHUB_TOKEN}} github_token: ${{secrets.GITHUB_TOKEN}}
@ -204,6 +204,6 @@ jobs:
- uses: actions/upload-artifact@v3 - uses: actions/upload-artifact@v3
if: always() if: always()
with: with:
name: playwright-report-macos name: playwright-report
path: playwright-report/ path: playwright-report/
retention-days: 30 retention-days: 30

1
.gitignore vendored
View File

@ -17,7 +17,6 @@
.env.development.local .env.development.local
.env.test.local .env.test.local
.env.production.local .env.production.local
.direnv
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*

View File

@ -319,7 +319,7 @@ PS: for the debug panel, the following JSON is useful for snapping the camera
``` ```
yarn install yarn install
yarn build:wasm-dev yarn build:wasm
cp src/wasm-lib/pkg/wasm_lib_bg.wasm public cp src/wasm-lib/pkg/wasm_lib_bg.wasm public
yarn vite build --mode development yarn vite build --mode development
yarn tauri build --debug -b yarn tauri build --debug -b

View File

@ -36,6 +36,8 @@ const extrusion = extrude(5, sketch001)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -71,6 +73,8 @@ const extrusion = extrude(5, sketch001)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -97,6 +101,10 @@ const extrusion = extrude(5, sketch001)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -171,6 +179,24 @@ const extrusion = extrude(5, sketch001)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -37,6 +37,8 @@ const extrusion = extrude(5, sketch001)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -72,6 +74,8 @@ const extrusion = extrude(5, sketch001)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -98,6 +102,10 @@ const extrusion = extrude(5, sketch001)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -172,6 +180,24 @@ const extrusion = extrude(5, sketch001)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -43,6 +43,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -78,6 +80,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -104,6 +108,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -178,6 +186,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -187,6 +213,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -222,6 +250,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -248,6 +278,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -322,6 +356,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -42,6 +42,8 @@ const extrusion = extrude(10, sketch001)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -77,6 +79,8 @@ const extrusion = extrude(10, sketch001)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -103,6 +107,10 @@ const extrusion = extrude(10, sketch001)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -177,6 +185,24 @@ const extrusion = extrude(10, sketch001)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -186,6 +212,8 @@ const extrusion = extrude(10, sketch001)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -221,6 +249,8 @@ const extrusion = extrude(10, sketch001)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -247,6 +277,10 @@ const extrusion = extrude(10, sketch001)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -321,6 +355,24 @@ const extrusion = extrude(10, sketch001)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -44,6 +44,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -79,6 +81,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -105,6 +109,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -179,6 +187,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -188,6 +214,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -223,6 +251,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -249,6 +279,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -323,6 +357,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -48,6 +48,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -83,6 +85,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -109,6 +113,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -183,6 +191,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -192,6 +218,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -227,6 +255,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -253,6 +283,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -327,6 +361,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -41,6 +41,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -76,6 +78,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -102,6 +106,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -176,6 +184,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -185,6 +211,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -220,6 +248,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -246,6 +276,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -320,6 +354,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -41,6 +41,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -76,6 +78,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -102,6 +106,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -176,6 +184,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -185,6 +211,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -220,6 +248,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -246,6 +276,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -320,6 +354,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -52,6 +52,8 @@ const exampleSketch = startSketchOn('XZ')
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -87,6 +89,8 @@ const exampleSketch = startSketchOn('XZ')
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -113,6 +117,10 @@ const exampleSketch = startSketchOn('XZ')
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -187,6 +195,24 @@ const exampleSketch = startSketchOn('XZ')
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -196,6 +222,8 @@ const exampleSketch = startSketchOn('XZ')
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -231,6 +259,8 @@ const exampleSketch = startSketchOn('XZ')
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -257,6 +287,10 @@ const exampleSketch = startSketchOn('XZ')
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -331,6 +365,24 @@ const exampleSketch = startSketchOn('XZ')
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -47,6 +47,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -82,6 +84,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -108,6 +112,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -182,6 +190,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -191,6 +217,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -226,6 +254,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -252,6 +282,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -326,6 +360,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -18,7 +18,7 @@ chamfer(data: ChamferData, extrude_group: ExtrudeGroup) -> ExtrudeGroup
const width = 20 const width = 20
const length = 10 const length = 10
const thickness = 1 const thickness = 1
const chamferLength = 2 const chamferRadius = 2
const mountingPlateSketch = startSketchOn("XY") const mountingPlateSketch = startSketchOn("XY")
|> startProfileAt([-width / 2, -length / 2], %) |> startProfileAt([-width / 2, -length / 2], %)
@ -29,7 +29,7 @@ const mountingPlateSketch = startSketchOn("XY")
const mountingPlate = extrude(thickness, mountingPlateSketch) const mountingPlate = extrude(thickness, mountingPlateSketch)
|> chamfer({ |> chamfer({
length: chamferLength, radius: chamferRadius,
tags: [ tags: [
getNextAdjacentEdge('edge1', %), getNextAdjacentEdge('edge1', %),
getNextAdjacentEdge('edge2', %), getNextAdjacentEdge('edge2', %),
@ -46,8 +46,8 @@ const mountingPlate = extrude(thickness, mountingPlateSketch)
* `data`: `ChamferData` - Data for chamfers. (REQUIRED) * `data`: `ChamferData` - Data for chamfers. (REQUIRED)
```js ```js
{ {
// The length of the chamfer. // The radius of the chamfer.
length: number, radius: number,
// The tags of the paths you want to chamfer. // The tags of the paths you want to chamfer.
tags: [uuid | tags: [uuid |
string], string],
@ -62,6 +62,10 @@ string],
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -137,6 +141,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -148,6 +156,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",
@ -184,6 +196,10 @@ string],
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -259,6 +275,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -270,6 +290,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",

View File

@ -76,6 +76,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -103,6 +105,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -138,6 +142,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -164,6 +170,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -238,6 +248,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
@ -246,6 +274,8 @@ const example = extrude(5, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -281,6 +311,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -307,6 +339,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -381,6 +417,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -42,6 +42,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -77,6 +79,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -103,6 +107,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -177,6 +185,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -186,6 +212,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -221,6 +249,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -247,6 +277,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -321,6 +355,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -67,6 +67,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group_set`: `SketchGroupSet` - A sketch group or a group of sketch groups. (REQUIRED) * `sketch_group_set`: `SketchGroupSet` - A sketch group or a group of sketch groups. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -102,6 +104,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -128,6 +132,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -203,6 +211,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} | } |
{ {
type: "sketchGroups", type: "sketchGroups",
@ -220,6 +246,10 @@ const example = extrude(10, exampleSketch)
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -296,6 +326,10 @@ const example = extrude(10, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -307,6 +341,10 @@ const example = extrude(10, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",

View File

@ -62,6 +62,10 @@ string],
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -137,6 +141,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -148,6 +156,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",
@ -184,6 +196,10 @@ string],
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -259,6 +275,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -270,6 +290,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",

View File

@ -49,6 +49,10 @@ const revolution = startSketchOn(box, "revolveAxis")
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -124,6 +128,10 @@ const revolution = startSketchOn(box, "revolveAxis")
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -135,6 +143,10 @@ const revolution = startSketchOn(box, "revolveAxis")
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",

View File

@ -47,6 +47,10 @@ const example = extrude(5, exampleSketch)
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -122,6 +126,10 @@ const example = extrude(5, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -133,6 +141,10 @@ const example = extrude(5, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",

View File

@ -45,6 +45,10 @@ const example = extrude(5, exampleSketch)
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -120,6 +124,10 @@ const example = extrude(5, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -131,6 +139,10 @@ const example = extrude(5, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",

View File

@ -47,6 +47,10 @@ const example = extrude(5, exampleSketch)
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -122,6 +126,10 @@ const example = extrude(5, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -133,6 +141,10 @@ const example = extrude(5, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",

View File

@ -52,6 +52,10 @@ const part001 = startSketchOn('XY')
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -127,6 +131,10 @@ const part001 = startSketchOn('XY')
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -138,6 +146,10 @@ const part001 = startSketchOn('XY')
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",
@ -174,6 +186,10 @@ const part001 = startSketchOn('XY')
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -249,6 +265,10 @@ const part001 = startSketchOn('XY')
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -260,6 +280,10 @@ const part001 = startSketchOn('XY')
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",

View File

@ -53,6 +53,8 @@ const example = extrude(1, exampleSketch)
* `hole_sketch_group`: `SketchGroupSet` - A sketch group or a group of sketch groups. (REQUIRED) * `hole_sketch_group`: `SketchGroupSet` - A sketch group or a group of sketch groups. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -88,6 +90,8 @@ const example = extrude(1, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -114,6 +118,10 @@ const example = extrude(1, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -189,6 +197,24 @@ const example = extrude(1, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} | } |
{ {
type: "sketchGroups", type: "sketchGroups",
@ -197,6 +223,8 @@ const example = extrude(1, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -232,6 +260,8 @@ const example = extrude(1, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -258,6 +288,10 @@ const example = extrude(1, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -332,6 +366,24 @@ const example = extrude(1, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
@ -340,6 +392,8 @@ const example = extrude(1, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -375,6 +429,8 @@ const example = extrude(1, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -401,6 +457,10 @@ const example = extrude(1, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -475,6 +535,24 @@ const example = extrude(1, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -33,6 +33,8 @@ const example = extrude(5, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -68,6 +70,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -94,6 +98,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -168,6 +176,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -33,6 +33,8 @@ const example = extrude(5, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -68,6 +70,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -94,6 +98,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -168,6 +176,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -46,6 +46,8 @@ const example = extrude(5, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -81,6 +83,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -107,6 +111,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -181,6 +189,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -190,6 +216,8 @@ const example = extrude(5, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -225,6 +253,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -251,6 +281,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -325,6 +359,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -33,6 +33,8 @@ const example = extrude(5, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -68,6 +70,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -94,6 +98,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -168,6 +176,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -177,6 +203,8 @@ const example = extrude(5, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -212,6 +240,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -238,6 +268,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -312,6 +346,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -9,7 +9,7 @@ A circular pattern on a 2D sketch.
```js ```js
patternCircular2d(data: CircularPattern2dData, sketch_group_set: SketchGroupSet) -> [SketchGroup] patternCircular2d(data: CircularPattern2dData, sketch_group: SketchGroup) -> [SketchGroup]
``` ```
### Examples ### Examples
@ -48,9 +48,11 @@ const example = extrude(1, exampleSketch)
rotateDuplicates: string, rotateDuplicates: string,
} }
``` ```
* `sketch_group_set`: `SketchGroupSet` - A sketch group or a group of sketch groups. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -86,6 +88,8 @@ const example = extrude(1, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -112,6 +116,10 @@ const example = extrude(1, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -121,7 +129,6 @@ const example = extrude(1, exampleSketch)
// The to point. // The to point.
to: [number, number], to: [number, number],
}, },
type: "sketchGroup",
// The paths in the sketch group. // The paths in the sketch group.
value: [{ value: [{
// The from point. // The from point.
@ -187,9 +194,24 @@ const example = extrude(1, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
} | // The x-axis of the sketch group base plane in the 3D space
{ xAxis: {
type: "sketchGroups", x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -9,7 +9,7 @@ A circular pattern on a 3D model.
```js ```js
patternCircular3d(data: CircularPattern3dData, extrude_group_set: ExtrudeGroupSet) -> [ExtrudeGroup] patternCircular3d(data: CircularPattern3dData, extrude_group: ExtrudeGroup) -> [ExtrudeGroup]
``` ```
### Examples ### Examples
@ -47,7 +47,7 @@ const example = extrude(-5, exampleSketch)
rotateDuplicates: string, rotateDuplicates: string,
} }
``` ```
* `extrude_group_set`: `ExtrudeGroupSet` - A extrude group or a group of extrude groups. (REQUIRED) * `extrude_group`: `ExtrudeGroup` - An extrude group is a collection of extrude surfaces. (REQUIRED)
```js ```js
{ {
// The id of the extrusion end cap // The id of the extrusion end cap
@ -56,6 +56,10 @@ const example = extrude(-5, exampleSketch)
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -123,7 +127,6 @@ const example = extrude(-5, exampleSketch)
}], }],
// The id of the extrusion start cap // The id of the extrusion start cap
startCapId: uuid, startCapId: uuid,
type: "extrudeGroup",
// The extrude surfaces. // The extrude surfaces.
value: [{ value: [{
// The face id for the extrude plane. // The face id for the extrude plane.
@ -132,6 +135,10 @@ const example = extrude(-5, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -143,6 +150,10 @@ const example = extrude(-5, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",
@ -165,9 +176,6 @@ const example = extrude(-5, exampleSketch)
y: number, y: number,
z: number, z: number,
}, },
} |
{
type: "extrudeGroups",
} }
``` ```

View File

@ -44,6 +44,8 @@ const example = extrude(1, exampleSketch)
* `sketch_group_set`: `SketchGroupSet` - A sketch group or a group of sketch groups. (REQUIRED) * `sketch_group_set`: `SketchGroupSet` - A sketch group or a group of sketch groups. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -79,6 +81,8 @@ const example = extrude(1, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -105,6 +109,10 @@ const example = extrude(1, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -180,6 +188,24 @@ const example = extrude(1, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} | } |
{ {
type: "sketchGroups", type: "sketchGroups",

View File

@ -9,7 +9,7 @@ A linear pattern on a 3D model.
```js ```js
patternLinear3d(data: LinearPattern3dData, extrude_group_set: ExtrudeGroupSet) -> [ExtrudeGroup] patternLinear3d(data: LinearPattern3dData, extrude_group: ExtrudeGroup) -> [ExtrudeGroup]
``` ```
### Examples ### Examples
@ -45,7 +45,7 @@ const example = extrude(1, exampleSketch)
repetitions: number, repetitions: number,
} }
``` ```
* `extrude_group_set`: `ExtrudeGroupSet` - A extrude group or a group of extrude groups. (REQUIRED) * `extrude_group`: `ExtrudeGroup` - An extrude group is a collection of extrude surfaces. (REQUIRED)
```js ```js
{ {
// The id of the extrusion end cap // The id of the extrusion end cap
@ -54,6 +54,10 @@ const example = extrude(1, exampleSketch)
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -121,7 +125,6 @@ const example = extrude(1, exampleSketch)
}], }],
// The id of the extrusion start cap // The id of the extrusion start cap
startCapId: uuid, startCapId: uuid,
type: "extrudeGroup",
// The extrude surfaces. // The extrude surfaces.
value: [{ value: [{
// The face id for the extrude plane. // The face id for the extrude plane.
@ -130,6 +133,10 @@ const example = extrude(1, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -141,6 +148,10 @@ const example = extrude(1, exampleSketch)
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",
@ -163,9 +174,6 @@ const example = extrude(1, exampleSketch)
y: number, y: number,
z: number, z: number,
}, },
} |
{
type: "extrudeGroups",
} }
``` ```

View File

@ -34,6 +34,8 @@ const sketch001 = startSketchOn('XY')
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -69,6 +71,8 @@ const sketch001 = startSketchOn('XY')
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -95,6 +99,10 @@ const sketch001 = startSketchOn('XY')
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -169,6 +177,24 @@ const sketch001 = startSketchOn('XY')
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -29,6 +29,8 @@ const sketch001 = startSketchOn('XY')
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -64,6 +66,8 @@ const sketch001 = startSketchOn('XY')
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -90,6 +94,10 @@ const sketch001 = startSketchOn('XY')
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -164,6 +172,24 @@ const sketch001 = startSketchOn('XY')
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -28,6 +28,8 @@ const sketch001 = startSketchOn('XY')
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -63,6 +65,8 @@ const sketch001 = startSketchOn('XY')
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -89,6 +93,10 @@ const sketch001 = startSketchOn('XY')
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -163,6 +171,24 @@ const sketch001 = startSketchOn('XY')
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -162,6 +162,8 @@ string,
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -197,6 +199,8 @@ string,
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -223,6 +227,10 @@ string,
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -297,6 +305,24 @@ string,
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
@ -311,6 +337,10 @@ string,
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -386,6 +416,10 @@ string,
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -397,6 +431,10 @@ string,
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",

View File

@ -36,6 +36,8 @@ const example = extrude(4, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -71,6 +73,8 @@ const example = extrude(4, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -97,6 +101,10 @@ const example = extrude(4, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -171,6 +179,24 @@ const example = extrude(4, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -34,6 +34,8 @@ const example = extrude(5, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -69,6 +71,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -95,6 +99,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -169,6 +177,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -35,6 +35,8 @@ const example = extrude(5, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -70,6 +72,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -96,6 +100,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -170,6 +178,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -36,6 +36,8 @@ const example = extrude(5, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -71,6 +73,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -97,6 +101,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -171,6 +179,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -50,6 +50,10 @@ string],
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -125,6 +129,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -136,6 +144,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",
@ -172,6 +184,10 @@ string],
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -247,6 +263,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -258,6 +278,10 @@ string],
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",

View File

@ -90,6 +90,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -124,6 +126,8 @@ const example = extrude(5, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -159,6 +163,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -185,6 +191,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -259,6 +269,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -59,6 +59,8 @@ const example = extrude(5, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -94,6 +96,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -120,6 +124,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -194,6 +202,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -167,6 +167,10 @@ const a1 = startSketchOn({
height: number, height: number,
// The id of the extrude group. // The id of the extrude group.
id: uuid, id: uuid,
// The position of the extrude group.
position: [number, number, number],
// The rotation of the extrude group.
rotation: [number, number, number, number],
// The sketch group paths. // The sketch group paths.
sketchGroupValues: [{ sketchGroupValues: [{
// The from point. // The from point.
@ -242,6 +246,10 @@ const a1 = startSketchOn({
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudePlane", type: "extrudePlane",
@ -253,6 +261,10 @@ const a1 = startSketchOn({
id: uuid, id: uuid,
// The name. // The name.
name: string, name: string,
// The position.
position: [number, number, number],
// The rotation.
rotation: [number, number, number, number],
// The source range. // The source range.
sourceRange: [number, number], sourceRange: [number, number],
type: "extrudeArc", type: "extrudeArc",
@ -319,6 +331,8 @@ string
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.

File diff suppressed because it is too large Load Diff

View File

@ -42,6 +42,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -77,6 +79,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -103,6 +107,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -177,6 +185,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -186,6 +212,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -221,6 +249,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -247,6 +277,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -321,6 +355,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -33,6 +33,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -68,6 +70,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -94,6 +98,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -168,6 +176,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -177,6 +203,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -212,6 +240,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -238,6 +268,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -312,6 +346,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -36,6 +36,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -71,6 +73,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -97,6 +101,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -171,6 +179,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -180,6 +206,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -215,6 +243,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -241,6 +271,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -315,6 +349,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -36,6 +36,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -71,6 +73,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -97,6 +101,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -171,6 +179,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -180,6 +206,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -215,6 +243,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -241,6 +271,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -315,6 +349,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -34,6 +34,8 @@ const example = extrude(10, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -69,6 +71,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -95,6 +99,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -169,6 +177,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -178,6 +204,8 @@ const example = extrude(10, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -213,6 +241,8 @@ const example = extrude(10, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -239,6 +269,10 @@ const example = extrude(10, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -313,6 +347,24 @@ const example = extrude(10, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

View File

@ -32,6 +32,8 @@ const example = extrude(5, exampleSketch)
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED) * `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -67,6 +69,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -93,6 +97,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -167,6 +175,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```
* `tag`: `String` (OPTIONAL) * `tag`: `String` (OPTIONAL)
@ -176,6 +202,8 @@ const example = extrude(5, exampleSketch)
`SketchGroup` - A sketch group is a collection of paths. `SketchGroup` - A sketch group is a collection of paths.
```js ```js
{ {
// The plane id or face id of the sketch group.
entityId: uuid,
// The id of the sketch group. // The id of the sketch group.
id: uuid, id: uuid,
// What the sketch is on (can be a plane or a face). // What the sketch is on (can be a plane or a face).
@ -211,6 +239,8 @@ const example = extrude(5, exampleSketch)
}, },
} | } |
{ {
// the face id the sketch is on
faceId: uuid,
// The id of the face. // The id of the face.
id: uuid, id: uuid,
// The original sketch group id of the object we are sketching on. // The original sketch group id of the object we are sketching on.
@ -237,6 +267,10 @@ const example = extrude(5, exampleSketch)
z: number, z: number,
}, },
}, },
// The position of the sketch group.
position: [number, number, number],
// The rotation of the sketch group base plane.
rotation: [number, number, number, number],
// The starting path. // The starting path.
start: { start: {
// The from point. // The from point.
@ -311,6 +345,24 @@ const example = extrude(5, exampleSketch)
to: [number, number], to: [number, number],
type: "Base", type: "Base",
}], }],
// The x-axis of the sketch group base plane in the 3D space
xAxis: {
x: number,
y: number,
z: number,
},
// The y-axis of the sketch group base plane in the 3D space
yAxis: {
x: number,
y: number,
z: number,
},
// The z-axis of the sketch group base plane in the 3D space
zAxis: {
x: number,
y: number,
z: number,
},
} }
``` ```

File diff suppressed because it is too large Load Diff

View File

@ -405,16 +405,17 @@ test('Draft segments should look right', async ({ page, context }) => {
// select a plane // select a plane
await page.mouse.click(700, 200) await page.mouse.click(700, 200)
let code = `const sketch001 = startSketchOn('XZ')` await expect(page.locator('.cm-content')).toHaveText(
await expect(page.locator('.cm-content')).toHaveText(code) `const sketch001 = startSketchOn('XZ')`
)
await page.waitForTimeout(700) // TODO detect animation ending, or disable animation await page.waitForTimeout(300) // TODO detect animation ending, or disable animation
const startXPx = 600 const startXPx = 600
await page.mouse.click(startXPx + PUR * 10, 500 - PUR * 10) await page.mouse.click(startXPx + PUR * 10, 500 - PUR * 10)
code += ` await expect(page.locator('.cm-content'))
|> startProfileAt([7.19, -9.7], %)` .toHaveText(`const sketch001 = startSketchOn('XZ')
await expect(page.locator('.cm-content')).toHaveText(code) |> startProfileAt([9.06, -12.22], %)`)
await page.waitForTimeout(100) await page.waitForTimeout(100)
await u.closeDebugPanel() await u.closeDebugPanel()
@ -426,9 +427,10 @@ test('Draft segments should look right', async ({ page, context }) => {
await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 10) await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 10)
await page.waitForTimeout(100) await page.waitForTimeout(100)
code += ` await expect(page.locator('.cm-content'))
|> line([7.25, 0], %)` .toHaveText(`const sketch001 = startSketchOn('XZ')
await expect(page.locator('.cm-content')).toHaveText(code) |> startProfileAt([9.06, -12.22], %)
|> line([9.14, 0], %)`)
await page.getByRole('button', { name: 'Tangential Arc' }).click() await page.getByRole('button', { name: 'Tangential Arc' }).click()
@ -511,16 +513,17 @@ test.describe('Client side scene scale should match engine scale', () => {
// select a plane // select a plane
await page.mouse.click(700, 200) await page.mouse.click(700, 200)
let code = `const sketch001 = startSketchOn('XZ')` await expect(page.locator('.cm-content')).toHaveText(
await expect(page.locator('.cm-content')).toHaveText(code) `const sketch001 = startSketchOn('XZ')`
)
await page.waitForTimeout(600) // TODO detect animation ending, or disable animation await page.waitForTimeout(300) // TODO detect animation ending, or disable animation
const startXPx = 600 const startXPx = 600
await page.mouse.click(startXPx + PUR * 10, 500 - PUR * 10) await page.mouse.click(startXPx + PUR * 10, 500 - PUR * 10)
code += ` await expect(page.locator('.cm-content'))
|> startProfileAt([7.19, -9.7], %)` .toHaveText(`const sketch001 = startSketchOn('XZ')
await expect(u.codeLocator).toHaveText(code) |> startProfileAt([9.06, -12.22], %)`)
await page.waitForTimeout(100) await page.waitForTimeout(100)
await u.closeDebugPanel() await u.closeDebugPanel()
@ -528,18 +531,21 @@ test.describe('Client side scene scale should match engine scale', () => {
await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 10) await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 10)
await page.waitForTimeout(100) await page.waitForTimeout(100)
code += ` await expect(page.locator('.cm-content'))
|> line([7.25, 0], %)` .toHaveText(`const sketch001 = startSketchOn('XZ')
await expect(u.codeLocator).toHaveText(code) |> startProfileAt([9.06, -12.22], %)
|> line([9.14, 0], %)`)
await page.getByRole('button', { name: 'Tangential Arc' }).click() await page.getByRole('button', { name: 'Tangential Arc' }).click()
await page.waitForTimeout(100) await page.waitForTimeout(100)
await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20) await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20)
code += ` await expect(page.locator('.cm-content'))
|> tangentialArcTo([21.7, -2.44], %)` .toHaveText(`const sketch001 = startSketchOn('XZ')
await expect(u.codeLocator).toHaveText(code) |> startProfileAt([9.06, -12.22], %)
|> line([9.14, 0], %)
|> tangentialArcTo([27.34, -3.08], %)`)
// click tangential arc tool again to unequip it // click tangential arc tool again to unequip it
await page.getByRole('button', { name: 'Tangential Arc' }).click() await page.getByRole('button', { name: 'Tangential Arc' }).click()
@ -610,16 +616,17 @@ test.describe('Client side scene scale should match engine scale', () => {
// select a plane // select a plane
await page.mouse.click(700, 200) await page.mouse.click(700, 200)
let code = `const sketch001 = startSketchOn('XZ')` await expect(page.locator('.cm-content')).toHaveText(
await expect(u.codeLocator).toHaveText(code) `const sketch001 = startSketchOn('XZ')`
)
await page.waitForTimeout(600) // TODO detect animation ending, or disable animation await page.waitForTimeout(300) // TODO detect animation ending, or disable animation
const startXPx = 600 const startXPx = 600
await page.mouse.click(startXPx + PUR * 10, 500 - PUR * 10) await page.mouse.click(startXPx + PUR * 10, 500 - PUR * 10)
code += ` await expect(page.locator('.cm-content'))
|> startProfileAt([182.59, -246.32], %)` .toHaveText(`const sketch001 = startSketchOn('XZ')
await expect(u.codeLocator).toHaveText(code) |> startProfileAt([230.03, -310.32], %)`)
await page.waitForTimeout(100) await page.waitForTimeout(100)
await u.closeDebugPanel() await u.closeDebugPanel()
@ -627,18 +634,21 @@ test.describe('Client side scene scale should match engine scale', () => {
await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 10) await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 10)
await page.waitForTimeout(100) await page.waitForTimeout(100)
code += ` await expect(page.locator('.cm-content'))
|> line([184.3, 0], %)` .toHaveText(`const sketch001 = startSketchOn('XZ')
await expect(u.codeLocator).toHaveText(code) |> startProfileAt([230.03, -310.32], %)
|> line([232.2, 0], %)`)
await page.getByRole('button', { name: 'Tangential Arc' }).click() await page.getByRole('button', { name: 'Tangential Arc' }).click()
await page.waitForTimeout(100) await page.waitForTimeout(100)
await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20) await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20)
code += ` await expect(page.locator('.cm-content'))
|> tangentialArcTo([551.2, -62.01], %)` .toHaveText(`const sketch001 = startSketchOn('XZ')
await expect(u.codeLocator).toHaveText(code) |> startProfileAt([230.03, -310.32], %)
|> line([232.2, 0], %)
|> tangentialArcTo([694.43, -78.12], %)`)
await page.getByRole('button', { name: 'Tangential Arc' }).click() await page.getByRole('button', { name: 'Tangential Arc' }).click()
await page.waitForTimeout(100) await page.waitForTimeout(100)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -1,6 +1,5 @@
import { SaveSettingsPayload } from 'lib/settings/settingsTypes' import { SaveSettingsPayload } from 'lib/settings/settingsTypes'
import { Themes } from 'lib/theme' import { Themes } from 'lib/theme'
import { onboardingPaths } from 'routes/Onboarding/paths'
export const TEST_SETTINGS_KEY = '/settings.toml' export const TEST_SETTINGS_KEY = '/settings.toml'
export const TEST_SETTINGS = { export const TEST_SETTINGS = {
@ -23,22 +22,9 @@ export const TEST_SETTINGS = {
}, },
} satisfies Partial<SaveSettingsPayload> } satisfies Partial<SaveSettingsPayload>
export const TEST_SETTINGS_ONBOARDING_USER_MENU = {
...TEST_SETTINGS,
app: { ...TEST_SETTINGS.app, onboardingStatus: onboardingPaths.USER_MENU },
} satisfies Partial<SaveSettingsPayload>
export const TEST_SETTINGS_ONBOARDING_EXPORT = { export const TEST_SETTINGS_ONBOARDING_EXPORT = {
...TEST_SETTINGS, ...TEST_SETTINGS,
app: { ...TEST_SETTINGS.app, onboardingStatus: onboardingPaths.EXPORT }, app: { ...TEST_SETTINGS.app, onboardingStatus: '/export' },
} satisfies Partial<SaveSettingsPayload>
export const TEST_SETTINGS_ONBOARDING_PARAMETRIC_MODELING = {
...TEST_SETTINGS,
app: {
...TEST_SETTINGS.app,
onboardingStatus: onboardingPaths.PARAMETRIC_MODELING,
},
} satisfies Partial<SaveSettingsPayload> } satisfies Partial<SaveSettingsPayload>
export const TEST_SETTINGS_ONBOARDING_START = { export const TEST_SETTINGS_ONBOARDING_START = {

View File

@ -132,8 +132,8 @@ export const getMovementUtils = (opts: any) => {
// NOTE: these pretty much can't be perfect because of screen scaling. // NOTE: these pretty much can't be perfect because of screen scaling.
// Handle on a case-by-case. // Handle on a case-by-case.
const toU = (x: number, y: number) => [ const toU = (x: number, y: number) => [
kcRound(x * 0.0678), kcRound(x * 0.0854),
kcRound(-y * 0.0678), // Y is inverted in our coordinate system kcRound(-y * 0.0854), // Y is inverted in our coordinate system
] ]
// Turn the array into a string with specific formatting // Turn the array into a string with specific formatting
@ -226,7 +226,6 @@ export async function getUtils(page: Page) {
.boundingBox() .boundingBox()
.then((box) => ({ ...box, x: box?.x || 0, y: box?.y || 0 })), .then((box) => ({ ...box, x: box?.x || 0, y: box?.y || 0 })),
codeLocator: page.locator('.cm-content'), codeLocator: page.locator('.cm-content'),
canvasLocator: page.getByTestId('client-side-scene'),
doAndWaitForCmd: async ( doAndWaitForCmd: async (
fn: () => Promise<void>, fn: () => Promise<void>,
commandType: string, commandType: string,

View File

@ -2,7 +2,6 @@ import { browser, $, expect } from '@wdio/globals'
import fs from 'fs/promises' import fs from 'fs/promises'
import path from 'path' import path from 'path'
import os from 'os' import os from 'os'
import { click, setDatasetValue } from '../utils'
const isWin32 = os.platform() === 'win32' const isWin32 = os.platform() === 'win32'
const documentsDir = path.join(os.homedir(), 'Documents') const documentsDir = path.join(os.homedir(), 'Documents')
@ -16,8 +15,25 @@ const newProjectDir = path.join(documentsDir, 'a-different-directory')
const tmp = process.env.TEMP || '/tmp' const tmp = process.env.TEMP || '/tmp'
const userCodeDir = path.join(tmp, 'kittycad_user_code') const userCodeDir = path.join(tmp, 'kittycad_user_code')
describe('ZMA sign in flow', () => { async function click(element: WebdriverIO.Element): Promise<void> {
before(async () => { // Workaround for .click(), see https://github.com/tauri-apps/tauri/issues/6541
await element.waitForClickable()
await browser.execute('arguments[0].click();', element)
}
/* Shoutout to @Sheap on Github for a great workaround utility:
* https://github.com/tauri-apps/tauri/issues/6541#issue-1638944060
*/
async function setDatasetValue(
field: WebdriverIO.Element,
property: string,
value: string
) {
await browser.execute(`arguments[0].dataset.${property} = "${value}"`, field)
}
describe('ZMA (Tauri)', () => {
it('opens the auth page and signs in', async () => {
// Clean up filesystem from previous tests // Clean up filesystem from previous tests
await new Promise((resolve) => setTimeout(resolve, 100)) await new Promise((resolve) => setTimeout(resolve, 100))
await fs.rm(defaultProjectDir, { force: true, recursive: true }) await fs.rm(defaultProjectDir, { force: true, recursive: true })
@ -26,9 +42,7 @@ describe('ZMA sign in flow', () => {
await fs.rm(userSettingsDir, { force: true, recursive: true }) await fs.rm(userSettingsDir, { force: true, recursive: true })
await fs.mkdir(defaultProjectDir, { recursive: true }) await fs.mkdir(defaultProjectDir, { recursive: true })
await fs.mkdir(newProjectDir, { recursive: true }) await fs.mkdir(newProjectDir, { recursive: true })
})
it('opens the auth page and signs in', async () => {
const signInButton = await $('[data-testid="sign-in-button"]') const signInButton = await $('[data-testid="sign-in-button"]')
expect(await signInButton.getText()).toEqual('Sign in') expect(await signInButton.getText()).toEqual('Sign in')
@ -68,10 +82,6 @@ describe('ZMA sign in flow', () => {
const newFileButton = await $('[data-testid="home-new-file"]') const newFileButton = await $('[data-testid="home-new-file"]')
expect(await newFileButton.getText()).toEqual('New project') expect(await newFileButton.getText()).toEqual('New project')
}) })
})
describe('ZMA authorized user flows', () => {
// Note: each flow below is intended to start *and* end from the home page
it('opens the settings page, checks filesystem settings, and closes the settings page', async () => { it('opens the settings page, checks filesystem settings, and closes the settings page', async () => {
const menuButton = await $('[data-testid="user-sidebar-toggle"]') const menuButton = await $('[data-testid="user-sidebar-toggle"]')
@ -140,9 +150,7 @@ describe('ZMA authorized user flows', () => {
const base = isWin32 ? 'http://tauri.localhost' : 'tauri://localhost' const base = isWin32 ? 'http://tauri.localhost' : 'tauri://localhost'
await browser.execute(`window.location.href = "${base}/home"`) await browser.execute(`window.location.href = "${base}/home"`)
}) })
})
describe('ZMA sign out flow', () => {
it('signs out', async () => { it('signs out', async () => {
await new Promise((resolve) => setTimeout(resolve, 1000)) await new Promise((resolve) => setTimeout(resolve, 1000))
const menuButton = await $('[data-testid="user-sidebar-toggle"]') const menuButton = await $('[data-testid="user-sidebar-toggle"]')

View File

@ -1,18 +0,0 @@
import { browser } from '@wdio/globals'
export async function click(element: WebdriverIO.Element): Promise<void> {
// Workaround for .click(), see https://github.com/tauri-apps/tauri/issues/6541
await element.waitForClickable()
await browser.execute('arguments[0].click();', element)
}
/* Shoutout to @Sheap on Github for a great workaround utility:
* https://github.com/tauri-apps/tauri/issues/6541#issue-1638944060
*/
export async function setDatasetValue(
field: WebdriverIO.Element,
property: string,
value: string
) {
await browser.execute(`arguments[0].dataset.${property} = "${value}"`, field)
}

62
flake.lock generated
View File

@ -1,62 +0,0 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1718470082,
"narHash": "sha256-u2F0MMYE+Efc+ocruTbtU/wWHuYHWcJafp5zJ++n/YE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3027ba73dfef68eb555fc2fa97aed4e999e74f97",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1718428119,
"narHash": "sha256-WdWDpNaq6u1IPtxtYHHWpl5BmabtpmLnMAx0RdJ/vo8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e6cea36f83499eb4e9cd184c8a8e823296b50ad5",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1718681902,
"narHash": "sha256-E/T7Ge6ayEQe7FVKMJqDBoHyLhRhjc6u9CmU8MyYfy0=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "16c8ad83297c278eebe740dea5491c1708960dd1",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View File

@ -1,70 +0,0 @@
{
description = "modeling-app development environment";
# Flake inputs
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
rust-overlay.url = "github:oxalica/rust-overlay"; # A helper for Rust + Nix
};
# Flake outputs
outputs = { self, nixpkgs, rust-overlay }:
let
# Overlays enable you to customize the Nixpkgs attribute set
overlays = [
# Makes a `rust-bin` attribute available in Nixpkgs
(import rust-overlay)
# Provides a `rustToolchain` attribute for Nixpkgs that we can use to
# create a Rust environment
(self: super: {
rustToolchain = super. rust-bin.stable.latest.default.override {
targets = [ "wasm32-unknown-unknown" ];
extensions = [ "rustfmt" "llvm-tools-preview" ];
};
})
];
# Systems supported
allSystems = [
"x86_64-linux" # 64-bit Intel/AMD Linux
"aarch64-linux" # 64-bit ARM Linux
"x86_64-darwin" # 64-bit Intel macOS
"aarch64-darwin" # 64-bit ARM macOS
];
# Helper to provide system-specific attributes
forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f {
pkgs = import nixpkgs { inherit overlays system; };
});
in
{
# Development environment output
devShells = forAllSystems ({ pkgs }: {
default = pkgs.mkShell {
# The Nix packages provided in the environment
packages = (with pkgs; [
# The package provided by our custom overlay. Includes cargo, Clippy, cargo-fmt,
# rustdoc, rustfmt, and other tools.
rustToolchain
cargo-llvm-cov
cargo-nextest
just
postgresql.lib
openssl
pkg-config
nodejs_22
]) ++ pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs; [
libiconv
darwin.apple_sdk.frameworks.Security
]);
TARGET_CC = "${pkgs.stdenv.cc}/bin/${pkgs.stdenv.cc.targetPrefix}cc";
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
};
});
};
}

View File

@ -1,6 +1,6 @@
{ {
"name": "untitled-app", "name": "untitled-app",
"version": "0.22.4", "version": "0.22.1",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@codemirror/autocomplete": "^6.16.0", "@codemirror/autocomplete": "^6.16.0",

1415
src-tauri/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -20,7 +20,7 @@ kittycad = "0.3.5"
log = "0.4.21" log = "0.4.21"
oauth2 = "4.4.2" oauth2 = "4.4.2"
serde_json = "1.0" serde_json = "1.0"
tauri = { version = "2.0.0-beta.22", features = [ "devtools", "unstable"] } tauri = { version = "2.0.0-beta.15", features = [ "devtools", "unstable"] }
tauri-plugin-cli = { version = "2.0.0-beta.3" } tauri-plugin-cli = { version = "2.0.0-beta.3" }
tauri-plugin-deep-link = { version = "2.0.0-beta.3" } tauri-plugin-deep-link = { version = "2.0.0-beta.3" }
tauri-plugin-dialog = { version = "2.0.0-beta.6" } tauri-plugin-dialog = { version = "2.0.0-beta.6" }

View File

@ -63,17 +63,16 @@
"subcommands": {} "subcommands": {}
}, },
"deep-link": { "deep-link": {
"mobile": [], "domains": [
"desktop": { {
"schemes": [ "host": "app.zoo.dev"
"app.zoo.dev" }
] ]
}
}, },
"shell": { "shell": {
"open": true "open": true
} }
}, },
"productName": "Zoo Modeling App", "productName": "Zoo Modeling App",
"version": "0.22.4" "version": "0.22.1"
} }

View File

@ -127,7 +127,7 @@ export function App() {
/> />
<ModalContainer /> <ModalContainer />
<ModelingSidebar paneOpacity={paneOpacity} /> <ModelingSidebar paneOpacity={paneOpacity} />
<Stream /> <Stream className="absolute inset-0 z-0" />
{/* <CamToggle /> */} {/* <CamToggle /> */}
<LowerRightControls> <LowerRightControls>
<Gizmo /> <Gizmo />

View File

@ -174,6 +174,41 @@ export class CameraControls {
} }
} }
throttledUpdateEngineFov = throttle(
(vals: {
position: Vector3
quaternion: Quaternion
zoom: number
fov: number
target: Vector3
}) => {
const cmd: EngineCommand = {
type: 'modeling_cmd_req',
cmd_id: uuidv4(),
cmd: {
type: 'default_camera_perspective_settings',
...convertThreeCamValuesToEngineCam({
...vals,
isPerspective: true,
}),
fov_y: vals.fov,
...calculateNearFarFromFOV(vals.fov),
},
}
this.engineCommandManager.sendSceneCommand(cmd)
this.lastPerspectiveCmd = cmd
this.lastPerspectiveCmdTime = Date.now()
if (this.lastPerspectiveCmdTimeoutId !== null) {
clearTimeout(this.lastPerspectiveCmdTimeoutId)
}
this.lastPerspectiveCmdTimeoutId = setTimeout(
this.sendLastPerspectiveReliableChannel,
lastCmdDelay
) as any as number
},
1000 / 30
)
constructor( constructor(
isOrtho = false, isOrtho = false,
domElement: HTMLCanvasElement, domElement: HTMLCanvasElement,
@ -499,28 +534,26 @@ export class CameraControls {
direction.normalize() direction.normalize()
this.camera.position.copy(this.target).addScaledVector(direction, distance) this.camera.position.copy(this.target).addScaledVector(direction, distance)
} }
usePerspectiveCamera = async () => { usePerspectiveCamera = () => {
this._usePerspectiveCamera() this._usePerspectiveCamera()
if (this.syncDirection === 'clientToEngine') { this.engineCommandManager.sendSceneCommand({
await this.engineCommandManager.sendSceneCommand({ type: 'modeling_cmd_req',
type: 'modeling_cmd_req', cmd_id: uuidv4(),
cmd_id: uuidv4(), cmd: {
cmd: { type: 'default_camera_set_perspective',
type: 'default_camera_set_perspective', parameters: {
parameters: { fov_y:
fov_y: this.camera instanceof PerspectiveCamera ? this.camera.fov : 45,
this.camera instanceof PerspectiveCamera ? this.camera.fov : 45, ...calculateNearFarFromFOV(this.lastPerspectiveFov),
...calculateNearFarFromFOV(this.lastPerspectiveFov),
},
}, },
}) },
} })
this.onCameraChange() this.onCameraChange()
this.update() this.update()
return this.camera return this.camera
} }
dollyZoom = async (newFov: number, splitEngineCalls = false) => { dollyZoom = (newFov: number) => {
if (!(this.camera instanceof PerspectiveCamera)) { if (!(this.camera instanceof PerspectiveCamera)) {
console.warn('Dolly zoom is only applicable to perspective cameras.') console.warn('Dolly zoom is only applicable to perspective cameras.')
return return
@ -571,52 +604,13 @@ export class CameraControls {
this.camera.near = z_near this.camera.near = z_near
this.camera.far = z_far this.camera.far = z_far
if (splitEngineCalls) { this.throttledUpdateEngineFov({
await this.engineCommandManager.sendSceneCommand({ fov: newFov,
type: 'modeling_cmd_req', position: newPosition,
cmd_id: uuidv4(), quaternion: this.camera.quaternion,
cmd: { zoom: this.camera.zoom,
type: 'default_camera_look_at', target: this.target,
...convertThreeCamValuesToEngineCam({ })
isPerspective: true,
position: newPosition,
quaternion: this.camera.quaternion,
zoom: this.camera.zoom,
target: this.target,
}),
},
})
await this.engineCommandManager.sendSceneCommand({
type: 'modeling_cmd_req',
cmd_id: uuidv4(),
cmd: {
type: 'default_camera_set_perspective',
parameters: {
fov_y: newFov,
z_near: 0.01,
z_far: 1000,
},
},
})
} else {
await this.engineCommandManager.sendSceneCommand({
type: 'modeling_cmd_req',
cmd_id: uuidv4(),
cmd: {
type: 'default_camera_perspective_settings',
...convertThreeCamValuesToEngineCam({
isPerspective: true,
position: newPosition,
quaternion: this.camera.quaternion,
zoom: this.camera.zoom,
target: this.target,
}),
fov_y: newFov,
z_near: 0.01,
z_far: 1000,
},
})
}
} }
update = (forceUpdate = false) => { update = (forceUpdate = false) => {
@ -1021,29 +1015,6 @@ export class CameraControls {
.onComplete(onComplete) .onComplete(onComplete)
.start() .start()
}) })
snapToPerspectiveBeforeHandingBackControlToEngine = async (
targetCamUp = new Vector3(0, 0, 1)
) => {
if (this.syncDirection === 'engineToClient') {
console.warn(
'animate To Perspective not design to work with engineToClient syncDirection.'
)
}
this.isFovAnimationInProgress = true
const targetFov = this.fovBeforeOrtho // Target FOV for perspective
this.lastPerspectiveFov = 4
let currentFov = 4
const initialCameraUp = this.camera.up.clone()
this.usePerspectiveCamera()
const tempVec = new Vector3()
currentFov = this.lastPerspectiveFov + (targetFov - this.lastPerspectiveFov)
const currentUp = tempVec.lerpVectors(initialCameraUp, targetCamUp, 1)
this.camera.up.copy(currentUp)
await this.dollyZoom(currentFov, true)
this.isFovAnimationInProgress = false
}
get reactCameraProperties(): ReactCameraProperties { get reactCameraProperties(): ReactCameraProperties {
return { return {
@ -1116,7 +1087,7 @@ function calculateNearFarFromFOV(fov: number) {
// const nearFarRatio = (fov - 3) / (45 - 3) // const nearFarRatio = (fov - 3) / (45 - 3)
// const z_near = 0.1 + nearFarRatio * (5 - 0.1) // const z_near = 0.1 + nearFarRatio * (5 - 0.1)
// const z_far = 1000 + nearFarRatio * (100000 - 1000) // const z_far = 1000 + nearFarRatio * (100000 - 1000)
return { z_near: 0.01, z_far: 1000 } return { z_near: 0.1, z_far: 1000 }
} }
function convertThreeCamValuesToEngineCam({ function convertThreeCamValuesToEngineCam({
@ -1135,6 +1106,11 @@ function convertThreeCamValuesToEngineCam({
// leaving for now since it's working but maybe revisit later // leaving for now since it's working but maybe revisit later
const euler = new Euler().setFromQuaternion(quaternion, 'XYZ') const euler = new Euler().setFromQuaternion(quaternion, 'XYZ')
const lookAtVector = new Vector3(0, 0, -1)
.applyEuler(euler)
.normalize()
.add(position)
const upVector = new Vector3(0, 1, 0).applyEuler(euler).normalize() const upVector = new Vector3(0, 1, 0).applyEuler(euler).normalize()
if (isPerspective) { if (isPerspective) {
return { return {
@ -1143,10 +1119,6 @@ function convertThreeCamValuesToEngineCam({
vantage: position, vantage: position,
} }
} }
const lookAtVector = new Vector3(0, 0, -1)
.applyEuler(euler)
.normalize()
.add(position)
const fudgeFactor2 = zoom * 0.9979224466814468 - 0.03473692325839295 const fudgeFactor2 = zoom * 0.9979224466814468 - 0.03473692325839295
const zoomFactor = (-ZOOM_MAGIC_NUMBER + fudgeFactor2) / zoom const zoomFactor = (-ZOOM_MAGIC_NUMBER + fudgeFactor2) / zoom
const direction = lookAtVector.clone().sub(position).normalize() const direction = lookAtVector.clone().sub(position).normalize()

View File

@ -136,7 +136,6 @@ export const ClientSideScene = ({
<div <div
ref={canvasRef} ref={canvasRef}
style={{ cursor: cursor }} style={{ cursor: cursor }}
data-testid="client-side-scene"
className={`absolute inset-0 h-full w-full transition-all duration-300 ${ className={`absolute inset-0 h-full w-full transition-all duration-300 ${
hideClient ? 'opacity-0' : 'opacity-100' hideClient ? 'opacity-0' : 'opacity-100'
} ${hideServer ? 'bg-chalkboard-10 dark:bg-chalkboard-100' : ''} ${ } ${hideServer ? 'bg-chalkboard-10 dark:bg-chalkboard-100' : ''} ${

View File

@ -32,7 +32,9 @@ import {
SKETCH_GROUP_SEGMENTS, SKETCH_GROUP_SEGMENTS,
SKETCH_LAYER, SKETCH_LAYER,
X_AXIS, X_AXIS,
XZ_PLANE,
Y_AXIS, Y_AXIS,
YZ_PLANE,
} from './sceneInfra' } from './sceneInfra'
import { isQuaternionVertical, quaternionFromUpNForward } from './helpers' import { isQuaternionVertical, quaternionFromUpNForward } from './helpers'
import { import {
@ -343,8 +345,11 @@ export class SceneEntities {
pathToNode: sketchPathToNode, pathToNode: sketchPathToNode,
} }
const dummy = new Mesh() const dummy = new Mesh()
// TODO: When we actually have sketch positions and rotations we can use them here. dummy.position.set(
dummy.position.set(0, 0, 0) sketchGroup.position[0],
sketchGroup.position[1],
sketchGroup.position[2]
)
const orthoFactor = orthoScale(sceneInfra.camControls.camera) const orthoFactor = orthoScale(sceneInfra.camControls.camera)
const factor = const factor =
(sceneInfra.camControls.camera instanceof OrthographicCamera (sceneInfra.camControls.camera instanceof OrthographicCamera
@ -1324,6 +1329,13 @@ export class SceneEntities {
to, to,
}) })
} }
async animateAfterSketch() {
// if (isReducedMotion()) {
// sceneInfra.camControls.usePerspectiveCamera()
// return
// }
await sceneInfra.camControls.animateToPerspective()
}
removeSketchGrid() { removeSketchGrid() {
if (this.axisGroup) this.scene.remove(this.axisGroup) if (this.axisGroup) this.scene.remove(this.axisGroup)
} }
@ -1387,132 +1399,114 @@ export class SceneEntities {
selected.material.color = defaultPlaneColor(type) selected.material.color = defaultPlaneColor(type)
}, },
onClick: async (args) => { onClick: async (args) => {
const { streamDimensions } = useStore.getState() const checkExtrudeFaceClick = async (): Promise<
const { entity_id, ...rest } = await sendSelectEventToEngine( ['face' | 'plane' | 'other', string]
args?.mouseEvent, > => {
document.getElementById('video-stream') as HTMLVideoElement, const { streamDimensions } = useStore.getState()
streamDimensions const { entity_id } = await sendSelectEventToEngine(
) args?.mouseEvent,
let _entity_id = entity_id document.getElementById('video-stream') as HTMLVideoElement,
if (!_entity_id) return streamDimensions
if ( )
engineCommandManager.defaultPlanes?.xy === _entity_id || if (!entity_id) return ['other', '']
engineCommandManager.defaultPlanes?.xz === _entity_id || if (
engineCommandManager.defaultPlanes?.yz === _entity_id || engineCommandManager.defaultPlanes?.xy === entity_id ||
engineCommandManager.defaultPlanes?.negXy === _entity_id || engineCommandManager.defaultPlanes?.xz === entity_id ||
engineCommandManager.defaultPlanes?.negXz === _entity_id || engineCommandManager.defaultPlanes?.yz === entity_id
engineCommandManager.defaultPlanes?.negYz === _entity_id ) {
) { return ['plane', entity_id]
const defaultPlaneStrMap: Record<string, DefaultPlaneStr> = {
[engineCommandManager.defaultPlanes.xy]: 'XY',
[engineCommandManager.defaultPlanes.xz]: 'XZ',
[engineCommandManager.defaultPlanes.yz]: 'YZ',
[engineCommandManager.defaultPlanes.negXy]: '-XY',
[engineCommandManager.defaultPlanes.negXz]: '-XZ',
[engineCommandManager.defaultPlanes.negYz]: '-YZ',
} }
// TODO can we get this information from rust land when it creates the default planes? const artifact = this.engineCommandManager.artifactMap[entity_id]
// maybe returned from make_default_planes (src/wasm-lib/src/wasm.rs) // If we clicked on an extrude wall, we climb up the parent Id
let zAxis: [number, number, number] = [0, 0, 1] // to get the sketch profile's face ID. If we clicked on an endcap,
let yAxis: [number, number, number] = [0, 1, 0] // we already have it.
const targetId =
'additionalData' in artifact &&
artifact.additionalData?.type === 'cap'
? entity_id
: artifact.parentId
// get unit vector from camera position to target // tsc cannot infer that target can have extrusions
const camVector = sceneInfra.camControls.camera.position // from the commandType (why?) so we need to cast it
.clone() const target = this.engineCommandManager.artifactMap?.[
.sub(sceneInfra.camControls.target) targetId || ''
] as ArtifactMapCommand & { extrusions?: string[] }
if (engineCommandManager.defaultPlanes?.xy === _entity_id) { // TODO: We get the first extrusion command ID,
zAxis = [0, 0, 1] // which is fine while backend systems only support one extrusion.
yAxis = [0, 1, 0] // but we need to more robustly handle resolving to the correct extrusion
if (camVector.z < 0) { // if there are multiple.
zAxis = [0, 0, -1] const extrusions =
_entity_id = engineCommandManager.defaultPlanes?.negXy || '' this.engineCommandManager.artifactMap?.[
} target?.extrusions?.[0] || ''
} else if (engineCommandManager.defaultPlanes?.yz === _entity_id) { ]
zAxis = [1, 0, 0]
yAxis = [0, 0, 1] if (artifact?.commandType !== 'solid3d_get_extrusion_face_info')
if (camVector.x < 0) { return ['other', entity_id]
zAxis = [-1, 0, 0]
_entity_id = engineCommandManager.defaultPlanes?.negYz || '' const faceInfo = await getFaceDetails(entity_id)
} if (!faceInfo?.origin || !faceInfo?.z_axis || !faceInfo?.y_axis)
} else if (engineCommandManager.defaultPlanes?.xz === _entity_id) { return ['other', entity_id]
zAxis = [0, 1, 0] const { z_axis, y_axis, origin } = faceInfo
yAxis = [0, 0, 1] const sketchPathToNode = getNodePathFromSourceRange(
_entity_id = engineCommandManager.defaultPlanes?.negXz || '' kclManager.ast,
if (camVector.y < 0) { artifact.range
zAxis = [0, -1, 0] )
_entity_id = engineCommandManager.defaultPlanes?.xz || '' const extrudePathToNode = extrusions?.range
} ? getNodePathFromSourceRange(kclManager.ast, extrusions.range)
} : []
sceneInfra.modelingSend({ sceneInfra.modelingSend({
type: 'Select default plane', type: 'Select default plane',
data: { data: {
type: 'defaultPlane', type: 'extrudeFace',
planeId: _entity_id, zAxis: [z_axis.x, z_axis.y, z_axis.z],
plane: defaultPlaneStrMap[_entity_id], yAxis: [y_axis.x, y_axis.y, y_axis.z],
zAxis, position: [origin.x, origin.y, origin.z].map(
yAxis, (num) => num / sceneInfra._baseUnitMultiplier
) as [number, number, number],
sketchPathToNode,
extrudePathToNode,
cap:
artifact?.additionalData?.type === 'cap'
? artifact.additionalData.info
: 'none',
faceId: entity_id,
}, },
}) })
return return ['face', entity_id]
} }
const artifact = this.engineCommandManager.artifactMap[_entity_id]
// If we clicked on an extrude wall, we climb up the parent Id
// to get the sketch profile's face ID. If we clicked on an endcap,
// we already have it.
const targetId =
'additionalData' in artifact &&
artifact.additionalData?.type === 'cap'
? _entity_id
: artifact.parentId
// tsc cannot infer that target can have extrusions const faceResult = await checkExtrudeFaceClick()
// from the commandType (why?) so we need to cast it if (faceResult[0] === 'face') return
const target = this.engineCommandManager.artifactMap?.[
targetId || ''
] as ArtifactMapCommand & { extrusions?: string[] }
// TODO: We get the first extrusion command ID,
// which is fine while backend systems only support one extrusion.
// but we need to more robustly handle resolving to the correct extrusion
// if there are multiple.
const extrusions =
this.engineCommandManager.artifactMap?.[target?.extrusions?.[0] || '']
if (artifact?.commandType !== 'solid3d_get_extrusion_face_info') return
const faceInfo = await getFaceDetails(_entity_id)
if (!faceInfo?.origin || !faceInfo?.z_axis || !faceInfo?.y_axis) return
const { z_axis, y_axis, origin } = faceInfo
const sketchPathToNode = getNodePathFromSourceRange(
kclManager.ast,
artifact.range
)
const extrudePathToNode = extrusions?.range
? getNodePathFromSourceRange(kclManager.ast, extrusions.range)
: []
if (!args || !args.intersects?.[0]) return
if (args.mouseEvent.which !== 1) return
const { intersects } = args
const type = intersects?.[0].object.name || ''
const posNorm = Number(intersects?.[0]?.normal?.z) > 0
let planeString: DefaultPlaneStr = posNorm ? 'XY' : '-XY'
let zAxis: [number, number, number] = posNorm ? [0, 0, 1] : [0, 0, -1]
let yAxis: [number, number, number] = [0, 1, 0]
if (type === YZ_PLANE) {
planeString = posNorm ? 'YZ' : '-YZ'
zAxis = posNorm ? [1, 0, 0] : [-1, 0, 0]
yAxis = [0, 0, 1]
} else if (type === XZ_PLANE) {
planeString = posNorm ? '-XZ' : 'XZ'
zAxis = posNorm ? [0, 1, 0] : [0, -1, 0]
yAxis = [0, 0, 1]
}
sceneInfra.modelingSend({ sceneInfra.modelingSend({
type: 'Select default plane', type: 'Select default plane',
data: { data: {
type: 'extrudeFace', type: 'defaultPlane',
zAxis: [z_axis.x, z_axis.y, z_axis.z], plane: planeString,
yAxis: [y_axis.x, y_axis.y, y_axis.z], zAxis,
position: [origin.x, origin.y, origin.z].map( yAxis,
(num) => num / sceneInfra._baseUnitMultiplier planeId: faceResult[1],
) as [number, number, number],
sketchPathToNode,
extrudePathToNode,
cap:
artifact?.additionalData?.type === 'cap'
? artifact.additionalData.info
: 'none',
faceId: _entity_id,
}, },
}) })
return
}, },
}) })
} }
@ -1798,7 +1792,7 @@ export function getSketchQuaternion(
ast: kclManager.ast, ast: kclManager.ast,
programMemory: kclManager.programMemory, programMemory: kclManager.programMemory,
}) })
const zAxis = sketchGroup?.on.zAxis || sketchNormalBackUp const zAxis = sketchGroup?.zAxis || sketchNormalBackUp
return getQuaternionFromZAxis(massageFormats(zAxis)) return getQuaternionFromZAxis(massageFormats(zAxis))
} }
export async function getSketchOrientationDetails( export async function getSketchOrientationDetails(
@ -1813,24 +1807,20 @@ export async function getSketchOrientationDetails(
programMemory: kclManager.programMemory, programMemory: kclManager.programMemory,
}) })
if (sketchGroup.on.type === 'plane') { if (sketchGroup.on.type === 'plane') {
const zAxis = sketchGroup?.on.zAxis const zAxis = sketchGroup?.zAxis
return { return {
quat: getQuaternionFromZAxis(massageFormats(zAxis)), quat: getQuaternionFromZAxis(massageFormats(zAxis)),
sketchDetails: { sketchDetails: {
sketchPathToNode, sketchPathToNode,
zAxis: [zAxis.x, zAxis.y, zAxis.z], zAxis: [zAxis.x, zAxis.y, zAxis.z],
yAxis: [ yAxis: [sketchGroup.yAxis.x, sketchGroup.yAxis.y, sketchGroup.yAxis.z],
sketchGroup.on.yAxis.x,
sketchGroup.on.yAxis.y,
sketchGroup.on.yAxis.z,
],
origin: [0, 0, 0], origin: [0, 0, 0],
faceId: sketchGroup.on.id, faceId: sketchGroup.on.id,
}, },
} }
} }
if (sketchGroup.on.type === 'face') { if (sketchGroup.on.type === 'face') {
const faceInfo = await getFaceDetails(sketchGroup.on.id) const faceInfo = await getFaceDetails(sketchGroup.on.faceId)
if (!faceInfo?.origin || !faceInfo?.z_axis || !faceInfo?.y_axis) if (!faceInfo?.origin || !faceInfo?.z_axis || !faceInfo?.y_axis)
throw new Error('faceInfo') throw new Error('faceInfo')
@ -1846,7 +1836,7 @@ export async function getSketchOrientationDetails(
zAxis: [z_axis.x, z_axis.y, z_axis.z], zAxis: [z_axis.x, z_axis.y, z_axis.z],
yAxis: [y_axis.x, y_axis.y, y_axis.z], yAxis: [y_axis.x, y_axis.y, y_axis.z],
origin: [origin.x, origin.y, origin.z], origin: [origin.x, origin.y, origin.z],
faceId: sketchGroup.on.id, faceId: sketchGroup.on.faceId,
}, },
} }
} }

View File

@ -6,8 +6,6 @@ import CommandComboBox from '../CommandComboBox'
import CommandBarReview from './CommandBarReview' import CommandBarReview from './CommandBarReview'
import { useLocation } from 'react-router-dom' import { useLocation } from 'react-router-dom'
import useHotkeyWrapper from 'lib/hotkeyWrapper' import useHotkeyWrapper from 'lib/hotkeyWrapper'
import { CustomIcon } from 'components/CustomIcon'
import Tooltip from 'components/Tooltip'
export const CommandBar = () => { export const CommandBar = () => {
const { pathname } = useLocation() const { pathname } = useLocation()
@ -105,7 +103,7 @@ export const CommandBar = () => {
leaveTo="opacity-0 scale-95" leaveTo="opacity-0 scale-95"
> >
<WrapperComponent.Panel <WrapperComponent.Panel
className="relative z-50 pointer-events-auto w-full max-w-xl py-2 mx-auto border rounded rounded-tl-none shadow-lg bg-chalkboard-10 dark:bg-chalkboard-100 dark:border-chalkboard-70" className="relative z-50 pointer-events-auto w-full max-w-xl py-2 mx-auto border rounded shadow-lg bg-chalkboard-10 dark:bg-chalkboard-100 dark:border-chalkboard-70"
as="div" as="div"
data-testid="command-bar" data-testid="command-bar"
> >
@ -118,19 +116,6 @@ export const CommandBar = () => {
<CommandBarReview stepBack={stepBack} /> <CommandBarReview stepBack={stepBack} />
) )
)} )}
<button
onClick={() => commandBarSend({ type: 'Close' })}
className="group block !absolute left-auto right-full top-[-3px] m-2.5 p-0 border-none bg-transparent hover:bg-transparent"
>
<CustomIcon
name="close"
className="w-5 h-5 rounded-sm bg-destroy-10 text-destroy-80 dark:bg-destroy-80 dark:text-destroy-10 group-hover:brightness-110"
/>
<Tooltip position="bottom" delay={500}>
Cancel{' '}
<kbd className="hotkey ml-4 dark:!bg-chalkboard-80">esc</kbd>
</Tooltip>
</button>
</WrapperComponent.Panel> </WrapperComponent.Panel>
</Transition.Child> </Transition.Child>
</WrapperComponent> </WrapperComponent>

View File

@ -7,8 +7,10 @@ import {
getSelectionType, getSelectionType,
getSelectionTypeDisplayText, getSelectionTypeDisplayText,
} from 'lib/selections' } from 'lib/selections'
import { kclManager } from 'lib/singletons'
import { modelingMachine } from 'machines/modelingMachine' import { modelingMachine } from 'machines/modelingMachine'
import { useCallback, useEffect, useRef, useState } from 'react' import { useCallback, useEffect, useRef, useState } from 'react'
import { useHotkeys } from 'react-hotkeys-hook'
import { StateFrom } from 'xstate' import { StateFrom } from 'xstate'
const selectionSelector = (snapshot: StateFrom<typeof modelingMachine>) => const selectionSelector = (snapshot: StateFrom<typeof modelingMachine>) =>
@ -39,6 +41,12 @@ function CommandBarSelectionInput({
canSubmitSelectionArg(selectionsByType, arg) canSubmitSelectionArg(selectionsByType, arg)
) )
useHotkeys('tab', () => onSubmit(selection), {
enableOnFormTags: true,
enableOnContentEditable: true,
keyup: true,
})
useEffect(() => { useEffect(() => {
inputRef.current?.focus() inputRef.current?.focus()
}, [selection, inputRef]) }, [selection, inputRef])

View File

@ -74,8 +74,8 @@ const CustomIconMap = {
bug: ( bug: (
<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path <path
fillRule="evenodd" fill-rule="evenodd"
clipRule="evenodd" clip-rule="evenodd"
d="M10.8209 5.99884C10.6403 5.73962 10.3399 5.57001 10 5.57001C9.65984 5.57001 9.35936 5.73984 9.17871 5.99935C9.43724 5.95129 9.71142 5.92578 10.0012 5.92578C10.29 5.92578 10.5633 5.95111 10.8209 5.99884ZM10 4.57001C8.9459 4.57001 8.08227 5.38548 8.00554 6.41997C7.58916 6.65398 7.23724 6.95989 6.95014 7.31304L5.85355 6.21645L5.14645 6.92356L6.40931 8.18642C6.20774 8.62503 6.08043 9.09624 6.0278 9.57001H5V10.57H6.01946C6.06396 11.1581 6.1867 11.8173 6.4071 12.4558L5.14645 13.7165L5.85355 14.4236L6.8408 13.4363C7.46354 14.555 8.47307 15.4258 10.0012 15.4258C11.529 15.4258 12.5378 14.5554 13.16 13.4371L14.1464 14.4236L14.8536 13.7165L13.5934 12.4563C13.8136 11.8177 13.9362 11.1583 13.9806 10.57H15V9.57001H13.9722C13.9197 9.0961 13.7925 8.62474 13.5911 8.18602L14.8536 6.92356L14.1464 6.21645L13.0505 7.31239C12.7633 6.95894 12.4112 6.65285 11.9944 6.41883C11.9171 5.38488 11.0537 4.57001 10 4.57001ZM10.5 14.3801V8.57001H9.5V14.3796C8.72105 14.2298 8.15885 13.7245 7.7428 12.9999C7.22316 12.095 7 10.937 7 10.07C7 8.46381 8.04281 6.92578 10.0012 6.92578C11.9589 6.92578 13 8.4629 13 10.07C13 10.9373 12.7773 12.0954 12.2582 13.0003C11.8422 13.7254 11.2799 14.2309 10.5 14.3801Z" d="M10.8209 5.99884C10.6403 5.73962 10.3399 5.57001 10 5.57001C9.65984 5.57001 9.35936 5.73984 9.17871 5.99935C9.43724 5.95129 9.71142 5.92578 10.0012 5.92578C10.29 5.92578 10.5633 5.95111 10.8209 5.99884ZM10 4.57001C8.9459 4.57001 8.08227 5.38548 8.00554 6.41997C7.58916 6.65398 7.23724 6.95989 6.95014 7.31304L5.85355 6.21645L5.14645 6.92356L6.40931 8.18642C6.20774 8.62503 6.08043 9.09624 6.0278 9.57001H5V10.57H6.01946C6.06396 11.1581 6.1867 11.8173 6.4071 12.4558L5.14645 13.7165L5.85355 14.4236L6.8408 13.4363C7.46354 14.555 8.47307 15.4258 10.0012 15.4258C11.529 15.4258 12.5378 14.5554 13.16 13.4371L14.1464 14.4236L14.8536 13.7165L13.5934 12.4563C13.8136 11.8177 13.9362 11.1583 13.9806 10.57H15V9.57001H13.9722C13.9197 9.0961 13.7925 8.62474 13.5911 8.18602L14.8536 6.92356L14.1464 6.21645L13.0505 7.31239C12.7633 6.95894 12.4112 6.65285 11.9944 6.41883C11.9171 5.38488 11.0537 4.57001 10 4.57001ZM10.5 14.3801V8.57001H9.5V14.3796C8.72105 14.2298 8.15885 13.7245 7.7428 12.9999C7.22316 12.095 7 10.937 7 10.07C7 8.46381 8.04281 6.92578 10.0012 6.92578C11.9589 6.92578 13 8.4629 13 10.07C13 10.9373 12.7773 12.0954 12.2582 13.0003C11.8422 13.7254 11.2799 14.2309 10.5 14.3801Z"
fill="currentColor" fill="currentColor"
/> />

View File

@ -47,6 +47,7 @@ import {
TANGENTIAL_ARC_TO_SEGMENT, TANGENTIAL_ARC_TO_SEGMENT,
getParentGroup, getParentGroup,
getSketchOrientationDetails, getSketchOrientationDetails,
getSketchQuaternion,
} from 'clientSideScene/sceneEntities' } from 'clientSideScene/sceneEntities'
import { import {
moveValueIntoNewVariablePath, moveValueIntoNewVariablePath,
@ -63,7 +64,6 @@ import {
import { import {
getNodeFromPath, getNodeFromPath,
getNodePathFromSourceRange, getNodePathFromSourceRange,
hasExtrudableGeometry,
isSingleCursorInPipe, isSingleCursorInPipe,
} from 'lang/queryAst' } from 'lang/queryAst'
import { TEST } from 'env' import { TEST } from 'env'
@ -76,7 +76,6 @@ import { useSearchParams } from 'react-router-dom'
import { letEngineAnimateAndSyncCamAfter } from 'clientSideScene/CameraControls' import { letEngineAnimateAndSyncCamAfter } from 'clientSideScene/CameraControls'
import { getVarNameModal } from 'hooks/useToolbarGuards' import { getVarNameModal } from 'hooks/useToolbarGuards'
import useHotkeyWrapper from 'lib/hotkeyWrapper' import useHotkeyWrapper from 'lib/hotkeyWrapper'
import { uuidv4 } from 'lib/utils'
type MachineContext<T extends AnyStateMachine> = { type MachineContext<T extends AnyStateMachine> = {
state: StateFrom<T> state: StateFrom<T>
@ -122,24 +121,7 @@ export const ModelingMachineProvider = ({
htmlRef, htmlRef,
token token
) )
useHotkeyWrapper(['meta + shift + .'], () => { useHotkeyWrapper(['meta + shift + .'], () => coreDump(coreDumpManager, true))
console.warn('CoreDump: Initializing core dump')
toast.promise(
coreDump(coreDumpManager, true),
{
loading: 'Starting core dump...',
success: 'Core dump completed successfully',
error: 'Error while exporting core dump',
},
{
success: {
// Note: this extended duration is especially important for Playwright e2e testing
// default duration is 2000 - https://react-hot-toast.com/docs/toast#default-durations
duration: 6000,
},
}
)
})
// Settings machine setup // Settings machine setup
// const retrievedSettings = useRef( // const retrievedSettings = useRef(
@ -159,41 +141,7 @@ export const ModelingMachineProvider = ({
{ {
actions: { actions: {
'sketch exit execute': () => { 'sketch exit execute': () => {
;(async () => { kclManager.executeCode(true)
await sceneInfra.camControls.snapToPerspectiveBeforeHandingBackControlToEngine()
sceneInfra.camControls.syncDirection = 'engineToClient'
const settings: Models['CameraSettings_type'] = (
await engineCommandManager.sendSceneCommand({
type: 'modeling_cmd_req',
cmd_id: uuidv4(),
cmd: {
type: 'default_camera_get_settings',
},
})
)?.data?.data?.settings
if (settings.up.z !== 1) {
// workaround for gimbal lock situation
await engineCommandManager.sendSceneCommand({
type: 'modeling_cmd_req',
cmd_id: uuidv4(),
cmd: {
type: 'default_camera_look_at',
center: settings.center,
vantage: {
...settings.pos,
y:
settings.pos.y +
(settings.center.z - settings.pos.z > 0 ? 2 : -2),
},
up: { x: 0, y: 0, z: 1 },
},
})
}
kclManager.executeCode(true)
})()
}, },
'Set mouse state': assign({ 'Set mouse state': assign({
mouseState: (_, event) => event.data, mouseState: (_, event) => event.data,
@ -448,13 +396,8 @@ export const ModelingMachineProvider = ({
if ( if (
selectionRanges.codeBasedSelections.length === 0 || selectionRanges.codeBasedSelections.length === 0 ||
isSelectionLastLine(selectionRanges, codeManager.code) isSelectionLastLine(selectionRanges, codeManager.code)
) { )
// they have no selection, we should enable the button return true
// so they can select the face through the cmdbar
// BUT only if there's extrudable geometry
if (hasExtrudableGeometry(kclManager.ast)) return true
return false
}
if (!isPipe) return false if (!isPipe) return false
return canExtrudeSelection(selectionRanges) return canExtrudeSelection(selectionRanges)
@ -507,7 +450,6 @@ export const ModelingMachineProvider = ({
}, },
'animate-to-face': async (_, { data }) => { 'animate-to-face': async (_, { data }) => {
if (data.type === 'extrudeFace') { if (data.type === 'extrudeFace') {
console.log('data', data)
const { modifiedAst, pathToNode: pathToNewSketchNode } = const { modifiedAst, pathToNode: pathToNewSketchNode } =
sketchOnExtrudedFace( sketchOnExtrudedFace(
kclManager.ast, kclManager.ast,
@ -522,7 +464,7 @@ export const ModelingMachineProvider = ({
engineCommandManager, engineCommandManager,
data.faceId data.faceId
) )
sceneInfra.camControls.syncDirection = 'clientToEngine'
return { return {
sketchPathToNode: pathToNewSketchNode, sketchPathToNode: pathToNewSketchNode,
zAxis: data.zAxis, zAxis: data.zAxis,
@ -536,10 +478,8 @@ export const ModelingMachineProvider = ({
) )
await kclManager.updateAst(modifiedAst, false) await kclManager.updateAst(modifiedAst, false)
sceneInfra.camControls.syncDirection = 'clientToEngine' sceneInfra.camControls.syncDirection = 'clientToEngine'
await letEngineAnimateAndSyncCamAfter( const quat = await getSketchQuaternion(pathToNode, data.zAxis)
engineCommandManager, await sceneInfra.camControls.tweenCameraToQuaternion(quat)
data.planeId
)
return { return {
sketchPathToNode: pathToNode, sketchPathToNode: pathToNode,
zAxis: data.zAxis, zAxis: data.zAxis,

View File

@ -2,7 +2,7 @@
@apply relative z-0 rounded-r max-w-full h-full flex-1; @apply relative z-0 rounded-r max-w-full h-full flex-1;
display: grid; display: grid;
grid-template-rows: auto 1fr; grid-template-rows: auto 1fr;
@apply bg-chalkboard-10/50 focus-within:bg-chalkboard-10/90 backdrop-blur-sm border border-chalkboard-20; @apply bg-chalkboard-10/50 backdrop-blur-sm border border-chalkboard-20;
scroll-margin-block-start: 41px; scroll-margin-block-start: 41px;
} }
@ -12,7 +12,7 @@
} }
:global(.dark) .panel { :global(.dark) .panel {
@apply bg-chalkboard-100/50 focus-within:bg-chalkboard-100/90 backdrop-blur-[3px] border-chalkboard-80; @apply bg-chalkboard-100/50 backdrop-blur-[3px] border-chalkboard-80;
} }
.header { .header {

View File

@ -46,11 +46,7 @@ export const ModelingPane = ({
data-testid={detailsTestId} data-testid={detailsTestId}
id={id} id={id}
className={ className={
'group-focus-within:border-primary dark:group-focus-within:border-chalkboard-50 ' + pointerEventsCssClass + styles.panel + ' group ' + (className || '')
pointerEventsCssClass +
styles.panel +
' group ' +
(className || '')
} }
> >
<ModelingPaneHeader title={title} Menu={Menu} /> <ModelingPaneHeader title={title} Menu={Menu} />

View File

@ -43,16 +43,20 @@ describe('processMemory', () => {
theExtrude: [ theExtrude: [
{ {
type: 'extrudePlane', type: 'extrudePlane',
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
faceId: expect.any(String),
name: '', name: '',
id: expect.any(String), id: expect.any(String),
faceId: expect.any(String),
sourceRange: [170, 194], sourceRange: [170, 194],
}, },
{ {
type: 'extrudePlane', type: 'extrudePlane',
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
faceId: expect.any(String),
name: '', name: '',
id: expect.any(String), id: expect.any(String),
faceId: expect.any(String),
sourceRange: [202, 230], sourceRange: [202, 230],
}, },
], ],

View File

@ -123,73 +123,70 @@ function ModelingSidebarSection({
}, [showDebugPanel.current, togglePane, openPanes]) }, [showDebugPanel.current, togglePane, openPanes])
return ( return (
<div className="group contents"> <Tab.Group
<Tab.Group vertical
vertical selectedIndex={
selectedIndex={ currentPane === 'none' ? 0 : paneIds.indexOf(currentPane) + 1
currentPane === 'none' ? 0 : paneIds.indexOf(currentPane) + 1 }
onChange={(index) => {
const newPane = index === 0 ? 'none' : paneIds[index - 1]
togglePane(newPane)
}}
>
<Tab.List
className={
'pointer-events-auto ' +
(alignButtons === 'start'
? 'justify-start self-start'
: 'justify-end self-end') +
(currentPane === 'none'
? ' rounded-r focus-within:!border-primary/50'
: ' border-r-0') +
' p-2 col-start-1 col-span-1 h-fit w-fit flex flex-col items-start gap-2 bg-chalkboard-10 border border-solid border-chalkboard-20 dark:bg-chalkboard-90 dark:border-chalkboard-80 ' +
(openPanes.length === 1 && currentPane === 'none' ? 'pr-0.5' : '')
} }
onChange={(index) => {
const newPane = index === 0 ? 'none' : paneIds[index - 1]
togglePane(newPane)
}}
> >
<Tab.List <Tab key="none" className="sr-only">
className={ No panes open
'pointer-events-auto ' + </Tab>
(alignButtons === 'start' {filteredPanes.map((pane) => (
? 'justify-start self-start' <ModelingPaneButton
: 'justify-end self-end') + key={pane.id}
(currentPane === 'none' paneConfig={pane}
? ' rounded-r focus-within:!border-primary/50' currentPane={currentPane}
: ' border-r-0') + togglePane={() => togglePane(pane.id)}
' p-2 col-start-1 col-span-1 h-fit w-fit flex flex-col items-start gap-2 ' + />
'bg-chalkboard-10 border border-solid border-chalkboard-20 dark:bg-chalkboard-90 dark:border-chalkboard-80 group-focus-within:border-primary dark:group-focus-within:border-chalkboard-50 ' + ))}
(openPanes.length === 1 && currentPane === 'none' ? 'pr-0.5' : '') </Tab.List>
} <Tab.Panels
> as="article"
<Tab key="none" className="sr-only"> className={
No panes open 'col-start-2 col-span-1 ' +
</Tab> (openPanes.length === 1
{filteredPanes.map((pane) => ( ? currentPane !== 'none'
<ModelingPaneButton ? `row-start-1 row-end-3`
key={pane.id} : `hidden`
paneConfig={pane} : ``)
currentPane={currentPane} }
togglePane={() => togglePane(pane.id)} >
/> <Tab.Panel key="none" />
))} {filteredPanes.map((pane) => (
</Tab.List> <Tab.Panel key={pane.id} className="h-full">
<Tab.Panels <ModelingPane
as="article" id={`${pane.id}-pane`}
className={ title={pane.title}
'col-start-2 col-span-1 ' + Menu={pane.Menu}
(openPanes.length === 1 >
? currentPane !== 'none' {pane.Content instanceof Function ? (
? `row-start-1 row-end-3` <pane.Content />
: `hidden` ) : (
: ``) pane.Content
} )}
> </ModelingPane>
<Tab.Panel key="none" /> </Tab.Panel>
{filteredPanes.map((pane) => ( ))}
<Tab.Panel key={pane.id} className="h-full"> </Tab.Panels>
<ModelingPane </Tab.Group>
id={`${pane.id}-pane`}
title={pane.title}
Menu={pane.Menu}
>
{pane.Content instanceof Function ? (
<pane.Content />
) : (
pane.Content
)}
</ModelingPane>
</Tab.Panel>
))}
</Tab.Panels>
</Tab.Group>
</div>
) )
} }

View File

@ -1,7 +1,8 @@
import { render, screen } from '@testing-library/react' import { fireEvent, render, screen } from '@testing-library/react'
import { BrowserRouter } from 'react-router-dom' import { BrowserRouter } from 'react-router-dom'
import ProjectSidebarMenu from './ProjectSidebarMenu' import ProjectSidebarMenu from './ProjectSidebarMenu'
import { SettingsAuthProviderJest } from './SettingsAuthProvider' import { SettingsAuthProviderJest } from './SettingsAuthProvider'
import { APP_NAME } from 'lib/constants'
import { CommandBarProvider } from './CommandBar/CommandBarProvider' import { CommandBarProvider } from './CommandBar/CommandBarProvider'
import { Project } from 'wasm-lib/kcl/bindings/Project' import { Project } from 'wasm-lib/kcl/bindings/Project'

View File

@ -126,8 +126,8 @@ export const Stream = ({ className = '' }: { className?: string }) => {
return ( return (
<div <div
className="absolute inset-0 z-0" id="stream"
data-testid="stream" className={className}
onMouseUp={handleMouseUp} onMouseUp={handleMouseUp}
onMouseDown={handleMouseDown} onMouseDown={handleMouseDown}
onContextMenu={(e) => e.preventDefault()} onContextMenu={(e) => e.preventDefault()}
@ -142,6 +142,7 @@ export const Stream = ({ className = '' }: { className?: string }) => {
onMouseMoveCapture={handleMouseMove} onMouseMoveCapture={handleMouseMove}
className="w-full cursor-pointer h-full" className="w-full cursor-pointer h-full"
disablePictureInPicture disablePictureInPicture
style={{ transitionDuration: '200ms', transitionProperty: 'filter' }}
id="video-stream" id="video-stream"
/> />
<ClientSideScene <ClientSideScene

View File

@ -39,7 +39,7 @@ const UserSidebarMenu = ({ user }: { user?: User }) => {
<Popover className="relative"> <Popover className="relative">
{user?.image && !imageLoadFailed ? ( {user?.image && !imageLoadFailed ? (
<Popover.Button <Popover.Button
className="relative border-0 rounded-full w-fit min-w-max p-0 group" className="border-0 rounded-full w-fit min-w-max p-0 group"
data-testid="user-sidebar-toggle" data-testid="user-sidebar-toggle"
> >
<div className="rounded-full border overflow-hidden"> <div className="rounded-full border overflow-hidden">
@ -51,9 +51,6 @@ const UserSidebarMenu = ({ user }: { user?: User }) => {
onError={() => setImageLoadFailed(true)} onError={() => setImageLoadFailed(true)}
/> />
</div> </div>
<Tooltip position="bottom-right" delay={1000}>
User menu
</Tooltip>
</Popover.Button> </Popover.Button>
) : ( ) : (
<ActionButton <ActionButton
@ -62,7 +59,7 @@ const UserSidebarMenu = ({ user }: { user?: User }) => {
className="border-transparent !px-0" className="border-transparent !px-0"
data-testid="user-sidebar-toggle" data-testid="user-sidebar-toggle"
> >
<Tooltip position="bottom-right" delay={1000}> <Tooltip position="left" delay={1000}>
User menu User menu
</Tooltip> </Tooltip>
</ActionButton> </ActionButton>

View File

@ -147,31 +147,13 @@ code {
#code-mirror-override .cm-activeLine, #code-mirror-override .cm-activeLine,
#code-mirror-override .cm-activeLineGutter { #code-mirror-override .cm-activeLineGutter {
@apply bg-primary/5; @apply bg-primary/10;
} }
.dark #code-mirror-override .cm-activeLine, .dark #code-mirror-override .cm-activeLine,
.dark #code-mirror-override .cm-activeLineGutter { .dark #code-mirror-override .cm-activeLineGutter {
@apply bg-chalkboard-70/20;
mix-blend-mode: lighten;
}
#code-mirror-override .cm-focused .cm-activeLine,
#code-mirror-override .cm-focused .cm-activeLineGutter {
@apply bg-primary/10;
}
.dark #code-mirror-override .cm-focused .cm-activeLine,
.dark #code-mirror-override .cm-focused .cm-activeLineGutter {
@apply bg-chalkboard-70/40;
}
#code-mirror-override .cm-matchingBracket {
@apply bg-primary/20; @apply bg-primary/20;
} mix-blend-mode: lighten;
.dark #code-mirror-override .cm-matchingBracket {
@apply bg-chalkboard-70/60;
} }
#code-mirror-override .cm-gutters { #code-mirror-override .cm-gutters {
@ -189,8 +171,22 @@ code {
@apply caret-chalkboard-10; @apply caret-chalkboard-10;
} }
#code-mirror-override .cm-focused { #code-mirror-override .cm-focused .cm-cursor {
outline: none; width: 0px;
}
#code-mirror-override .cm-cursor {
display: block;
width: 1ch;
@apply mix-blend-multiply;
@apply border-l-primary;
}
.dark #code-mirror-override .cm-cursor {
@apply border-l-chalkboard-10;
}
#code-mirror-override.blink .cm-cursor {
animation: blink 1200ms ease-out infinite;
} }
@keyframes blink { @keyframes blink {
@ -253,10 +249,3 @@ code {
.cm-ghostText * { .cm-ghostText * {
color: rgb(120, 120, 120, 0.8) !important; color: rgb(120, 120, 120, 0.8) !important;
} }
@layer components {
kbd.hotkey {
@apply font-mono text-xs inline-block px-1 py-0.5 rounded-sm;
@apply bg-chalkboard-20 dark:bg-chalkboard-90;
}
}

View File

@ -41,10 +41,7 @@ export class KclManager {
engineCommandManager: EngineCommandManager engineCommandManager: EngineCommandManager
private _defferer = deferExecution((code: string) => { private _defferer = deferExecution((code: string) => {
const ast = this.safeParse(code) const ast = this.safeParse(code)
if (!ast) { if (!ast) return
this.clearAst()
return
}
try { try {
const fmtAndStringify = (ast: Program) => const fmtAndStringify = (ast: Program) =>
JSON.stringify(parse(recast(ast))) JSON.stringify(parse(recast(ast)))
@ -92,6 +89,7 @@ export class KclManager {
return this._kclErrors return this._kclErrors
} }
set kclErrors(kclErrors) { set kclErrors(kclErrors) {
console.log('[lsp] not lsp, actually typescript: ', kclErrors)
this._kclErrors = kclErrors this._kclErrors = kclErrors
let diagnostics = kclErrorsToDiagnostics(kclErrors) let diagnostics = kclErrorsToDiagnostics(kclErrors)
editorManager.addDiagnostics(diagnostics) editorManager.addDiagnostics(diagnostics)
@ -148,18 +146,6 @@ export class KclManager {
this._executeCallback = callback this._executeCallback = callback
} }
clearAst() {
this._ast = {
body: [],
start: 0,
end: 0,
nonCodeMeta: {
nonCodeNodes: {},
start: [],
},
}
}
safeParse(code: string): Program | null { safeParse(code: string): Program | null {
try { try {
const ast = parse(code) const ast = parse(code)
@ -307,20 +293,14 @@ export class KclManager {
if (!force) return this._defferer(codeManager.code) if (!force) return this._defferer(codeManager.code)
const ast = this.safeParse(codeManager.code) const ast = this.safeParse(codeManager.code)
if (!ast) { if (!ast) return
this.clearAst()
return
}
this.ast = { ...ast } this.ast = { ...ast }
return this.executeAst(ast, zoomToFit) return this.executeAst(ast, zoomToFit)
} }
format() { format() {
const originalCode = codeManager.code const originalCode = codeManager.code
const ast = this.safeParse(originalCode) const ast = this.safeParse(originalCode)
if (!ast) { if (!ast) return
this.clearAst()
return
}
const code = recast(ast) const code = recast(ast)
if (originalCode === code) return if (originalCode === code) return
@ -384,55 +364,18 @@ export class KclManager {
return this?.engineCommandManager?.defaultPlanes return this?.engineCommandManager?.defaultPlanes
} }
showPlanes(all = false) { showPlanes() {
if (!this.defaultPlanes) return Promise.all([]) if (!this.defaultPlanes) return
const thePromises = [ void this.engineCommandManager.setPlaneHidden(this.defaultPlanes.xy, false)
this.engineCommandManager.setPlaneHidden(this.defaultPlanes.xy, false), void this.engineCommandManager.setPlaneHidden(this.defaultPlanes.yz, false)
this.engineCommandManager.setPlaneHidden(this.defaultPlanes.yz, false), void this.engineCommandManager.setPlaneHidden(this.defaultPlanes.xz, false)
this.engineCommandManager.setPlaneHidden(this.defaultPlanes.xz, false),
]
if (all) {
thePromises.push(
this.engineCommandManager.setPlaneHidden(
this.defaultPlanes.negXy,
false
)
)
thePromises.push(
this.engineCommandManager.setPlaneHidden(
this.defaultPlanes.negYz,
false
)
)
thePromises.push(
this.engineCommandManager.setPlaneHidden(
this.defaultPlanes.negXz,
false
)
)
}
return Promise.all(thePromises)
} }
hidePlanes(all = false) { hidePlanes() {
if (!this.defaultPlanes) return Promise.all([]) if (!this.defaultPlanes) return
const thePromises = [ void this.engineCommandManager.setPlaneHidden(this.defaultPlanes.xy, true)
this.engineCommandManager.setPlaneHidden(this.defaultPlanes.xy, true), void this.engineCommandManager.setPlaneHidden(this.defaultPlanes.yz, true)
this.engineCommandManager.setPlaneHidden(this.defaultPlanes.yz, true), void this.engineCommandManager.setPlaneHidden(this.defaultPlanes.xz, true)
this.engineCommandManager.setPlaneHidden(this.defaultPlanes.xz, true),
]
if (all) {
thePromises.push(
this.engineCommandManager.setPlaneHidden(this.defaultPlanes.negXy, true)
)
thePromises.push(
this.engineCommandManager.setPlaneHidden(this.defaultPlanes.negYz, true)
)
thePromises.push(
this.engineCommandManager.setPlaneHidden(this.defaultPlanes.negXz, true)
)
}
return Promise.all(thePromises)
} }
defaultSelectionFilter() { defaultSelectionFilter() {
defaultSelectionFilter(this.programMemory, this.engineCommandManager) defaultSelectionFilter(this.programMemory, this.engineCommandManager)

View File

@ -51,7 +51,13 @@ const mySketch001 = startSketchOn('XY')
}, },
}, },
], ],
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
xAxis: { x: 1, y: 0, z: 0 },
yAxis: { x: 0, y: 1, z: 0 },
zAxis: { x: 0, y: 0, z: 1 },
id: expect.any(String), id: expect.any(String),
entityId: expect.any(String),
__meta: [{ sourceRange: [46, 71] }], __meta: [{ sourceRange: [46, 71] }],
}) })
}) })
@ -73,6 +79,8 @@ const mySketch001 = startSketchOn('XY')
value: [ value: [
{ {
type: 'extrudePlane', type: 'extrudePlane',
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
faceId: expect.any(String), faceId: expect.any(String),
name: '', name: '',
id: expect.any(String), id: expect.any(String),
@ -80,6 +88,8 @@ const mySketch001 = startSketchOn('XY')
}, },
{ {
type: 'extrudePlane', type: 'extrudePlane',
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
faceId: expect.any(String), faceId: expect.any(String),
name: '', name: '',
id: expect.any(String), id: expect.any(String),
@ -109,6 +119,8 @@ const mySketch001 = startSketchOn('XY')
}, },
], ],
height: 2, height: 2,
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
xAxis: { x: 1, y: 0, z: 0 }, xAxis: { x: 1, y: 0, z: 0 },
yAxis: { x: 0, y: 1, z: 0 }, yAxis: { x: 0, y: 1, z: 0 },
zAxis: { x: 0, y: 0, z: 1 }, zAxis: { x: 0, y: 0, z: 1 },
@ -150,6 +162,8 @@ const sk2 = startSketchOn('XY')
value: [ value: [
{ {
type: 'extrudePlane', type: 'extrudePlane',
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
faceId: expect.any(String), faceId: expect.any(String),
name: '', name: '',
id: expect.any(String), id: expect.any(String),
@ -157,6 +171,8 @@ const sk2 = startSketchOn('XY')
}, },
{ {
type: 'extrudePlane', type: 'extrudePlane',
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
faceId: expect.any(String), faceId: expect.any(String),
name: 'p', name: 'p',
id: expect.any(String), id: expect.any(String),
@ -164,6 +180,8 @@ const sk2 = startSketchOn('XY')
}, },
{ {
type: 'extrudePlane', type: 'extrudePlane',
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
faceId: expect.any(String), faceId: expect.any(String),
name: '', name: '',
id: expect.any(String), id: expect.any(String),
@ -203,6 +221,8 @@ const sk2 = startSketchOn('XY')
}, },
], ],
height: 2, height: 2,
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
xAxis: { x: 1, y: 0, z: 0 }, xAxis: { x: 1, y: 0, z: 0 },
yAxis: { x: 0, y: 1, z: 0 }, yAxis: { x: 0, y: 1, z: 0 },
zAxis: { x: 0, y: 0, z: 1 }, zAxis: { x: 0, y: 0, z: 1 },
@ -216,6 +236,8 @@ const sk2 = startSketchOn('XY')
value: [ value: [
{ {
type: 'extrudePlane', type: 'extrudePlane',
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
faceId: expect.any(String), faceId: expect.any(String),
name: '', name: '',
id: expect.any(String), id: expect.any(String),
@ -223,6 +245,8 @@ const sk2 = startSketchOn('XY')
}, },
{ {
type: 'extrudePlane', type: 'extrudePlane',
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
faceId: expect.any(String), faceId: expect.any(String),
name: 'p', name: 'p',
id: expect.any(String), id: expect.any(String),
@ -230,6 +254,8 @@ const sk2 = startSketchOn('XY')
}, },
{ {
type: 'extrudePlane', type: 'extrudePlane',
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
faceId: expect.any(String), faceId: expect.any(String),
name: '', name: '',
id: expect.any(String), id: expect.any(String),
@ -269,6 +295,8 @@ const sk2 = startSketchOn('XY')
}, },
], ],
height: 2, height: 2,
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
xAxis: { x: 1, y: 0, z: 0 }, xAxis: { x: 1, y: 0, z: 0 },
yAxis: { x: 0, y: 1, z: 0 }, yAxis: { x: 0, y: 1, z: 0 },
zAxis: { x: 0, y: 0, z: 1 }, zAxis: { x: 0, y: 0, z: 1 },

View File

@ -22,7 +22,7 @@ export default class CodeManager {
return return
} }
const storedCode = safeLSGetItem(PERSIST_CODE_TOKEN) const storedCode = safeLSGetItem(PERSIST_CODE_TOKEN) || ''
// TODO #819 remove zustand persistence logic in a few months // TODO #819 remove zustand persistence logic in a few months
// short term migration, shouldn't make a difference for tauri app users // short term migration, shouldn't make a difference for tauri app users
// anyway since that's filesystem based. // anyway since that's filesystem based.
@ -68,9 +68,7 @@ export default class CodeManager {
this._currentFilePath = path this._currentFilePath = path
} }
/** // This updates the code state and calls the updateState function.
* This updates the code state and calls the updateState function.
*/
updateCodeState(code: string): void { updateCodeState(code: string): void {
if (this._code !== code) { if (this._code !== code) {
this.code = code this.code = code
@ -78,9 +76,7 @@ export default class CodeManager {
} }
} }
/** // Update the code in the editor.
* Update the code in the editor.
*/
updateCodeEditor(code: string): void { updateCodeEditor(code: string): void {
this.code = code this.code = code
if (editorManager.editorView) { if (editorManager.editorView) {
@ -94,9 +90,7 @@ export default class CodeManager {
} }
} }
/** // Update the code, state, and the code the code mirror editor sees.
* Update the code, state, and the code the code mirror editor sees.
*/
updateCodeStateEditor(code: string): void { updateCodeStateEditor(code: string): void {
if (this._code !== code) { if (this._code !== code) {
this.code = code this.code = code

View File

@ -177,7 +177,13 @@ const newVar = myVar + 1`
}, },
}, },
], ],
position: [0, 0, 0],
rotation: [0, 0, 0, 1],
xAxis: { x: 1, y: 0, z: 0 },
yAxis: { x: 0, y: 1, z: 0 },
zAxis: { x: 0, y: 0, z: 1 },
id: expect.any(String), id: expect.any(String),
entityId: expect.any(String),
__meta: [{ sourceRange: [39, 63] }], __meta: [{ sourceRange: [39, 63] }],
}) })
}) })

Some files were not shown because too many files have changed in this diff Show More