Compare commits
184 Commits
multi-sket
...
franknoiro
Author | SHA1 | Date | |
---|---|---|---|
e1da72a0ae | |||
ec2d1999a7 | |||
95683f1cc1 | |||
f48f1c21c1 | |||
5cdf2de89a | |||
543e809739 | |||
61b669cf4e | |||
75f1aaa824 | |||
f4848d7dea | |||
a0167f6ba6 | |||
e5a26c42e6 | |||
9c87b124d9 | |||
21389c089d | |||
29f57be8c1 | |||
cd55f07619 | |||
baf7d3dd9d | |||
54a9a50969 | |||
2830c750fa | |||
d3160cd85a | |||
fd1b4c3a32 | |||
b0a41c31ac | |||
5825ba575c | |||
e5bec2140e | |||
7bf6bc3048 | |||
22f9df73ed | |||
834472e0a6 | |||
bcdf6e314f | |||
55e9845ade | |||
d61cf882c1 | |||
874d19cbfd | |||
9dcc955760 | |||
9b594efe53 | |||
7b9f40c4cb | |||
81b79da90f | |||
2ad5a880fa | |||
b57a9ba54c | |||
b32f5c1d4e | |||
b6d4cc7a4e | |||
43a34b191e | |||
19a93e8deb | |||
b8c623e1ec | |||
4006c28479 | |||
8c932fdb8d | |||
a74c715c01 | |||
1ac39d95f2 | |||
41b1ec94fa | |||
525c803888 | |||
2ee1c78aad | |||
dc21034b86 | |||
1684786659 | |||
12505b4398 | |||
115f2fdea2 | |||
0df28abc4b | |||
1e07ea4986 | |||
f34c23d203 | |||
5295f0ae7d | |||
07a90b3171 | |||
54936f6932 | |||
6e296af507 | |||
60c152bf14 | |||
59de494125 | |||
1c44b01d16 | |||
789fb83a5d | |||
63fc287742 | |||
5e1b91b0e7 | |||
a1c2e817a4 | |||
6ed4e72e1d | |||
6477011c0f | |||
cd9dc3e6a5 | |||
4b424de5a6 | |||
0f1b94f8b9 | |||
8879f488bb | |||
67d0fb76f6 | |||
fff3c58560 | |||
8880df4fbb | |||
d94017c5e3 | |||
8fe91259fa | |||
57d4204f47 | |||
ee601f93bf | |||
b0b48a2e9f | |||
46f940ead5 | |||
014cedb2cc | |||
2375f900b9 | |||
9fd4fd0dd8 | |||
ee5037bf35 | |||
881745e131 | |||
49fce9ed57 | |||
fb7b2be427 | |||
2ec68e3c73 | |||
6e2dd53ee0 | |||
f5c262206e | |||
9c9b448705 | |||
615b03aea5 | |||
c3c435348d | |||
d13f7fd508 | |||
af842aeded | |||
0d4b7adf99 | |||
e708b6ee6b | |||
4dd8a25fdd | |||
029799215b | |||
e3b8807d6f | |||
0e5d88df0b | |||
95781143eb | |||
c184a7d4d8 | |||
c38e52fbb7 | |||
ea0a3ac3ba | |||
385589ddf9 | |||
22df47fa96 | |||
a68748abcf | |||
1b8688f274 | |||
397839da84 | |||
ac120838e5 | |||
e6a2ac9c4a | |||
6e7e6e96cf | |||
73e155d79b | |||
a782f26ec2 | |||
01076c3aed | |||
fe512611ac | |||
cba953c245 | |||
54ca6ea0b2 | |||
6a01608c3a | |||
530f15e04a | |||
725e59d987 | |||
54313c9b03 | |||
890d96496c | |||
35999366a7 | |||
2affc7271d | |||
d30fbf8b4b | |||
3f7e776464 | |||
79cff57f43 | |||
1cd2cd82b2 | |||
60e187bd3e | |||
c64175425b | |||
36464e6984 | |||
2f0002e53c | |||
482833c88f | |||
d9d0a72306 | |||
65cd9fab64 | |||
5e41e382ce | |||
1e3cb00092 | |||
d1a2bd01ca | |||
aca13d087b | |||
fcdde3e482 | |||
a1df3d0ffc | |||
1852e6167b | |||
29bf77bb82 | |||
e81b614523 | |||
5a5fe3bb95 | |||
0710f6e5f2 | |||
c9d5633647 | |||
f9419a98b5 | |||
999f72bccf | |||
9dbe74e008 | |||
88d9cdc52b | |||
2dd1f0f213 | |||
b971f3ecf4 | |||
2198bd7580 | |||
5fa1497b75 | |||
ff86e41283 | |||
08e4c03ca7 | |||
c654582137 | |||
6c2fa95a32 | |||
263a4f324d | |||
3160c58d8a | |||
73e26cbb4d | |||
21e2a92f54 | |||
d7f2bfdabe | |||
a76eabbb80 | |||
a82564989e | |||
e69837a411 | |||
7e31f870bf | |||
2f51763df9 | |||
7c4bf8d793 | |||
4747cdcab6 | |||
de73f335fe | |||
a62004da82 | |||
92e0da1f8d | |||
a111473658 | |||
7cfed9bff4 | |||
a30bd185d8 | |||
e8cae630a1 | |||
74ec749560 | |||
ebdaf59d1c | |||
cd68414d54 |
@ -1,3 +1,3 @@
|
|||||||
[codespell]
|
[codespell]
|
||||||
ignore-words-list: crate,everytime,inout,co-ordinate,ot,nwo,absolutey,atleast,ue
|
ignore-words-list: crate,everytime,inout,co-ordinate,ot,nwo,absolutey,atleast,ue,afterall
|
||||||
skip: **/target,node_modules,build,**/Cargo.lock,./docs/kcl/*.md,./src-tauri/gen/schemas
|
skip: **/target,node_modules,build,**/Cargo.lock,./docs/kcl/*.md,./src-tauri/gen/schemas
|
||||||
|
37
.github/ISSUE_TEMPLATE/cryptic_error.yml
vendored
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
name: Cryptic KCL Error
|
||||||
|
description: File a bug report for source code that produces a confusing error
|
||||||
|
title: "[CRYPTIC]: "
|
||||||
|
labels: ["cryptic-error"]
|
||||||
|
assignees: []
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: "Thank you for taking the time to report a confusing error. Please provide as much information as possible to help us resolve it."
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: kcl
|
||||||
|
attributes:
|
||||||
|
label: Paste minimal KCL source that produces a cryptic error
|
||||||
|
description: Minimal KCL reproducer that produces a cryptic error
|
||||||
|
placeholder: "const ..."
|
||||||
|
render: javascript
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: expected-behavior
|
||||||
|
attributes:
|
||||||
|
label: Expected Behavior
|
||||||
|
description: Description of what you expected to happen (if you know).
|
||||||
|
placeholder: "I expected that..."
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: additional-context
|
||||||
|
attributes:
|
||||||
|
label: Additional Context
|
||||||
|
description: Add any other context about the problem here.
|
||||||
|
placeholder: "Anything else you want to add..."
|
||||||
|
validations:
|
||||||
|
required: false
|
71
.github/workflows/ci.yml
vendored
@ -13,12 +13,18 @@ on:
|
|||||||
# Will checkout the last commit from the default branch (main as of 2023-10-04)
|
# Will checkout the last commit from the default branch (main as of 2023-10-04)
|
||||||
|
|
||||||
env:
|
env:
|
||||||
|
CUT_RELEASE_PR: ${{ github.event_name == 'pull_request' && (contains(github.event.pull_request.title, 'Cut release v')) }}
|
||||||
BUILD_RELEASE: ${{ github.event_name == 'release' || github.event_name == 'schedule' || github.event_name == 'pull_request' && (contains(github.event.pull_request.title, 'Cut release v')) }}
|
BUILD_RELEASE: ${{ github.event_name == 'release' || github.event_name == 'schedule' || github.event_name == 'pull_request' && (contains(github.event.pull_request.title, 'Cut release v')) }}
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
actions: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check-format:
|
check-format:
|
||||||
runs-on: 'ubuntu-latest'
|
runs-on: 'ubuntu-latest'
|
||||||
@ -84,7 +90,38 @@ jobs:
|
|||||||
|
|
||||||
- run: yarn simpleserver:ci
|
- run: yarn simpleserver:ci
|
||||||
|
|
||||||
- run: yarn test:nowatch
|
- name: Install Chromium Browser
|
||||||
|
run: yarn playwright install chromium --with-deps
|
||||||
|
|
||||||
|
- name: run unit tests
|
||||||
|
run: yarn test:nowatch
|
||||||
|
env:
|
||||||
|
VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
||||||
|
|
||||||
|
- name: check for changes
|
||||||
|
id: git-check
|
||||||
|
run: |
|
||||||
|
git add src/lang/std/artifactMapGraphs
|
||||||
|
if git status src/lang/std/artifactMapGraphs | grep -q "Changes to be committed"
|
||||||
|
then echo "modified=true" >> $GITHUB_OUTPUT
|
||||||
|
else echo "modified=false" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
- name: Commit changes, if any
|
||||||
|
if: steps.git-check.outputs.modified == 'true'
|
||||||
|
run: |
|
||||||
|
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
git config --local user.name "github-actions[bot]"
|
||||||
|
git remote set-url origin https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git
|
||||||
|
git fetch origin
|
||||||
|
echo ${{ github.head_ref }}
|
||||||
|
git checkout ${{ github.head_ref }}
|
||||||
|
# TODO when webkit works on ubuntu remove the os part of the commit message
|
||||||
|
git commit -am "Look at this (photo)Graph *in the voice of Nickelback*" || true
|
||||||
|
git push
|
||||||
|
git push origin ${{ github.head_ref }}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
prepare-json-files:
|
prepare-json-files:
|
||||||
@ -110,8 +147,14 @@ jobs:
|
|||||||
echo "$(jq --arg name 'Zoo Modeling App (Nightly)' \
|
echo "$(jq --arg name 'Zoo Modeling App (Nightly)' \
|
||||||
'.productName=$name' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json
|
'.productName=$name' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json
|
||||||
|
|
||||||
|
- name: Set updater test version
|
||||||
|
if: ${{ env.CUT_RELEASE_PR == 'true' }}
|
||||||
|
run: |
|
||||||
|
echo "$(jq --arg url 'https://dl.zoo.dev/releases/modeling-app/test/last_update.json' \
|
||||||
|
'.plugins.updater.endpoints[]=$url' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v3
|
||||||
if: github.event_name == 'schedule'
|
if: ${{ github.event_name == 'schedule' || env.CUT_RELEASE_PR == 'true' }}
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
package.json
|
package.json
|
||||||
@ -377,6 +420,30 @@ jobs:
|
|||||||
E2E_TAURI_ENABLED: true
|
E2E_TAURI_ENABLED: true
|
||||||
TS_NODE_COMPILER_OPTIONS: '{"module": "commonjs"}'
|
TS_NODE_COMPILER_OPTIONS: '{"module": "commonjs"}'
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
if: ${{ env.CUT_RELEASE_PR == 'true' }}
|
||||||
|
|
||||||
|
- name: Copy updated .json file for updater test
|
||||||
|
if: ${{ env.CUT_RELEASE_PR == 'true' }}
|
||||||
|
run: |
|
||||||
|
ls -l artifact
|
||||||
|
cp artifact/src-tauri/tauri.release.conf.json src-tauri/tauri.release.conf.json
|
||||||
|
cat src-tauri/tauri.release.conf.json
|
||||||
|
|
||||||
|
- name: Build the app (release, updater test)
|
||||||
|
if: ${{ env.CUT_RELEASE_PR == 'true' && matrix.os != 'ubuntu-latest' }}
|
||||||
|
env:
|
||||||
|
TAURI_CONF_ARGS: "-c ${{ matrix.os == 'windows-latest' && 'src-tauri\\tauri.release.conf.json' || 'src-tauri/tauri.release.conf.json' }}"
|
||||||
|
TAURI_BUNDLE_ARGS: "-b ${{ matrix.os == 'windows-latest' && 'msi' || 'dmg' }}"
|
||||||
|
run: "yarn tauri build ${{ env.TAURI_CONF_ARGS }} ${{ env.TAURI_BUNDLE_ARGS }} ${{ env.TAURI_ARGS_MACOS }}"
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
if: ${{ env.CUT_RELEASE_PR == 'true' && matrix.os != 'ubuntu-latest' }}
|
||||||
|
with:
|
||||||
|
path: "${{ matrix.os == 'macos-14' && 'src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg' || 'src-tauri/target/release/bundle/msi/*.msi' }}"
|
||||||
|
name: updater-test
|
||||||
|
|
||||||
|
|
||||||
publish-apps-release:
|
publish-apps-release:
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
49
.github/workflows/generate-machine-api-types.yml
vendored
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
name: generate machine-api types
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'openapi/machine-api.json'
|
||||||
|
- '.github/workflows/generate-machine-api-types.yml'
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
jobs:
|
||||||
|
generate:
|
||||||
|
runs-on: 'ubuntu-latest'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'yarn'
|
||||||
|
- run: yarn install
|
||||||
|
- run: yarn generate:machine-api
|
||||||
|
- run: yarn fmt
|
||||||
|
- name: check for changes
|
||||||
|
id: git-check
|
||||||
|
run: |
|
||||||
|
git add .
|
||||||
|
if git status | grep -q "Changes to be committed"
|
||||||
|
then echo "modified=true" >> $GITHUB_OUTPUT
|
||||||
|
else echo "modified=false" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
- name: Commit changes, if any
|
||||||
|
if: steps.git-check.outputs.modified == 'true'
|
||||||
|
run: |
|
||||||
|
git add .
|
||||||
|
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
git config --local user.name "github-actions[bot]"
|
||||||
|
git remote set-url origin https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git
|
||||||
|
git fetch origin
|
||||||
|
echo ${{ github.head_ref }}
|
||||||
|
git checkout ${{ github.head_ref }}
|
||||||
|
git commit -am "New machine-api types" || true
|
||||||
|
git push
|
||||||
|
git push origin ${{ github.head_ref }}
|
||||||
|
|
192
.github/workflows/playwright.yml
vendored
@ -34,8 +34,13 @@ jobs:
|
|||||||
- 'src/wasm-lib/**'
|
- 'src/wasm-lib/**'
|
||||||
|
|
||||||
playwright-ubuntu:
|
playwright-ubuntu:
|
||||||
timeout-minutes: 60
|
timeout-minutes: 30
|
||||||
runs-on: ubuntu-latest-8-cores
|
runs-on: ubuntu-latest-8-cores
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
shardIndex: [1, 2, 3, 4]
|
||||||
|
shardTotal: [4]
|
||||||
needs: check-rust-changes
|
needs: check-rust-changes
|
||||||
steps:
|
steps:
|
||||||
- name: Tune GitHub-hosted runner network
|
- name: Tune GitHub-hosted runner network
|
||||||
@ -83,6 +88,20 @@ jobs:
|
|||||||
uses: Swatinem/rust-cache@v2
|
uses: Swatinem/rust-cache@v2
|
||||||
with:
|
with:
|
||||||
workspaces: './src/wasm-lib'
|
workspaces: './src/wasm-lib'
|
||||||
|
- name: Install vector
|
||||||
|
run: |
|
||||||
|
curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev > /tmp/vector.sh
|
||||||
|
chmod +x /tmp/vector.sh
|
||||||
|
/tmp/vector.sh -y -no-modify-path
|
||||||
|
mkdir -p /tmp/vector
|
||||||
|
cp .github/workflows/vector.toml /tmp/vector.toml
|
||||||
|
sed -i "s#GITHUB_WORKFLOW#${GITHUB_WORKFLOW}#g" /tmp/vector.toml
|
||||||
|
sed -i "s#GITHUB_REPOSITORY#${GITHUB_REPOSITORY}#g" /tmp/vector.toml
|
||||||
|
sed -i "s#GITHUB_SHA#${GITHUB_SHA}#g" /tmp/vector.toml
|
||||||
|
sed -i "s#GITHUB_REF_NAME#${GITHUB_REF_NAME}#g" /tmp/vector.toml
|
||||||
|
sed -i "s#GH_ACTIONS_AXIOM_TOKEN#${{secrets.GH_ACTIONS_AXIOM_TOKEN}}#g" /tmp/vector.toml
|
||||||
|
cat /tmp/vector.toml
|
||||||
|
${HOME}/.vector/bin/vector --config /tmp/vector.toml &
|
||||||
- name: Build Wasm (because rust diff)
|
- name: Build Wasm (because rust diff)
|
||||||
if: needs.check-rust-changes.outputs.rust-changed == 'true'
|
if: needs.check-rust-changes.outputs.rust-changed == 'true'
|
||||||
run: yarn build:wasm
|
run: yarn build:wasm
|
||||||
@ -92,13 +111,19 @@ jobs:
|
|||||||
- name: build web
|
- name: build web
|
||||||
run: yarn build:local
|
run: yarn build:local
|
||||||
- name: Run ubuntu/chrome snapshots
|
- name: Run ubuntu/chrome snapshots
|
||||||
continue-on-error: true
|
|
||||||
run: |
|
run: |
|
||||||
yarn playwright test --project="Google Chrome" --update-snapshots e2e/playwright/snapshot-tests.spec.ts
|
yarn playwright test --project="Google Chrome" --retries="3" --update-snapshots --grep=@snapshot --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
|
||||||
env:
|
env:
|
||||||
CI: true
|
CI: true
|
||||||
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
||||||
snapshottoken: ${{ secrets.KITTYCAD_API_TOKEN }}
|
snapshottoken: ${{ secrets.KITTYCAD_API_TOKEN }}
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: playwright-report-ubuntu-snapshot-${{ matrix.shardIndex }}-${{ github.sha }}
|
||||||
|
path: playwright-report/
|
||||||
|
retention-days: 30
|
||||||
|
overwrite: true
|
||||||
- name: Clean up test-results
|
- name: Clean up test-results
|
||||||
if: always()
|
if: always()
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
@ -129,7 +154,7 @@ jobs:
|
|||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
if: steps.git-check.outputs.modified == 'true'
|
if: steps.git-check.outputs.modified == 'true'
|
||||||
with:
|
with:
|
||||||
name: playwright-report-ubuntu-${{ github.sha }}
|
name: playwright-report-ubuntu-${{ matrix.shardIndex }}-${{ github.sha }}
|
||||||
path: playwright-report/
|
path: playwright-report/
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
# if have previous run results, use them
|
# if have previous run results, use them
|
||||||
@ -137,47 +162,85 @@ jobs:
|
|||||||
if: always()
|
if: always()
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
name: test-results-ubuntu-${{ github.sha }}
|
name: test-results-ubuntu-${{ matrix.shardIndex }}-${{ github.sha }}
|
||||||
path: test-results/
|
path: test-results/
|
||||||
- name: Run ubuntu/chrome flow retry failures
|
- name: Run ubuntu/chrome flow (with retries)
|
||||||
id: retry
|
id: retry
|
||||||
if: always()
|
if: always()
|
||||||
run: |
|
run: |
|
||||||
if [[ -d "test-results" ]];
|
if [[ ! -f "test-results/.last-run.json" ]]; then
|
||||||
then if [[ $(ls -1 "test-results" | wc -l) != "0" ]];
|
# if no last run artifact, than run plawright normally
|
||||||
then echo "retried=true" >> $GITHUB_OUTPUT;
|
echo "run playwright normally"
|
||||||
else echo "retried=false" >> $GITHUB_OUTPUT; exit 0;
|
yarn playwright test --project="Google Chrome" --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} --grep-invert=@snapshot || true
|
||||||
fi;
|
# # send to axiom
|
||||||
else echo "retried=false" >> $GITHUB_OUTPUT; exit 0;
|
node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
|
||||||
fi;
|
fi
|
||||||
yarn playwright test --project="Google Chrome" --last-failed e2e/playwright/flow-tests.spec.ts
|
|
||||||
env:
|
retry=1
|
||||||
CI: true
|
max_retrys=4
|
||||||
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
|
||||||
- name: Run ubuntu/chrome flow
|
# retry failed tests, doing our own retries because using inbuilt playwright retries causes connection issues
|
||||||
if: steps.retry.outputs.retried == 'false'
|
while [[ $retry -le $max_retrys ]]; do
|
||||||
run: yarn playwright test --project="Google Chrome" e2e/playwright/flow-tests.spec.ts
|
if [[ -f "test-results/.last-run.json" ]]; then
|
||||||
|
failed_tests=$(jq '.failedTests | length' test-results/.last-run.json)
|
||||||
|
if [[ $failed_tests -gt 0 ]]; then
|
||||||
|
echo "retried=true" >>$GITHUB_OUTPUT
|
||||||
|
echo "run playwright with last failed tests and retry $retry"
|
||||||
|
yarn playwright test --project="Google Chrome" --last-failed --grep-invert=@snapshot || true
|
||||||
|
# send to axiom
|
||||||
|
node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
|
||||||
|
retry=$((retry + 1))
|
||||||
|
else
|
||||||
|
echo "retried=false" >>$GITHUB_OUTPUT
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "retried=false" >>$GITHUB_OUTPUT
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "retried=false" >>$GITHUB_OUTPUT
|
||||||
|
|
||||||
|
if [[ -f "test-results/.last-run.json" ]]; then
|
||||||
|
failed_tests=$(jq '.failedTests | length' test-results/.last-run.json)
|
||||||
|
if [[ $failed_tests -gt 0 ]]; then
|
||||||
|
# if it still fails after 3 retrys, then fail the job
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
env:
|
env:
|
||||||
CI: true
|
CI: true
|
||||||
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
||||||
|
- name: send to axiom
|
||||||
|
if: always()
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
node playwrightProcess.mjs | tee /tmp/github-actions.log
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
if: always()
|
if: always()
|
||||||
with:
|
with:
|
||||||
name: test-results-ubuntu-${{ github.sha }}
|
name: test-results-ubuntu-${{ matrix.shardIndex }}-${{ github.sha }}
|
||||||
path: test-results/
|
path: test-results/
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
overwrite: true
|
overwrite: true
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
if: always()
|
if: always()
|
||||||
with:
|
with:
|
||||||
name: playwright-report-ubuntu-${{ github.sha }}
|
name: playwright-report-ubuntu-${{ matrix.shardIndex }}-${{ github.sha }}
|
||||||
path: playwright-report/
|
path: playwright-report/
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|
||||||
playwright-macos:
|
playwright-macos:
|
||||||
timeout-minutes: 60
|
timeout-minutes: 30
|
||||||
runs-on: macos-14-large
|
runs-on: macos-14
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
shardIndex: [1, 2, 3, 4]
|
||||||
|
shardTotal: [4]
|
||||||
needs: check-rust-changes
|
needs: check-rust-changes
|
||||||
steps:
|
steps:
|
||||||
- name: Tune GitHub-hosted runner network
|
- name: Tune GitHub-hosted runner network
|
||||||
@ -226,6 +289,20 @@ jobs:
|
|||||||
uses: Swatinem/rust-cache@v2
|
uses: Swatinem/rust-cache@v2
|
||||||
with:
|
with:
|
||||||
workspaces: './src/wasm-lib'
|
workspaces: './src/wasm-lib'
|
||||||
|
- name: Install vector
|
||||||
|
run: |
|
||||||
|
curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev > /tmp/vector.sh
|
||||||
|
chmod +x /tmp/vector.sh
|
||||||
|
/tmp/vector.sh -y -no-modify-path
|
||||||
|
mkdir -p /tmp/vector
|
||||||
|
cp .github/workflows/vector.toml /tmp/vector.toml
|
||||||
|
sed -i "" "s#GITHUB_WORKFLOW#${GITHUB_WORKFLOW}#g" /tmp/vector.toml
|
||||||
|
sed -i "" "s#GITHUB_REPOSITORY#${GITHUB_REPOSITORY}#g" /tmp/vector.toml
|
||||||
|
sed -i "" "s#GITHUB_SHA#${GITHUB_SHA}#g" /tmp/vector.toml
|
||||||
|
sed -i "" "s#GITHUB_REF_NAME#${GITHUB_REF_NAME}#g" /tmp/vector.toml
|
||||||
|
sed -i "" "s#GH_ACTIONS_AXIOM_TOKEN#${{secrets.GH_ACTIONS_AXIOM_TOKEN}}#g" /tmp/vector.toml
|
||||||
|
cat /tmp/vector.toml
|
||||||
|
${HOME}/.vector/bin/vector --config /tmp/vector.toml &
|
||||||
- name: Build Wasm (because rust diff)
|
- name: Build Wasm (because rust diff)
|
||||||
if: needs.check-rust-changes.outputs.rust-changed == 'true'
|
if: needs.check-rust-changes.outputs.rust-changed == 'true'
|
||||||
run: yarn build:wasm
|
run: yarn build:wasm
|
||||||
@ -239,43 +316,68 @@ jobs:
|
|||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
name: test-results-macos-${{ github.sha }}
|
name: test-results-macos-${{ matrix.shardIndex }}-${{ github.sha }}
|
||||||
path: test-results/
|
path: test-results/
|
||||||
- name: Run macos/safari flow retry failures
|
- name: Run macos/safari flow (with retries)
|
||||||
id: retry
|
id: retry
|
||||||
if: always()
|
if: always()
|
||||||
run: |
|
run: |
|
||||||
if [[ -d "test-results" ]];
|
if [[ ! -f "test-results/.last-run.json" ]]; then
|
||||||
then if [[ $(ls -1 "test-results" | wc -l) != "0" ]];
|
# if no last run artifact, than run plawright normally
|
||||||
then echo "retried=true" >> $GITHUB_OUTPUT;
|
echo "run playwright normally"
|
||||||
else echo "retried=false" >> $GITHUB_OUTPUT; exit 0;
|
yarn playwright test --project="webkit" --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} --grep-invert=@snapshot || true
|
||||||
fi;
|
# # send to axiom
|
||||||
else echo "retried=false" >> $GITHUB_OUTPUT; exit 0;
|
node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
|
||||||
fi;
|
fi
|
||||||
yarn playwright test --project="webkit" --last-failed e2e/playwright/flow-tests.spec.ts
|
|
||||||
env:
|
retry=1
|
||||||
CI: true
|
max_retrys=4
|
||||||
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
|
||||||
- name: Run macos/safari flow
|
# retry failed tests, doing our own retries because using inbuilt playwright retries causes connection issues
|
||||||
if: steps.retry.outputs.retried == 'false'
|
while [[ $retry -le $max_retrys ]]; do
|
||||||
# webkit doesn't work on Ubuntu because of the same reason tauri doesn't (webRTC issues)
|
if [[ -f "test-results/.last-run.json" ]]; then
|
||||||
# TODO remove this and the matrix and run all tests on ubuntu when this is fixed
|
failed_tests=$(jq '.failedTests | length' test-results/.last-run.json)
|
||||||
run: yarn playwright test --project="webkit" e2e/playwright/flow-tests.spec.ts
|
if [[ $failed_tests -gt 0 ]]; then
|
||||||
|
echo "retried=true" >>$GITHUB_OUTPUT
|
||||||
|
echo "run playwright with last failed tests and retry $retry"
|
||||||
|
yarn playwright test --project="webkit" --last-failed --grep-invert=@snapshot || true
|
||||||
|
# send to axiom
|
||||||
|
node playwrightProcess.mjs | tee /tmp/github-actions.log > /dev/null 2>&1
|
||||||
|
retry=$((retry + 1))
|
||||||
|
else
|
||||||
|
echo "retried=false" >>$GITHUB_OUTPUT
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "retried=false" >>$GITHUB_OUTPUT
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "retried=false" >>$GITHUB_OUTPUT
|
||||||
|
|
||||||
|
if [[ -f "test-results/.last-run.json" ]]; then
|
||||||
|
failed_tests=$(jq '.failedTests | length' test-results/.last-run.json)
|
||||||
|
if [[ $failed_tests -gt 0 ]]; then
|
||||||
|
# if it still fails after 3 retrys, then fail the job
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
env:
|
env:
|
||||||
CI: true
|
CI: true
|
||||||
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
with:
|
with:
|
||||||
name: test-results-macos-${{ github.sha }}
|
name: test-results-macos-${{ matrix.shardIndex }}-${{ github.sha }}
|
||||||
path: test-results/
|
path: test-results/
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
overwrite: true
|
overwrite: true
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
with:
|
with:
|
||||||
name: playwright-report-macos-${{ github.sha }}
|
name: playwright-report-macos-${{ matrix.shardIndex }}-${{ github.sha }}
|
||||||
path: playwright-report/
|
path: playwright-report/
|
||||||
retention-days: 30
|
retention-days: 30
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|
||||||
|
4
.gitignore
vendored
@ -39,6 +39,7 @@ src/wasm-lib/grackle/test_json_output
|
|||||||
e2e/playwright/playwright-secrets.env
|
e2e/playwright/playwright-secrets.env
|
||||||
e2e/playwright/temp1.png
|
e2e/playwright/temp1.png
|
||||||
e2e/playwright/temp2.png
|
e2e/playwright/temp2.png
|
||||||
|
e2e/playwright/temp3.png
|
||||||
# exports from snapshot-tests.spec.ts "exports of each format should work"
|
# exports from snapshot-tests.spec.ts "exports of each format should work"
|
||||||
e2e/playwright/export-snapshots/*
|
e2e/playwright/export-snapshots/*
|
||||||
!e2e/playwright/export-snapshots/*.png
|
!e2e/playwright/export-snapshots/*.png
|
||||||
@ -48,6 +49,7 @@ e2e/playwright/export-snapshots/*
|
|||||||
/playwright-report/
|
/playwright-report/
|
||||||
/blob-report/
|
/blob-report/
|
||||||
/playwright/.cache/
|
/playwright/.cache/
|
||||||
|
/src/lang/std/artifactMapCache
|
||||||
|
|
||||||
|
|
||||||
## generated files
|
## generated files
|
||||||
@ -58,3 +60,5 @@ src/wasm-lib/grackle/stdlib_cube_partial.json
|
|||||||
Mac_App_Distribution.provisionprofile
|
Mac_App_Distribution.provisionprofile
|
||||||
|
|
||||||
*.tsbuildinfo
|
*.tsbuildinfo
|
||||||
|
|
||||||
|
venv
|
||||||
|
38
README.md
@ -124,20 +124,40 @@ Before you submit a contribution PR to this repo, please ensure that:
|
|||||||
|
|
||||||
## Release a new version
|
## Release a new version
|
||||||
|
|
||||||
1. Bump the versions by running `./make-realease.sh` while on a fresh pull of main
|
#### 1. Bump the versions by running `./make-release.sh` and create a Cut Release PR
|
||||||
|
|
||||||
That will create the branch with the updated json files for you.
|
That will create the branch with the updated json files for you:
|
||||||
run `./make-release.sh` for a patch update
|
- run `./make-release.sh` or `./make-release.sh patch` for a patch update;
|
||||||
run `./make-release.sh "minor"` for minor
|
- run `./make-release.sh minor` for minor; or
|
||||||
run `./make-release.sh "major"` for major
|
- run `./make-release.sh major` for major.
|
||||||
|
|
||||||
After it runs you should just need to push the push the branch and open a PR (it will suggest a changelog for you too, delete any that are not user facing)
|
After it runs you should just need the push the branch and open a PR.
|
||||||
|
|
||||||
The PR may serve as a place to discuss the human-readable changelog and extra QA.
|
**Important:** It needs to be prefixed with `Cut release v` to build in release mode and a few other things to test in the best context possible, the intent would be for instance to have `Cut release v1.2.3` for the `v1.2.3` release candidate.
|
||||||
|
|
||||||
2. Merge the PR
|
The PR may then serve as a place to discuss the human-readable changelog and extra QA. The `make-release.sh` tool suggests a changelog for you too to be used as PR description, just make sure to delete lines that are not user facing.
|
||||||
|
|
||||||
|
#### 2. Smoke test artifacts from the Cut Release PR
|
||||||
|
|
||||||
|
The release builds can be find under the `artifact` zip, at the very bottom of the `ci` action page for each commit on this branch.
|
||||||
|
|
||||||
|
We don't have a strict process, but click around and check for anything obvious, posting results as comments in the Cut Release PR.
|
||||||
|
|
||||||
|
The other `ci` output in Cut Release PRs is `updater-test`, because we don't have a way to test this fully automated, we have a semi-automated process. Download updater-test zip file, install the app, run it, expect an updater prompt to a dummy v0.99.99, install it and check that the app comes back at that version (on both macOS and Windows).
|
||||||
|
|
||||||
|
#### 3. Merge the Cut Release PR
|
||||||
|
|
||||||
|
This will kick the `create-release` action, that creates a _Draft_ release out of this Cut Release PR merge after less than a minute, with the new version as title and Cut Release PR as description.
|
||||||
|
|
||||||
|
|
||||||
|
#### 4. Publish the release
|
||||||
|
|
||||||
|
Head over to https://github.com/KittyCAD/modeling-app/releases, the draft release corresponding to the merged Cut Release PR should show up at the top as _Draft_. Click on it, verify the content, and hit _Publish_.
|
||||||
|
|
||||||
|
#### 5. Profit
|
||||||
|
|
||||||
|
A new Action kicks in at https://github.com/KittyCAD/modeling-app/actions, which can be found under `release` event filter.
|
||||||
|
|
||||||
3. Profit (A new Action kicks in at https://github.com/KittyCAD/modeling-app/actions if the PR was correctly named)
|
|
||||||
|
|
||||||
## Fuzzing the parser
|
## Fuzzing the parser
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ const exampleSketch = startSketchOn('XZ')
|
|||||||
|> lineTo([0, 20], %)
|
|> lineTo([0, 20], %)
|
||||||
|> angledLineThatIntersects({
|
|> angledLineThatIntersects({
|
||||||
angle: 80,
|
angle: 80,
|
||||||
intersectTag: 'lineToIntersect',
|
intersectTag: lineToIntersect,
|
||||||
offset: 10
|
offset: 10
|
||||||
}, %)
|
}, %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
@ -41,6 +41,92 @@ const example = extrude(10, exampleSketch)
|
|||||||
angle: number,
|
angle: number,
|
||||||
// The tag of the line to intersect with.
|
// The tag of the line to intersect with.
|
||||||
intersectTag: {
|
intersectTag: {
|
||||||
|
// Engine information for a tag.
|
||||||
|
info: {
|
||||||
|
// The id of the tagged object.
|
||||||
|
id: uuid,
|
||||||
|
// The path the tag is on.
|
||||||
|
path: {
|
||||||
|
// The from point.
|
||||||
|
from: [number, number],
|
||||||
|
// The tag of the path.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
// The to point.
|
||||||
|
to: [number, number],
|
||||||
|
},
|
||||||
|
// The sketch group the tag is on.
|
||||||
|
sketchGroup: uuid,
|
||||||
|
// The surface information for the tag.
|
||||||
|
surface: {
|
||||||
|
// The face id for the extrude plane.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "extrudePlane",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The face id for the extrude plane.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "extrudeArc",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "chamfer",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the fillet surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "fillet",
|
||||||
|
},
|
||||||
|
},
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
// The offset from the intersecting line.
|
// The offset from the intersecting line.
|
||||||
@ -50,7 +136,7 @@ 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 id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: {
|
on: {
|
||||||
@ -92,19 +178,26 @@ const example = extrude(10, exampleSketch)
|
|||||||
// Chamfers or fillets on this extrude group.
|
// Chamfers or fillets on this extrude group.
|
||||||
filletOrChamfers: [{
|
filletOrChamfers: [{
|
||||||
// The engine id of the edge to fillet.
|
// The engine id of the edge to fillet.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this fillet.
|
// The id of the engine command that called this fillet.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
radius: number,
|
radius: number,
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
type: "fillet",
|
type: "fillet",
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
// The engine id of the edge to chamfer.
|
// The engine id of the edge to chamfer.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this chamfer.
|
// The id of the engine command that called this chamfer.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
length: number,
|
length: number,
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -117,7 +210,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
id: uuid,
|
id: uuid,
|
||||||
// The sketch group.
|
// The sketch group.
|
||||||
sketchGroup: {
|
sketchGroup: {
|
||||||
// The id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: SketchSurface,
|
on: SketchSurface,
|
||||||
@ -127,6 +220,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -143,6 +237,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -160,6 +255,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -173,6 +269,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -186,6 +283,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -201,6 +299,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -218,6 +317,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -239,6 +339,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -254,11 +355,44 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
type: "extrudeArc",
|
type: "extrudeArc",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "chamfer",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the fillet surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "fillet",
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
// The id of the face.
|
// The id of the face.
|
||||||
@ -291,6 +425,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -307,6 +442,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -324,6 +460,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -337,6 +474,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -350,6 +488,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -365,6 +504,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -382,6 +522,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -395,6 +536,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
* `tag`: `TagDeclarator` (OPTIONAL)
|
* `tag`: `TagDeclarator` (OPTIONAL)
|
||||||
```js
|
```js
|
||||||
{
|
{
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -406,7 +548,7 @@ 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 id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: {
|
on: {
|
||||||
@ -448,19 +590,26 @@ const example = extrude(10, exampleSketch)
|
|||||||
// Chamfers or fillets on this extrude group.
|
// Chamfers or fillets on this extrude group.
|
||||||
filletOrChamfers: [{
|
filletOrChamfers: [{
|
||||||
// The engine id of the edge to fillet.
|
// The engine id of the edge to fillet.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this fillet.
|
// The id of the engine command that called this fillet.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
radius: number,
|
radius: number,
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
type: "fillet",
|
type: "fillet",
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
// The engine id of the edge to chamfer.
|
// The engine id of the edge to chamfer.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this chamfer.
|
// The id of the engine command that called this chamfer.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
length: number,
|
length: number,
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -473,7 +622,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
id: uuid,
|
id: uuid,
|
||||||
// The sketch group.
|
// The sketch group.
|
||||||
sketchGroup: {
|
sketchGroup: {
|
||||||
// The id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: SketchSurface,
|
on: SketchSurface,
|
||||||
@ -483,6 +632,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -499,6 +649,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -516,6 +667,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -529,6 +681,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -542,6 +695,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -557,6 +711,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -574,6 +729,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -595,6 +751,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -610,11 +767,44 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
type: "extrudeArc",
|
type: "extrudeArc",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "chamfer",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the fillet surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "fillet",
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
// The id of the face.
|
// The id of the face.
|
||||||
@ -647,6 +837,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -663,6 +854,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -680,6 +872,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -693,6 +886,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -706,6 +900,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -721,6 +916,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -738,6 +934,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
|
@ -41,7 +41,7 @@ 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 id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: {
|
on: {
|
||||||
@ -83,19 +83,26 @@ const example = extrude(10, exampleSketch)
|
|||||||
// Chamfers or fillets on this extrude group.
|
// Chamfers or fillets on this extrude group.
|
||||||
filletOrChamfers: [{
|
filletOrChamfers: [{
|
||||||
// The engine id of the edge to fillet.
|
// The engine id of the edge to fillet.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this fillet.
|
// The id of the engine command that called this fillet.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
radius: number,
|
radius: number,
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
type: "fillet",
|
type: "fillet",
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
// The engine id of the edge to chamfer.
|
// The engine id of the edge to chamfer.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this chamfer.
|
// The id of the engine command that called this chamfer.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
length: number,
|
length: number,
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -108,7 +115,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
id: uuid,
|
id: uuid,
|
||||||
// The sketch group.
|
// The sketch group.
|
||||||
sketchGroup: {
|
sketchGroup: {
|
||||||
// The id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: SketchSurface,
|
on: SketchSurface,
|
||||||
@ -118,6 +125,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -134,6 +142,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -151,6 +160,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -164,6 +174,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -177,6 +188,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -192,6 +204,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -209,6 +222,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -230,6 +244,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -245,11 +260,44 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
type: "extrudeArc",
|
type: "extrudeArc",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "chamfer",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the fillet surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "fillet",
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
// The id of the face.
|
// The id of the face.
|
||||||
@ -282,6 +330,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -298,6 +347,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -315,6 +365,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -328,6 +379,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -341,6 +393,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -356,6 +409,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -373,6 +427,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -386,6 +441,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
* `tag`: `TagDeclarator` (OPTIONAL)
|
* `tag`: `TagDeclarator` (OPTIONAL)
|
||||||
```js
|
```js
|
||||||
{
|
{
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -397,7 +453,7 @@ 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 id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: {
|
on: {
|
||||||
@ -439,19 +495,26 @@ const example = extrude(10, exampleSketch)
|
|||||||
// Chamfers or fillets on this extrude group.
|
// Chamfers or fillets on this extrude group.
|
||||||
filletOrChamfers: [{
|
filletOrChamfers: [{
|
||||||
// The engine id of the edge to fillet.
|
// The engine id of the edge to fillet.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this fillet.
|
// The id of the engine command that called this fillet.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
radius: number,
|
radius: number,
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
type: "fillet",
|
type: "fillet",
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
// The engine id of the edge to chamfer.
|
// The engine id of the edge to chamfer.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this chamfer.
|
// The id of the engine command that called this chamfer.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
length: number,
|
length: number,
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -464,7 +527,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
id: uuid,
|
id: uuid,
|
||||||
// The sketch group.
|
// The sketch group.
|
||||||
sketchGroup: {
|
sketchGroup: {
|
||||||
// The id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: SketchSurface,
|
on: SketchSurface,
|
||||||
@ -474,6 +537,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -490,6 +554,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -507,6 +572,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -520,6 +586,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -533,6 +600,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -548,6 +616,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -565,6 +634,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -586,6 +656,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -601,11 +672,44 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
type: "extrudeArc",
|
type: "extrudeArc",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "chamfer",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the fillet surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "fillet",
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
// The id of the face.
|
// The id of the face.
|
||||||
@ -638,6 +742,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -654,6 +759,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -671,6 +777,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -684,6 +791,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -697,6 +805,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -712,6 +821,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -729,6 +839,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
|
137
docs/kcl/arc.md
34
docs/kcl/assert.md
Normal file
34
docs/kcl/assertGreaterThan.md
Normal file
35
docs/kcl/assertGreaterThanOrEq.md
Normal file
34
docs/kcl/assertLessThan.md
Normal file
35
docs/kcl/assertLessThanOrEq.md
Normal file
@ -19,8 +19,8 @@ const example = startSketchOn('XZ')
|
|||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line([10, 0], %)
|
|> line([10, 0], %)
|
||||||
|> arc({
|
|> arc({
|
||||||
angle_end: 0,
|
angleStart: 120,
|
||||||
angle_start: 120,
|
angleEnd: 0,
|
||||||
radius: 5
|
radius: 5
|
||||||
}, %)
|
}, %)
|
||||||
|> line([5, 0], %)
|
|> line([5, 0], %)
|
||||||
@ -41,8 +41,8 @@ const example = startSketchOn('XZ')
|
|||||||
const exampleSketch = startSketchOn('XZ')
|
const exampleSketch = startSketchOn('XZ')
|
||||||
|> startProfileAt([-10, 0], %)
|
|> startProfileAt([-10, 0], %)
|
||||||
|> arc({
|
|> arc({
|
||||||
angle_end: -60,
|
angleStart: 120,
|
||||||
angle_start: 120,
|
angleEnd: -60,
|
||||||
radius: 5
|
radius: 5
|
||||||
}, %)
|
}, %)
|
||||||
|> line([10, 0], %)
|
|> line([10, 0], %)
|
||||||
@ -67,7 +67,7 @@ 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 id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: {
|
on: {
|
||||||
@ -109,19 +109,26 @@ const example = extrude(10, exampleSketch)
|
|||||||
// Chamfers or fillets on this extrude group.
|
// Chamfers or fillets on this extrude group.
|
||||||
filletOrChamfers: [{
|
filletOrChamfers: [{
|
||||||
// The engine id of the edge to fillet.
|
// The engine id of the edge to fillet.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this fillet.
|
// The id of the engine command that called this fillet.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
radius: number,
|
radius: number,
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
type: "fillet",
|
type: "fillet",
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
// The engine id of the edge to chamfer.
|
// The engine id of the edge to chamfer.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this chamfer.
|
// The id of the engine command that called this chamfer.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
length: number,
|
length: number,
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -134,7 +141,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
id: uuid,
|
id: uuid,
|
||||||
// The sketch group.
|
// The sketch group.
|
||||||
sketchGroup: {
|
sketchGroup: {
|
||||||
// The id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: SketchSurface,
|
on: SketchSurface,
|
||||||
@ -144,6 +151,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -160,6 +168,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -177,6 +186,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -190,6 +200,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -203,6 +214,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -218,6 +230,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -235,6 +248,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -256,6 +270,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -271,11 +286,44 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
type: "extrudeArc",
|
type: "extrudeArc",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "chamfer",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the fillet surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "fillet",
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
// The id of the face.
|
// The id of the face.
|
||||||
@ -308,6 +356,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -325,6 +374,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -342,6 +392,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -355,6 +406,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -368,6 +420,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -383,6 +436,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -400,6 +454,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -424,19 +479,26 @@ const example = extrude(10, exampleSketch)
|
|||||||
// Chamfers or fillets on this extrude group.
|
// Chamfers or fillets on this extrude group.
|
||||||
filletOrChamfers: [{
|
filletOrChamfers: [{
|
||||||
// The engine id of the edge to fillet.
|
// The engine id of the edge to fillet.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this fillet.
|
// The id of the engine command that called this fillet.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
radius: number,
|
radius: number,
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
type: "fillet",
|
type: "fillet",
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
// The engine id of the edge to chamfer.
|
// The engine id of the edge to chamfer.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this chamfer.
|
// The id of the engine command that called this chamfer.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
length: number,
|
length: number,
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -449,7 +511,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
id: uuid,
|
id: uuid,
|
||||||
// The sketch group.
|
// The sketch group.
|
||||||
sketchGroup: {
|
sketchGroup: {
|
||||||
// The id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: {
|
on: {
|
||||||
@ -491,19 +553,26 @@ const example = extrude(10, exampleSketch)
|
|||||||
// Chamfers or fillets on this extrude group.
|
// Chamfers or fillets on this extrude group.
|
||||||
filletOrChamfers: [{
|
filletOrChamfers: [{
|
||||||
// The engine id of the edge to fillet.
|
// The engine id of the edge to fillet.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this fillet.
|
// The id of the engine command that called this fillet.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
radius: number,
|
radius: number,
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
type: "fillet",
|
type: "fillet",
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
// The engine id of the edge to chamfer.
|
// The engine id of the edge to chamfer.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this chamfer.
|
// The id of the engine command that called this chamfer.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
length: number,
|
length: number,
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -528,6 +597,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -543,11 +613,44 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
type: "extrudeArc",
|
type: "extrudeArc",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "chamfer",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the fillet surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "fillet",
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
// The id of the face.
|
// The id of the face.
|
||||||
@ -580,6 +683,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -596,6 +700,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -613,6 +718,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -626,6 +732,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -639,6 +746,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -654,6 +762,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -671,6 +780,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -693,6 +803,7 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -708,11 +819,44 @@ const example = extrude(10, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
type: "extrudeArc",
|
type: "extrudeArc",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "chamfer",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the fillet surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "fillet",
|
||||||
}],
|
}],
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
|
193
docs/kcl/hole.md
@ -20,6 +20,11 @@ layout: manual
|
|||||||
* [`angledLineToY`](kcl/angledLineToY)
|
* [`angledLineToY`](kcl/angledLineToY)
|
||||||
* [`arc`](kcl/arc)
|
* [`arc`](kcl/arc)
|
||||||
* [`asin`](kcl/asin)
|
* [`asin`](kcl/asin)
|
||||||
|
* [`assert`](kcl/assert)
|
||||||
|
* [`assertGreaterThan`](kcl/assertGreaterThan)
|
||||||
|
* [`assertGreaterThanOrEq`](kcl/assertGreaterThanOrEq)
|
||||||
|
* [`assertLessThan`](kcl/assertLessThan)
|
||||||
|
* [`assertLessThanOrEq`](kcl/assertLessThanOrEq)
|
||||||
* [`atan`](kcl/atan)
|
* [`atan`](kcl/atan)
|
||||||
* [`bezierCurve`](kcl/bezierCurve)
|
* [`bezierCurve`](kcl/bezierCurve)
|
||||||
* [`ceil`](kcl/ceil)
|
* [`ceil`](kcl/ceil)
|
||||||
@ -31,13 +36,13 @@ layout: manual
|
|||||||
* [`extrude`](kcl/extrude)
|
* [`extrude`](kcl/extrude)
|
||||||
* [`fillet`](kcl/fillet)
|
* [`fillet`](kcl/fillet)
|
||||||
* [`floor`](kcl/floor)
|
* [`floor`](kcl/floor)
|
||||||
* [`getEdge`](kcl/getEdge)
|
|
||||||
* [`getNextAdjacentEdge`](kcl/getNextAdjacentEdge)
|
* [`getNextAdjacentEdge`](kcl/getNextAdjacentEdge)
|
||||||
* [`getOppositeEdge`](kcl/getOppositeEdge)
|
* [`getOppositeEdge`](kcl/getOppositeEdge)
|
||||||
* [`getPreviousAdjacentEdge`](kcl/getPreviousAdjacentEdge)
|
* [`getPreviousAdjacentEdge`](kcl/getPreviousAdjacentEdge)
|
||||||
* [`helix`](kcl/helix)
|
* [`helix`](kcl/helix)
|
||||||
* [`hole`](kcl/hole)
|
* [`hole`](kcl/hole)
|
||||||
* [`import`](kcl/import)
|
* [`import`](kcl/import)
|
||||||
|
* [`int`](kcl/int)
|
||||||
* [`lastSegX`](kcl/lastSegX)
|
* [`lastSegX`](kcl/lastSegX)
|
||||||
* [`lastSegY`](kcl/lastSegY)
|
* [`lastSegY`](kcl/lastSegY)
|
||||||
* [`legAngX`](kcl/legAngX)
|
* [`legAngX`](kcl/legAngX)
|
||||||
@ -57,6 +62,7 @@ layout: manual
|
|||||||
* [`patternLinear3d`](kcl/patternLinear3d)
|
* [`patternLinear3d`](kcl/patternLinear3d)
|
||||||
* [`patternTransform`](kcl/patternTransform)
|
* [`patternTransform`](kcl/patternTransform)
|
||||||
* [`pi`](kcl/pi)
|
* [`pi`](kcl/pi)
|
||||||
|
* [`polar`](kcl/polar)
|
||||||
* [`pow`](kcl/pow)
|
* [`pow`](kcl/pow)
|
||||||
* [`profileStart`](kcl/profileStart)
|
* [`profileStart`](kcl/profileStart)
|
||||||
* [`profileStartX`](kcl/profileStartX)
|
* [`profileStartX`](kcl/profileStartX)
|
||||||
|
43
docs/kcl/int.md
Normal file
131
docs/kcl/line.md
48
docs/kcl/polar.md
Normal file
@ -29,7 +29,7 @@ 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 id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: {
|
on: {
|
||||||
@ -71,19 +71,26 @@ const sketch001 = startSketchOn('XY')
|
|||||||
// Chamfers or fillets on this extrude group.
|
// Chamfers or fillets on this extrude group.
|
||||||
filletOrChamfers: [{
|
filletOrChamfers: [{
|
||||||
// The engine id of the edge to fillet.
|
// The engine id of the edge to fillet.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this fillet.
|
// The id of the engine command that called this fillet.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
radius: number,
|
radius: number,
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
type: "fillet",
|
type: "fillet",
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
// The engine id of the edge to chamfer.
|
// The engine id of the edge to chamfer.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this chamfer.
|
// The id of the engine command that called this chamfer.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
length: number,
|
length: number,
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -96,7 +103,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
id: uuid,
|
id: uuid,
|
||||||
// The sketch group.
|
// The sketch group.
|
||||||
sketchGroup: {
|
sketchGroup: {
|
||||||
// The id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: SketchSurface,
|
on: SketchSurface,
|
||||||
@ -106,6 +113,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -122,6 +130,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -139,6 +148,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -152,6 +162,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -165,6 +176,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -180,6 +192,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -197,6 +210,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -218,6 +232,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -233,11 +248,44 @@ const sketch001 = startSketchOn('XY')
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
type: "extrudeArc",
|
type: "extrudeArc",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "chamfer",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the fillet surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "fillet",
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
// The id of the face.
|
// The id of the face.
|
||||||
@ -270,6 +318,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -286,6 +335,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -303,6 +353,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -316,6 +367,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -329,6 +381,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -344,6 +397,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -361,6 +415,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
|
@ -28,7 +28,7 @@ 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 id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: {
|
on: {
|
||||||
@ -70,19 +70,26 @@ const sketch001 = startSketchOn('XY')
|
|||||||
// Chamfers or fillets on this extrude group.
|
// Chamfers or fillets on this extrude group.
|
||||||
filletOrChamfers: [{
|
filletOrChamfers: [{
|
||||||
// The engine id of the edge to fillet.
|
// The engine id of the edge to fillet.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this fillet.
|
// The id of the engine command that called this fillet.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
radius: number,
|
radius: number,
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
type: "fillet",
|
type: "fillet",
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
// The engine id of the edge to chamfer.
|
// The engine id of the edge to chamfer.
|
||||||
edge_id: uuid,
|
edgeId: uuid,
|
||||||
// The id of the engine command that called this chamfer.
|
// The id of the engine command that called this chamfer.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
length: number,
|
length: number,
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -95,7 +102,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
id: uuid,
|
id: uuid,
|
||||||
// The sketch group.
|
// The sketch group.
|
||||||
sketchGroup: {
|
sketchGroup: {
|
||||||
// The id of the sketch group.
|
// The id of the sketch group (this will change when the engine's reference to it changes.
|
||||||
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).
|
||||||
on: SketchSurface,
|
on: SketchSurface,
|
||||||
@ -105,6 +112,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -121,6 +129,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -138,6 +147,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -151,6 +161,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -164,6 +175,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -179,6 +191,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -196,6 +209,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -217,6 +231,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -232,11 +247,44 @@ const sketch001 = startSketchOn('XY')
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
type: "extrudeArc",
|
type: "extrudeArc",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "chamfer",
|
||||||
|
} |
|
||||||
|
{
|
||||||
|
// The id for the fillet surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
|
id: uuid,
|
||||||
|
// The source range.
|
||||||
|
sourceRange: [number, number],
|
||||||
|
// The tag.
|
||||||
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
|
end: number,
|
||||||
|
start: number,
|
||||||
|
value: string,
|
||||||
|
},
|
||||||
|
type: "fillet",
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
// The id of the face.
|
// The id of the face.
|
||||||
@ -269,6 +317,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -285,6 +334,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -302,6 +352,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -315,6 +366,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -328,6 +380,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -343,6 +396,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -360,6 +414,7 @@ const sketch001 = startSketchOn('XY')
|
|||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
|
@ -9,7 +9,7 @@ Returns the angle of the segment.
|
|||||||
|
|
||||||
|
|
||||||
```js
|
```js
|
||||||
segAng(segment_name: TagIdentifier, sketch_group: SketchGroup) -> number
|
segAng(tag: TagIdentifier) -> number
|
||||||
```
|
```
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
@ -20,9 +20,9 @@ const exampleSketch = startSketchOn('XZ')
|
|||||||
|> line([10, 0], %)
|
|> line([10, 0], %)
|
||||||
|> line([5, 10], %, $seg01)
|
|> line([5, 10], %, $seg01)
|
||||||
|> line([-10, 0], %)
|
|> line([-10, 0], %)
|
||||||
|> angledLine([segAng(seg01, %), 10], %)
|
|> angledLine([segAng(seg01), 10], %)
|
||||||
|> line([-10, 0], %)
|
|> line([-10, 0], %)
|
||||||
|> angledLine([segAng(seg01, %), -15], %)
|
|> angledLine([segAng(seg01), -15], %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
|
|
||||||
const example = extrude(4, exampleSketch)
|
const example = extrude(4, exampleSketch)
|
||||||
@ -32,92 +32,20 @@ const example = extrude(4, exampleSketch)
|
|||||||
|
|
||||||
### Arguments
|
### Arguments
|
||||||
|
|
||||||
* `segment_name`: `TagIdentifier` (REQUIRED)
|
* `tag`: `TagIdentifier` (REQUIRED)
|
||||||
```js
|
```js
|
||||||
{
|
{
|
||||||
value: string,
|
// Engine information for a tag.
|
||||||
}
|
info: {
|
||||||
```
|
// The id of the tagged object.
|
||||||
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
// The id of the sketch group.
|
|
||||||
id: uuid,
|
id: uuid,
|
||||||
// What the sketch is on (can be a plane or a face).
|
// The path the tag is on.
|
||||||
on: {
|
path: {
|
||||||
// The id of the plane.
|
|
||||||
id: uuid,
|
|
||||||
// Origin of the plane.
|
|
||||||
origin: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
type: "plane",
|
|
||||||
// Type for a plane.
|
|
||||||
value: "XY" | "XZ" | "YZ" | "Custom",
|
|
||||||
// What should the plane’s X axis be?
|
|
||||||
xAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
// What should the plane’s Y axis be?
|
|
||||||
yAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
// The z-axis (normal).
|
|
||||||
zAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The extrude group the face is on.
|
|
||||||
extrudeGroup: {
|
|
||||||
// The id of the extrusion end cap
|
|
||||||
endCapId: uuid,
|
|
||||||
// Chamfers or fillets on this extrude group.
|
|
||||||
filletOrChamfers: [{
|
|
||||||
// The engine id of the edge to fillet.
|
|
||||||
edge_id: uuid,
|
|
||||||
// The id of the engine command that called this fillet.
|
|
||||||
id: uuid,
|
|
||||||
radius: number,
|
|
||||||
type: "fillet",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The engine id of the edge to chamfer.
|
|
||||||
edge_id: uuid,
|
|
||||||
// The id of the engine command that called this chamfer.
|
|
||||||
id: uuid,
|
|
||||||
length: number,
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
type: "chamfer",
|
|
||||||
}],
|
|
||||||
// The height of the extrude group.
|
|
||||||
height: number,
|
|
||||||
// The id of the extrude group.
|
|
||||||
id: uuid,
|
|
||||||
// The sketch group.
|
|
||||||
sketchGroup: {
|
|
||||||
// The id of the sketch group.
|
|
||||||
id: uuid,
|
|
||||||
// What the sketch is on (can be a plane or a face).
|
|
||||||
on: SketchSurface,
|
|
||||||
// The starting path.
|
|
||||||
start: {
|
|
||||||
// The from point.
|
// The from point.
|
||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -125,103 +53,10 @@ const example = extrude(4, exampleSketch)
|
|||||||
// The to point.
|
// The to point.
|
||||||
to: [number, number],
|
to: [number, number],
|
||||||
},
|
},
|
||||||
// Tag identifiers that have been declared in this sketch group.
|
// The sketch group the tag is on.
|
||||||
tags: {
|
sketchGroup: uuid,
|
||||||
},
|
// The surface information for the tag.
|
||||||
// The paths in the sketch group.
|
surface: {
|
||||||
value: [{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "ToPoint",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// arc's direction
|
|
||||||
ccw: string,
|
|
||||||
// the arc's center
|
|
||||||
center: [number, number],
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "TangentialArcTo",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "TangentialArc",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "Horizontal",
|
|
||||||
// The x coordinate.
|
|
||||||
x: number,
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "AngledLineTo",
|
|
||||||
// The x coordinate.
|
|
||||||
x: number,
|
|
||||||
// The y coordinate.
|
|
||||||
y: number,
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "Base",
|
|
||||||
}],
|
|
||||||
},
|
|
||||||
// The id of the extrusion start cap
|
|
||||||
startCapId: uuid,
|
|
||||||
// The extrude surfaces.
|
|
||||||
value: [{
|
|
||||||
// The face id for the extrude plane.
|
// The face id for the extrude plane.
|
||||||
faceId: uuid,
|
faceId: uuid,
|
||||||
// The id of the geometry.
|
// The id of the geometry.
|
||||||
@ -230,6 +65,7 @@ const example = extrude(4, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -245,142 +81,47 @@ const example = extrude(4, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
type: "extrudeArc",
|
type: "extrudeArc",
|
||||||
}],
|
} |
|
||||||
},
|
{
|
||||||
// The id of the face.
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
type: "face",
|
// The source range.
|
||||||
// The tag of the face.
|
sourceRange: [number, number],
|
||||||
value: string,
|
// The tag.
|
||||||
// What should the face’s X axis be?
|
|
||||||
xAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
// What should the face’s Y axis be?
|
|
||||||
yAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
// The z-axis (normal).
|
|
||||||
zAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
// The starting path.
|
|
||||||
start: {
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
// The to point.
|
type: "chamfer",
|
||||||
to: [number, number],
|
|
||||||
},
|
|
||||||
// Tag identifiers that have been declared in this sketch group.
|
|
||||||
tags: {
|
|
||||||
},
|
|
||||||
// The paths in the sketch group.
|
|
||||||
value: [{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "ToPoint",
|
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
// arc's direction
|
// The id for the fillet surface.
|
||||||
ccw: string,
|
faceId: uuid,
|
||||||
// the arc's center
|
// The id of the geometry.
|
||||||
center: [number, number],
|
id: uuid,
|
||||||
// The from point.
|
// The source range.
|
||||||
from: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag of the path.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
// The to point.
|
type: "fillet",
|
||||||
to: [number, number],
|
|
||||||
type: "TangentialArcTo",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
},
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "TangentialArc",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
},
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "Horizontal",
|
|
||||||
// The x coordinate.
|
|
||||||
x: number,
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
value: string,
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "AngledLineTo",
|
|
||||||
// The x coordinate.
|
|
||||||
x: number,
|
|
||||||
// The y coordinate.
|
|
||||||
y: number,
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "Base",
|
|
||||||
}],
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ Returns the segment end of y.
|
|||||||
|
|
||||||
|
|
||||||
```js
|
```js
|
||||||
segEndY(segment_name: TagIdentifier, sketch_group: SketchGroup) -> number
|
segEndY(tag: TagIdentifier) -> number
|
||||||
```
|
```
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
@ -20,7 +20,7 @@ const exampleSketch = startSketchOn('XZ')
|
|||||||
|> line([20, 0], %)
|
|> line([20, 0], %)
|
||||||
|> line([0, 3], %, $thing)
|
|> line([0, 3], %, $thing)
|
||||||
|> line([-10, 0], %)
|
|> line([-10, 0], %)
|
||||||
|> line([0, segEndY(thing, %)], %)
|
|> line([0, segEndY(thing)], %)
|
||||||
|> line([-10, 0], %)
|
|> line([-10, 0], %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
|
|
||||||
@ -31,92 +31,20 @@ const example = extrude(5, exampleSketch)
|
|||||||
|
|
||||||
### Arguments
|
### Arguments
|
||||||
|
|
||||||
* `segment_name`: `TagIdentifier` (REQUIRED)
|
* `tag`: `TagIdentifier` (REQUIRED)
|
||||||
```js
|
```js
|
||||||
{
|
{
|
||||||
value: string,
|
// Engine information for a tag.
|
||||||
}
|
info: {
|
||||||
```
|
// The id of the tagged object.
|
||||||
* `sketch_group`: `SketchGroup` - A sketch group is a collection of paths. (REQUIRED)
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
// The id of the sketch group.
|
|
||||||
id: uuid,
|
id: uuid,
|
||||||
// What the sketch is on (can be a plane or a face).
|
// The path the tag is on.
|
||||||
on: {
|
path: {
|
||||||
// The id of the plane.
|
|
||||||
id: uuid,
|
|
||||||
// Origin of the plane.
|
|
||||||
origin: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
type: "plane",
|
|
||||||
// Type for a plane.
|
|
||||||
value: "XY" | "XZ" | "YZ" | "Custom",
|
|
||||||
// What should the plane’s X axis be?
|
|
||||||
xAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
// What should the plane’s Y axis be?
|
|
||||||
yAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
// The z-axis (normal).
|
|
||||||
zAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The extrude group the face is on.
|
|
||||||
extrudeGroup: {
|
|
||||||
// The id of the extrusion end cap
|
|
||||||
endCapId: uuid,
|
|
||||||
// Chamfers or fillets on this extrude group.
|
|
||||||
filletOrChamfers: [{
|
|
||||||
// The engine id of the edge to fillet.
|
|
||||||
edge_id: uuid,
|
|
||||||
// The id of the engine command that called this fillet.
|
|
||||||
id: uuid,
|
|
||||||
radius: number,
|
|
||||||
type: "fillet",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The engine id of the edge to chamfer.
|
|
||||||
edge_id: uuid,
|
|
||||||
// The id of the engine command that called this chamfer.
|
|
||||||
id: uuid,
|
|
||||||
length: number,
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
type: "chamfer",
|
|
||||||
}],
|
|
||||||
// The height of the extrude group.
|
|
||||||
height: number,
|
|
||||||
// The id of the extrude group.
|
|
||||||
id: uuid,
|
|
||||||
// The sketch group.
|
|
||||||
sketchGroup: {
|
|
||||||
// The id of the sketch group.
|
|
||||||
id: uuid,
|
|
||||||
// What the sketch is on (can be a plane or a face).
|
|
||||||
on: SketchSurface,
|
|
||||||
// The starting path.
|
|
||||||
start: {
|
|
||||||
// The from point.
|
// The from point.
|
||||||
from: [number, number],
|
from: [number, number],
|
||||||
// The tag of the path.
|
// The tag of the path.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -124,103 +52,10 @@ const example = extrude(5, exampleSketch)
|
|||||||
// The to point.
|
// The to point.
|
||||||
to: [number, number],
|
to: [number, number],
|
||||||
},
|
},
|
||||||
// Tag identifiers that have been declared in this sketch group.
|
// The sketch group the tag is on.
|
||||||
tags: {
|
sketchGroup: uuid,
|
||||||
},
|
// The surface information for the tag.
|
||||||
// The paths in the sketch group.
|
surface: {
|
||||||
value: [{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "ToPoint",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// arc's direction
|
|
||||||
ccw: string,
|
|
||||||
// the arc's center
|
|
||||||
center: [number, number],
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "TangentialArcTo",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "TangentialArc",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "Horizontal",
|
|
||||||
// The x coordinate.
|
|
||||||
x: number,
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "AngledLineTo",
|
|
||||||
// The x coordinate.
|
|
||||||
x: number,
|
|
||||||
// The y coordinate.
|
|
||||||
y: number,
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "Base",
|
|
||||||
}],
|
|
||||||
},
|
|
||||||
// The id of the extrusion start cap
|
|
||||||
startCapId: uuid,
|
|
||||||
// The extrude surfaces.
|
|
||||||
value: [{
|
|
||||||
// The face id for the extrude plane.
|
// The face id for the extrude plane.
|
||||||
faceId: uuid,
|
faceId: uuid,
|
||||||
// The id of the geometry.
|
// The id of the geometry.
|
||||||
@ -229,6 +64,7 @@ const example = extrude(5, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
@ -244,142 +80,47 @@ const example = extrude(5, exampleSketch)
|
|||||||
sourceRange: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
type: "extrudeArc",
|
type: "extrudeArc",
|
||||||
}],
|
} |
|
||||||
},
|
{
|
||||||
// The id of the face.
|
// The id for the chamfer surface.
|
||||||
|
faceId: uuid,
|
||||||
|
// The id of the geometry.
|
||||||
id: uuid,
|
id: uuid,
|
||||||
type: "face",
|
// The source range.
|
||||||
// The tag of the face.
|
sourceRange: [number, number],
|
||||||
value: string,
|
// The tag.
|
||||||
// What should the face’s X axis be?
|
|
||||||
xAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
// What should the face’s Y axis be?
|
|
||||||
yAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
// The z-axis (normal).
|
|
||||||
zAxis: {
|
|
||||||
x: number,
|
|
||||||
y: number,
|
|
||||||
z: number,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
// The starting path.
|
|
||||||
start: {
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
// The to point.
|
type: "chamfer",
|
||||||
to: [number, number],
|
|
||||||
},
|
|
||||||
// Tag identifiers that have been declared in this sketch group.
|
|
||||||
tags: {
|
|
||||||
},
|
|
||||||
// The paths in the sketch group.
|
|
||||||
value: [{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "ToPoint",
|
|
||||||
} |
|
} |
|
||||||
{
|
{
|
||||||
// arc's direction
|
// The id for the fillet surface.
|
||||||
ccw: string,
|
faceId: uuid,
|
||||||
// the arc's center
|
// The id of the geometry.
|
||||||
center: [number, number],
|
id: uuid,
|
||||||
// The from point.
|
// The source range.
|
||||||
from: [number, number],
|
sourceRange: [number, number],
|
||||||
// The tag of the path.
|
// The tag.
|
||||||
tag: {
|
tag: {
|
||||||
|
digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
|
||||||
end: number,
|
end: number,
|
||||||
start: number,
|
start: number,
|
||||||
value: string,
|
value: string,
|
||||||
},
|
},
|
||||||
// The to point.
|
type: "fillet",
|
||||||
to: [number, number],
|
|
||||||
type: "TangentialArcTo",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
},
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "TangentialArc",
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
},
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "Horizontal",
|
|
||||||
// The x coordinate.
|
|
||||||
x: number,
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
value: string,
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "AngledLineTo",
|
|
||||||
// The x coordinate.
|
|
||||||
x: number,
|
|
||||||
// The y coordinate.
|
|
||||||
y: number,
|
|
||||||
} |
|
|
||||||
{
|
|
||||||
// The from point.
|
|
||||||
from: [number, number],
|
|
||||||
// The tag of the path.
|
|
||||||
tag: {
|
|
||||||
end: number,
|
|
||||||
start: number,
|
|
||||||
value: string,
|
|
||||||
},
|
|
||||||
// The to point.
|
|
||||||
to: [number, number],
|
|
||||||
type: "Base",
|
|
||||||
}],
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
105817
docs/kcl/std.json
Before Width: | Height: | Size: 249 KiB After Width: | Height: | Size: 249 KiB |
Before Width: | Height: | Size: 249 KiB After Width: | Height: | Size: 249 KiB |
Before Width: | Height: | Size: 249 KiB After Width: | Height: | Size: 249 KiB |
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
Before Width: | Height: | Size: 249 KiB After Width: | Height: | Size: 249 KiB |
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
@ -42,7 +42,10 @@ test.beforeEach(async ({ page }) => {
|
|||||||
|
|
||||||
test.setTimeout(60_000)
|
test.setTimeout(60_000)
|
||||||
|
|
||||||
test('exports of each format should work', async ({ page, context }) => {
|
test(
|
||||||
|
'exports of each format should work',
|
||||||
|
{ tag: '@snapshot' },
|
||||||
|
async ({ page, context }) => {
|
||||||
// FYI this test doesn't work with only engine running locally
|
// FYI this test doesn't work with only engine running locally
|
||||||
// And you will need to have the KittyCAD CLI installed
|
// And you will need to have the KittyCAD CLI installed
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
@ -64,27 +67,27 @@ const part001 = startSketchOn('-XZ')
|
|||||||
|> angledLineToY({
|
|> angledLineToY({
|
||||||
angle: topAng,
|
angle: topAng,
|
||||||
to: totalHeightHalf,
|
to: totalHeightHalf,
|
||||||
}, %, 'seg04')
|
}, %, $seg04)
|
||||||
|> xLineTo(totalLen, %, 'seg03')
|
|> xLineTo(totalLen, %, $seg03)
|
||||||
|> yLine(-armThick, %, 'seg01')
|
|> yLine(-armThick, %, $seg01)
|
||||||
|> angledLineThatIntersects({
|
|> angledLineThatIntersects({
|
||||||
angle: HALF_TURN,
|
angle: HALF_TURN,
|
||||||
offset: -armThick,
|
offset: -armThick,
|
||||||
intersectTag: 'seg04'
|
intersectTag: seg04
|
||||||
}, %)
|
}, %)
|
||||||
|> angledLineToY([segAng('seg04', %) + 180, ZERO], %)
|
|> angledLineToY([segAng(seg04, %) + 180, ZERO], %)
|
||||||
|> angledLineToY({
|
|> angledLineToY({
|
||||||
angle: -bottomAng,
|
angle: -bottomAng,
|
||||||
to: -totalHeightHalf - armThick,
|
to: -totalHeightHalf - armThick,
|
||||||
}, %, 'seg02')
|
}, %, $seg02)
|
||||||
|> xLineTo(segEndX('seg03', %) + 0, %)
|
|> xLineTo(segEndX(seg03, %) + 0, %)
|
||||||
|> yLine(-segLen('seg01', %), %)
|
|> yLine(-segLen(seg01, %), %)
|
||||||
|> angledLineThatIntersects({
|
|> angledLineThatIntersects({
|
||||||
angle: HALF_TURN,
|
angle: HALF_TURN,
|
||||||
offset: -armThick,
|
offset: -armThick,
|
||||||
intersectTag: 'seg02'
|
intersectTag: seg02
|
||||||
}, %)
|
}, %)
|
||||||
|> angledLineToY([segAng('seg02', %) + 180, -baseHeight], %)
|
|> angledLineToY([segAng(seg02, %) + 180, -baseHeight], %)
|
||||||
|> xLineTo(ZERO, %)
|
|> xLineTo(ZERO, %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
|> extrude(4, %)`
|
|> extrude(4, %)`
|
||||||
@ -296,7 +299,8 @@ const part001 = startSketchOn('-XZ')
|
|||||||
console.log(`snapshot failed for ${modelPath}`)
|
console.log(`snapshot failed for ${modelPath}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
const extrudeDefaultPlane = async (context: any, page: any, plane: string) => {
|
const extrudeDefaultPlane = async (context: any, page: any, plane: string) => {
|
||||||
await context.addInitScript(async () => {
|
await context.addInitScript(async () => {
|
||||||
@ -357,7 +361,10 @@ const extrudeDefaultPlane = async (context: any, page: any, plane: string) => {
|
|||||||
await u.openKclCodePanel()
|
await u.openKclCodePanel()
|
||||||
}
|
}
|
||||||
|
|
||||||
test.describe('extrude on default planes should be stable', () => {
|
test.describe(
|
||||||
|
'extrude on default planes should be stable',
|
||||||
|
{ tag: '@snapshot' },
|
||||||
|
() => {
|
||||||
test('XY', async ({ page, context }) => {
|
test('XY', async ({ page, context }) => {
|
||||||
await extrudeDefaultPlane(context, page, 'XY')
|
await extrudeDefaultPlane(context, page, 'XY')
|
||||||
})
|
})
|
||||||
@ -381,9 +388,13 @@ test.describe('extrude on default planes should be stable', () => {
|
|||||||
test('-YZ', async ({ page, context }) => {
|
test('-YZ', async ({ page, context }) => {
|
||||||
await extrudeDefaultPlane(context, page, '-YZ')
|
await extrudeDefaultPlane(context, page, '-YZ')
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
test('Draft segments should look right', async ({ page, context }) => {
|
test(
|
||||||
|
'Draft segments should look right',
|
||||||
|
{ tag: '@snapshot' },
|
||||||
|
async ({ page, context }) => {
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
await page.setViewportSize({ width: 1200, height: 500 })
|
await page.setViewportSize({ width: 1200, height: 500 })
|
||||||
const PUR = 400 / 37.5 //pixeltoUnitRatio
|
const PUR = 400 / 37.5 //pixeltoUnitRatio
|
||||||
@ -394,7 +405,9 @@ test('Draft segments should look right', async ({ page, context }) => {
|
|||||||
await expect(
|
await expect(
|
||||||
page.getByRole('button', { name: 'Start Sketch' })
|
page.getByRole('button', { name: 'Start Sketch' })
|
||||||
).not.toBeDisabled()
|
).not.toBeDisabled()
|
||||||
await expect(page.getByRole('button', { name: 'Start Sketch' })).toBeVisible()
|
await expect(
|
||||||
|
page.getByRole('button', { name: 'Start Sketch' })
|
||||||
|
).toBeVisible()
|
||||||
|
|
||||||
// click on "Start Sketch" button
|
// click on "Start Sketch" button
|
||||||
await u.clearCommandLogs()
|
await u.clearCommandLogs()
|
||||||
@ -431,16 +444,24 @@ test('Draft segments should look right', async ({ page, context }) => {
|
|||||||
|> line([7.25, 0], %)`
|
|> line([7.25, 0], %)`
|
||||||
await expect(page.locator('.cm-content')).toHaveText(code)
|
await expect(page.locator('.cm-content')).toHaveText(code)
|
||||||
|
|
||||||
await page.getByRole('button', { name: 'Tangential Arc' }).click()
|
await page
|
||||||
|
.getByRole('button', { name: 'Tangential Arc', exact: true })
|
||||||
|
.click()
|
||||||
|
|
||||||
await page.mouse.move(startXPx + PUR * 30, 500 - PUR * 20, { steps: 10 })
|
await page.mouse.move(startXPx + PUR * 30, 500 - PUR * 20, { steps: 10 })
|
||||||
|
|
||||||
|
await page.waitForTimeout(300)
|
||||||
|
|
||||||
await expect(page).toHaveScreenshot({
|
await expect(page).toHaveScreenshot({
|
||||||
maxDiffPixels: 100,
|
maxDiffPixels: 100,
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
test('Draft rectangles should look right', async ({ page, context }) => {
|
test(
|
||||||
|
'Draft rectangles should look right',
|
||||||
|
{ tag: '@snapshot' },
|
||||||
|
async ({ page, context }) => {
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
await page.setViewportSize({ width: 1200, height: 500 })
|
await page.setViewportSize({ width: 1200, height: 500 })
|
||||||
const PUR = 400 / 37.5 //pixeltoUnitRatio
|
const PUR = 400 / 37.5 //pixeltoUnitRatio
|
||||||
@ -451,7 +472,9 @@ test('Draft rectangles should look right', async ({ page, context }) => {
|
|||||||
await expect(
|
await expect(
|
||||||
page.getByRole('button', { name: 'Start Sketch' })
|
page.getByRole('button', { name: 'Start Sketch' })
|
||||||
).not.toBeDisabled()
|
).not.toBeDisabled()
|
||||||
await expect(page.getByRole('button', { name: 'Start Sketch' })).toBeVisible()
|
await expect(
|
||||||
|
page.getByRole('button', { name: 'Start Sketch' })
|
||||||
|
).toBeVisible()
|
||||||
|
|
||||||
// click on "Start Sketch" button
|
// click on "Start Sketch" button
|
||||||
await u.clearCommandLogs()
|
await u.clearCommandLogs()
|
||||||
@ -473,8 +496,10 @@ test('Draft rectangles should look right', async ({ page, context }) => {
|
|||||||
const startXPx = 600
|
const startXPx = 600
|
||||||
|
|
||||||
// Equip the rectangle tool
|
// Equip the rectangle tool
|
||||||
await page.getByRole('button', { name: 'Line' }).click()
|
await page.getByRole('button', { name: 'Line', exact: true }).click()
|
||||||
await page.getByRole('button', { name: 'Rectangle' }).click()
|
await page
|
||||||
|
.getByRole('button', { name: 'Corner rectangle', exact: true })
|
||||||
|
.click()
|
||||||
|
|
||||||
// Draw the rectangle
|
// Draw the rectangle
|
||||||
await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 30)
|
await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 30)
|
||||||
@ -484,9 +509,13 @@ test('Draft rectangles should look right', async ({ page, context }) => {
|
|||||||
await expect(page).toHaveScreenshot({
|
await expect(page).toHaveScreenshot({
|
||||||
maxDiffPixels: 100,
|
maxDiffPixels: 100,
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
test.describe('Client side scene scale should match engine scale', () => {
|
test.describe(
|
||||||
|
'Client side scene scale should match engine scale',
|
||||||
|
{ tag: '@snapshot' },
|
||||||
|
() => {
|
||||||
test('Inch scale', async ({ page }) => {
|
test('Inch scale', async ({ page }) => {
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
await page.setViewportSize({ width: 1200, height: 500 })
|
await page.setViewportSize({ width: 1200, height: 500 })
|
||||||
@ -533,7 +562,9 @@ test.describe('Client side scene scale should match engine scale', () => {
|
|||||||
|> line([7.25, 0], %)`
|
|> line([7.25, 0], %)`
|
||||||
await expect(u.codeLocator).toHaveText(code)
|
await expect(u.codeLocator).toHaveText(code)
|
||||||
|
|
||||||
await page.getByRole('button', { name: 'Tangential Arc' }).click()
|
await page
|
||||||
|
.getByRole('button', { name: 'Tangential Arc', exact: true })
|
||||||
|
.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)
|
||||||
@ -543,7 +574,9 @@ test.describe('Client side scene scale should match engine scale', () => {
|
|||||||
await expect(u.codeLocator).toHaveText(code)
|
await expect(u.codeLocator).toHaveText(code)
|
||||||
|
|
||||||
// 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', exact: true })
|
||||||
|
.click()
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
|
|
||||||
// screen shot should show the sketch
|
// screen shot should show the sketch
|
||||||
@ -632,7 +665,9 @@ test.describe('Client side scene scale should match engine scale', () => {
|
|||||||
|> line([184.3, 0], %)`
|
|> line([184.3, 0], %)`
|
||||||
await expect(u.codeLocator).toHaveText(code)
|
await expect(u.codeLocator).toHaveText(code)
|
||||||
|
|
||||||
await page.getByRole('button', { name: 'Tangential Arc' }).click()
|
await page
|
||||||
|
.getByRole('button', { name: 'Tangential Arc', exact: true })
|
||||||
|
.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)
|
||||||
@ -641,7 +676,9 @@ test.describe('Client side scene scale should match engine scale', () => {
|
|||||||
|> tangentialArcTo([551.2, -62.01], %)`
|
|> tangentialArcTo([551.2, -62.01], %)`
|
||||||
await expect(u.codeLocator).toHaveText(code)
|
await expect(u.codeLocator).toHaveText(code)
|
||||||
|
|
||||||
await page.getByRole('button', { name: 'Tangential Arc' }).click()
|
await page
|
||||||
|
.getByRole('button', { name: 'Tangential Arc', exact: true })
|
||||||
|
.click()
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
|
|
||||||
// screen shot should show the sketch
|
// screen shot should show the sketch
|
||||||
@ -666,23 +703,27 @@ test.describe('Client side scene scale should match engine scale', () => {
|
|||||||
maxDiffPixels: 100,
|
maxDiffPixels: 100,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
test('Sketch on face with none z-up', async ({ page, context }) => {
|
test(
|
||||||
|
'Sketch on face with none z-up',
|
||||||
|
{ tag: '@snapshot' },
|
||||||
|
async ({ page, context }) => {
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
await context.addInitScript(async (KCL_DEFAULT_LENGTH) => {
|
await context.addInitScript(async (KCL_DEFAULT_LENGTH) => {
|
||||||
localStorage.setItem(
|
localStorage.setItem(
|
||||||
'persistCode',
|
'persistCode',
|
||||||
`const part001 = startSketchOn('-XZ')
|
`const part001 = startSketchOn('-XZ')
|
||||||
|> startProfileAt([1.4, 2.47], %)
|
|> startProfileAt([1.4, 2.47], %)
|
||||||
|> line([9.31, 10.55], %, 'seg01')
|
|> line([9.31, 10.55], %, $seg01)
|
||||||
|> line([11.91, -10.42], %)
|
|> line([11.91, -10.42], %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
|> extrude(${KCL_DEFAULT_LENGTH}, %)
|
|> extrude(${KCL_DEFAULT_LENGTH}, %)
|
||||||
const part002 = startSketchOn(part001, 'seg01')
|
const part002 = startSketchOn(part001, seg01)
|
||||||
|> startProfileAt([8, 8], %)
|
|> startProfileAt([8, 8], %)
|
||||||
|> line([4.68, 3.05], %)
|
|> line([4.68, 3.05], %)
|
||||||
|> line([0, -7.79], %, 'seg02')
|
|> line([0, -7.79], %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
|> extrude(${KCL_DEFAULT_LENGTH}, %)
|
|> extrude(${KCL_DEFAULT_LENGTH}, %)
|
||||||
`
|
`
|
||||||
@ -697,7 +738,7 @@ const part002 = startSketchOn(part001, 'seg01')
|
|||||||
// wait for execution done
|
// wait for execution done
|
||||||
await expect(
|
await expect(
|
||||||
page.locator('[data-message-type="execution-done"]')
|
page.locator('[data-message-type="execution-done"]')
|
||||||
).toHaveCount(2)
|
).toHaveCount(1, { timeout: 10_000 })
|
||||||
await u.closeDebugPanel()
|
await u.closeDebugPanel()
|
||||||
|
|
||||||
// Wait for the second extrusion to appear
|
// Wait for the second extrusion to appear
|
||||||
@ -714,7 +755,9 @@ const part002 = startSketchOn(part001, 'seg01')
|
|||||||
|
|
||||||
// click at 641, 135
|
// click at 641, 135
|
||||||
await page.mouse.click(641, 135)
|
await page.mouse.click(641, 135)
|
||||||
await expect(page.locator('.cm-content')).not.toHaveText(previousCodeContent)
|
await expect(page.locator('.cm-content')).not.toHaveText(
|
||||||
|
previousCodeContent
|
||||||
|
)
|
||||||
previousCodeContent = await page.locator('.cm-content').innerText()
|
previousCodeContent = await page.locator('.cm-content').innerText()
|
||||||
|
|
||||||
await page.waitForTimeout(300)
|
await page.waitForTimeout(300)
|
||||||
@ -722,9 +765,13 @@ const part002 = startSketchOn(part001, 'seg01')
|
|||||||
await expect(page).toHaveScreenshot({
|
await expect(page).toHaveScreenshot({
|
||||||
maxDiffPixels: 100,
|
maxDiffPixels: 100,
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
test('Zoom to fit on load - solid 2d', async ({ page, context }) => {
|
test(
|
||||||
|
'Zoom to fit on load - solid 2d',
|
||||||
|
{ tag: '@snapshot' },
|
||||||
|
async ({ page, context }) => {
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
await context.addInitScript(async () => {
|
await context.addInitScript(async () => {
|
||||||
localStorage.setItem(
|
localStorage.setItem(
|
||||||
@ -747,7 +794,7 @@ test('Zoom to fit on load - solid 2d', async ({ page, context }) => {
|
|||||||
// wait for execution done
|
// wait for execution done
|
||||||
await expect(
|
await expect(
|
||||||
page.locator('[data-message-type="execution-done"]')
|
page.locator('[data-message-type="execution-done"]')
|
||||||
).toHaveCount(2)
|
).toHaveCount(1)
|
||||||
await u.closeDebugPanel()
|
await u.closeDebugPanel()
|
||||||
|
|
||||||
// Wait for the second extrusion to appear
|
// Wait for the second extrusion to appear
|
||||||
@ -758,9 +805,13 @@ test('Zoom to fit on load - solid 2d', async ({ page, context }) => {
|
|||||||
await expect(page).toHaveScreenshot({
|
await expect(page).toHaveScreenshot({
|
||||||
maxDiffPixels: 100,
|
maxDiffPixels: 100,
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
test('Zoom to fit on load - solid 3d', async ({ page, context }) => {
|
test(
|
||||||
|
'Zoom to fit on load - solid 3d',
|
||||||
|
{ tag: '@snapshot' },
|
||||||
|
async ({ page, context }) => {
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
await context.addInitScript(async () => {
|
await context.addInitScript(async () => {
|
||||||
localStorage.setItem(
|
localStorage.setItem(
|
||||||
@ -784,7 +835,7 @@ test('Zoom to fit on load - solid 3d', async ({ page, context }) => {
|
|||||||
// wait for execution done
|
// wait for execution done
|
||||||
await expect(
|
await expect(
|
||||||
page.locator('[data-message-type="execution-done"]')
|
page.locator('[data-message-type="execution-done"]')
|
||||||
).toHaveCount(2)
|
).toHaveCount(1)
|
||||||
await u.closeDebugPanel()
|
await u.closeDebugPanel()
|
||||||
|
|
||||||
// Wait for the second extrusion to appear
|
// Wait for the second extrusion to appear
|
||||||
@ -795,9 +846,10 @@ test('Zoom to fit on load - solid 3d', async ({ page, context }) => {
|
|||||||
await expect(page).toHaveScreenshot({
|
await expect(page).toHaveScreenshot({
|
||||||
maxDiffPixels: 100,
|
maxDiffPixels: 100,
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
|
)
|
||||||
|
|
||||||
test.describe('Grid visibility', () => {
|
test.describe('Grid visibility', { tag: '@snapshot' }, () => {
|
||||||
test('Grid turned off', async ({ page }) => {
|
test('Grid turned off', async ({ page }) => {
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
const stream = page.getByTestId('stream')
|
const stream = page.getByTestId('stream')
|
||||||
@ -815,7 +867,7 @@ test.describe('Grid visibility', () => {
|
|||||||
// wait for execution done
|
// wait for execution done
|
||||||
await expect(
|
await expect(
|
||||||
page.locator('[data-message-type="execution-done"]')
|
page.locator('[data-message-type="execution-done"]')
|
||||||
).toHaveCount(2)
|
).toHaveCount(1)
|
||||||
await u.closeDebugPanel()
|
await u.closeDebugPanel()
|
||||||
await u.closeKclCodePanel()
|
await u.closeKclCodePanel()
|
||||||
// TODO: Find a way to truly know that the objects have finished
|
// TODO: Find a way to truly know that the objects have finished
|
||||||
@ -863,7 +915,7 @@ test.describe('Grid visibility', () => {
|
|||||||
// wait for execution done
|
// wait for execution done
|
||||||
await expect(
|
await expect(
|
||||||
page.locator('[data-message-type="execution-done"]')
|
page.locator('[data-message-type="execution-done"]')
|
||||||
).toHaveCount(2)
|
).toHaveCount(1)
|
||||||
await u.closeDebugPanel()
|
await u.closeDebugPanel()
|
||||||
await u.closeKclCodePanel()
|
await u.closeKclCodePanel()
|
||||||
// TODO: Find a way to truly know that the objects have finished
|
// TODO: Find a way to truly know that the objects have finished
|
||||||
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 45 KiB |