Compare commits
18 Commits
achalmers/
...
jtran/offs
| Author | SHA1 | Date | |
|---|---|---|---|
| 4391a286ce | |||
| a44516bc7e | |||
| ce62fe67cf | |||
| 763a1b6628 | |||
| 3281e62e6b | |||
| f1a458f124 | |||
| 229433126d | |||
| b962b5fcb3 | |||
| 428d125139 | |||
| cffeb52b4b | |||
| e0ef10e7bb | |||
| 7095ce2377 | |||
| 5b207d7d1a | |||
| 2fac213c58 | |||
| 2f72a8ef14 | |||
| 27ce9f8aa4 | |||
| b0426e3f94 | |||
| d707c66e53 |
@ -2,8 +2,8 @@ NODE_ENV=development
|
|||||||
DEV=true
|
DEV=true
|
||||||
VITE_KC_API_WS_MODELING_URL=wss://api.dev.zoo.dev/ws/modeling/commands
|
VITE_KC_API_WS_MODELING_URL=wss://api.dev.zoo.dev/ws/modeling/commands
|
||||||
VITE_KC_API_BASE_URL=https://api.dev.zoo.dev
|
VITE_KC_API_BASE_URL=https://api.dev.zoo.dev
|
||||||
BASE_URL=https://api.dev.zoo.dev
|
|
||||||
VITE_KC_SITE_BASE_URL=https://dev.zoo.dev
|
VITE_KC_SITE_BASE_URL=https://dev.zoo.dev
|
||||||
|
VITE_KC_SITE_APP_URL=https://app.dev.zoo.dev
|
||||||
VITE_KC_SKIP_AUTH=false
|
VITE_KC_SKIP_AUTH=false
|
||||||
VITE_KC_CONNECTION_TIMEOUT_MS=5000
|
VITE_KC_CONNECTION_TIMEOUT_MS=5000
|
||||||
# ONLY add your token in .env.development.local if you want to skip auth, otherwise this token takes precedence!
|
# ONLY add your token in .env.development.local if you want to skip auth, otherwise this token takes precedence!
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
|
NODE_ENV=production
|
||||||
|
DEV=false
|
||||||
VITE_KC_API_WS_MODELING_URL=wss://api.zoo.dev/ws/modeling/commands
|
VITE_KC_API_WS_MODELING_URL=wss://api.zoo.dev/ws/modeling/commands
|
||||||
VITE_KC_API_BASE_URL=https://api.zoo.dev
|
VITE_KC_API_BASE_URL=https://api.zoo.dev
|
||||||
VITE_KC_SITE_BASE_URL=https://zoo.dev
|
VITE_KC_SITE_BASE_URL=https://zoo.dev
|
||||||
|
VITE_KC_SITE_APP_URL=https://app.zoo.dev
|
||||||
VITE_KC_SKIP_AUTH=false
|
VITE_KC_SKIP_AUTH=false
|
||||||
VITE_KC_CONNECTION_TIMEOUT_MS=15000
|
VITE_KC_CONNECTION_TIMEOUT_MS=15000
|
||||||
|
|||||||
16
.github/workflows/build-apps.yml
vendored
16
.github/workflows/build-apps.yml
vendored
@ -134,8 +134,6 @@ jobs:
|
|||||||
max_attempts: 3
|
max_attempts: 3
|
||||||
command: yarn install
|
command: yarn install
|
||||||
|
|
||||||
- run: yarn tronb:vite
|
|
||||||
|
|
||||||
- name: Prepare certificate and variables (Windows only)
|
- name: Prepare certificate and variables (Windows only)
|
||||||
if: ${{ (env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true') && matrix.os == 'windows-2022' }}
|
if: ${{ (env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true') && matrix.os == 'windows-2022' }}
|
||||||
run: |
|
run: |
|
||||||
@ -165,8 +163,8 @@ jobs:
|
|||||||
- name: Build the app (debug)
|
- name: Build the app (debug)
|
||||||
if: ${{ env.IS_RELEASE == 'false' && env.IS_NIGHTLY == 'false' }}
|
if: ${{ env.IS_RELEASE == 'false' && env.IS_NIGHTLY == 'false' }}
|
||||||
# electron-builder doesn't have a concept of release vs debug,
|
# electron-builder doesn't have a concept of release vs debug,
|
||||||
# this is just not doing any codesign or release yml generation
|
# this is just not doing any codesign or release yml generation, and points to dev infra
|
||||||
run: yarn electron-builder --config
|
run: yarn tronb:package:dev
|
||||||
|
|
||||||
- name: Build the app (release)
|
- name: Build the app (release)
|
||||||
if: ${{ env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true' }}
|
if: ${{ env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true' }}
|
||||||
@ -185,7 +183,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
timeout_minutes: 10
|
timeout_minutes: 10
|
||||||
max_attempts: 3
|
max_attempts: 3
|
||||||
command: yarn electron-builder --config --publish always
|
command: yarn tronb:package:prod
|
||||||
|
|
||||||
- name: List artifacts in out/
|
- name: List artifacts in out/
|
||||||
run: ls -R out
|
run: ls -R out
|
||||||
@ -246,7 +244,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
timeout_minutes: 10
|
timeout_minutes: 10
|
||||||
max_attempts: 3
|
max_attempts: 3
|
||||||
command: yarn electron-builder --config --publish always
|
command: yarn tronb:package:prod
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
if: ${{ env.IS_RELEASE == 'true' }}
|
if: ${{ env.IS_RELEASE == 'true' }}
|
||||||
@ -390,19 +388,19 @@ jobs:
|
|||||||
|
|
||||||
- name: Authenticate to Google Cloud
|
- name: Authenticate to Google Cloud
|
||||||
if: ${{ env.IS_NIGHTLY == 'true' }}
|
if: ${{ env.IS_NIGHTLY == 'true' }}
|
||||||
uses: 'google-github-actions/auth@v2.1.7'
|
uses: 'google-github-actions/auth@v2.1.8'
|
||||||
with:
|
with:
|
||||||
credentials_json: '${{ secrets.GOOGLE_CLOUD_DL_SA }}'
|
credentials_json: '${{ secrets.GOOGLE_CLOUD_DL_SA }}'
|
||||||
|
|
||||||
- name: Set up Google Cloud SDK
|
- name: Set up Google Cloud SDK
|
||||||
if: ${{ env.IS_NIGHTLY == 'true' }}
|
if: ${{ env.IS_NIGHTLY == 'true' }}
|
||||||
uses: google-github-actions/setup-gcloud@v2.1.2
|
uses: google-github-actions/setup-gcloud@v2.1.4
|
||||||
with:
|
with:
|
||||||
project_id: ${{ env.GOOGLE_CLOUD_PROJECT_ID }}
|
project_id: ${{ env.GOOGLE_CLOUD_PROJECT_ID }}
|
||||||
|
|
||||||
- name: Upload nightly files to public bucket
|
- name: Upload nightly files to public bucket
|
||||||
if: ${{ env.IS_NIGHTLY == 'true' }}
|
if: ${{ env.IS_NIGHTLY == 'true' }}
|
||||||
uses: google-github-actions/upload-cloud-storage@v2.2.1
|
uses: google-github-actions/upload-cloud-storage@v2.2.2
|
||||||
with:
|
with:
|
||||||
path: out
|
path: out
|
||||||
glob: '*'
|
glob: '*'
|
||||||
|
|||||||
4
.github/workflows/e2e-tests.yml
vendored
4
.github/workflows/e2e-tests.yml
vendored
@ -123,9 +123,9 @@ jobs:
|
|||||||
if: steps.download-wasm.outcome == 'failure'
|
if: steps.download-wasm.outcome == 'failure'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: yarn build:wasm
|
run: yarn build:wasm
|
||||||
- name: build electron
|
- name: build web
|
||||||
shell: bash
|
shell: bash
|
||||||
run: yarn tron:package
|
run: yarn tronb:vite:dev
|
||||||
# - name: Run ubuntu/chrome snapshots
|
# - name: Run ubuntu/chrome snapshots
|
||||||
# if: ${{ matrix.os == 'namespace-profile-ubuntu-8-cores' && matrix.shardIndex == 1 }}
|
# if: ${{ matrix.os == 'namespace-profile-ubuntu-8-cores' && matrix.shardIndex == 1 }}
|
||||||
# shell: bash
|
# shell: bash
|
||||||
|
|||||||
6
.github/workflows/publish-apps-release.yml
vendored
6
.github/workflows/publish-apps-release.yml
vendored
@ -108,17 +108,17 @@ jobs:
|
|||||||
run: yarn files:set-notes
|
run: yarn files:set-notes
|
||||||
|
|
||||||
- name: Authenticate to Google Cloud
|
- name: Authenticate to Google Cloud
|
||||||
uses: 'google-github-actions/auth@v2.1.7'
|
uses: 'google-github-actions/auth@v2.1.8'
|
||||||
with:
|
with:
|
||||||
credentials_json: '${{ secrets.GOOGLE_CLOUD_DL_SA }}'
|
credentials_json: '${{ secrets.GOOGLE_CLOUD_DL_SA }}'
|
||||||
|
|
||||||
- name: Set up Google Cloud SDK
|
- name: Set up Google Cloud SDK
|
||||||
uses: google-github-actions/setup-gcloud@v2.1.2
|
uses: google-github-actions/setup-gcloud@v2.1.4
|
||||||
with:
|
with:
|
||||||
project_id: ${{ env.GOOGLE_CLOUD_PROJECT_ID }}
|
project_id: ${{ env.GOOGLE_CLOUD_PROJECT_ID }}
|
||||||
|
|
||||||
- name: Upload release files to public bucket
|
- name: Upload release files to public bucket
|
||||||
uses: google-github-actions/upload-cloud-storage@v2.2.1
|
uses: google-github-actions/upload-cloud-storage@v2.2.2
|
||||||
with:
|
with:
|
||||||
path: out
|
path: out
|
||||||
glob: '*'
|
glob: '*'
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@ -25,7 +25,6 @@ yarn-error.log*
|
|||||||
|
|
||||||
.idea
|
.idea
|
||||||
.vscode
|
.vscode
|
||||||
.helix
|
|
||||||
src/wasm-lib/.idea
|
src/wasm-lib/.idea
|
||||||
src/wasm-lib/.vscode
|
src/wasm-lib/.vscode
|
||||||
|
|
||||||
|
|||||||
@ -1,2 +0,0 @@
|
|||||||
[editor]
|
|
||||||
auto-format = true
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
[language-server.eslint]
|
|
||||||
args = ["--stdio"]
|
|
||||||
command = "vscode-eslint-language-server"
|
|
||||||
|
|
||||||
[[language]]
|
|
||||||
name = "typescript"
|
|
||||||
auto-format = true
|
|
||||||
formatter = { command = "node_modules/.bin/prettier", args = ["--parser", "typescript"] }
|
|
||||||
language-servers = [ { name = "eslint", only-features = [ "diagnostics" ] }, "typescript-language-server" ]
|
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ This will start the application and hot-reload on changes.
|
|||||||
|
|
||||||
Devtools can be opened with the usual Cmd-Opt-I (Mac) or Ctrl-Shift-I (Linux and Windows).
|
Devtools can be opened with the usual Cmd-Opt-I (Mac) or Ctrl-Shift-I (Linux and Windows).
|
||||||
|
|
||||||
To build, run `yarn tron:package`.
|
To build with electron-builder, run `yarn tronb:package:dev` (or `yarn tronb:package:prod` to point to the .env.production variables)
|
||||||
|
|
||||||
## Checking out commits / Bisecting
|
## Checking out commits / Bisecting
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -31,12 +31,12 @@ appearance(data: AppearanceData, solid_set: SolidSet) -> SolidSet
|
|||||||
// Add color to an extruded solid.
|
// Add color to an extruded solid.
|
||||||
exampleSketch = startSketchOn("XZ")
|
exampleSketch = startSketchOn("XZ")
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(endAbsolute = [10, 0])
|
|> lineTo([10, 0], %)
|
||||||
|> line(endAbsolute = [0, 10])
|
|> lineTo([0, 10], %)
|
||||||
|> line(endAbsolute = [-10, 0])
|
|> lineTo([-10, 0], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|
|
||||||
example = extrude(exampleSketch, length = 5)
|
example = extrude(5, exampleSketch)
|
||||||
|> appearance({
|
|> appearance({
|
||||||
color = '#ff0000',
|
color = '#ff0000',
|
||||||
metalness = 50,
|
metalness = 50,
|
||||||
@ -65,11 +65,11 @@ sketch001 = startSketchOn('XY')
|
|||||||
fn cube(center) {
|
fn cube(center) {
|
||||||
return startSketchOn('XY')
|
return startSketchOn('XY')
|
||||||
|> startProfileAt([center[0] - 10, center[1] - 10], %)
|
|> startProfileAt([center[0] - 10, center[1] - 10], %)
|
||||||
|> line(endAbsolute = [center[0] + 10, center[1] - 10])
|
|> lineTo([center[0] + 10, center[1] - 10], %)
|
||||||
|> line(endAbsolute = [center[0] + 10, center[1] + 10])
|
|> lineTo([center[0] + 10, center[1] + 10], %)
|
||||||
|> line(endAbsolute = [center[0] - 10, center[1] + 10])
|
|> lineTo([center[0] - 10, center[1] + 10], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 10)
|
|> extrude(10, %)
|
||||||
}
|
}
|
||||||
|
|
||||||
example0 = cube([0, 0])
|
example0 = cube([0, 0])
|
||||||
@ -95,11 +95,11 @@ appearance({
|
|||||||
// This example shows setting the appearance _after_ the shell.
|
// This example shows setting the appearance _after_ the shell.
|
||||||
firstSketch = startSketchOn('XY')
|
firstSketch = startSketchOn('XY')
|
||||||
|> startProfileAt([-12, 12], %)
|
|> startProfileAt([-12, 12], %)
|
||||||
|> line(end = [24, 0])
|
|> line([24, 0], %)
|
||||||
|> line(end = [0, -24])
|
|> line([0, -24], %)
|
||||||
|> line(end = [-24, 0])
|
|> line([-24, 0], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 6)
|
|> extrude(6, %)
|
||||||
|
|
||||||
shell({ faces = ['end'], thickness = 0.25 }, firstSketch)
|
shell({ faces = ['end'], thickness = 0.25 }, firstSketch)
|
||||||
|> appearance({
|
|> appearance({
|
||||||
@ -116,11 +116,11 @@ shell({ faces = ['end'], thickness = 0.25 }, firstSketch)
|
|||||||
// This example shows setting the appearance _before_ the shell.
|
// This example shows setting the appearance _before_ the shell.
|
||||||
firstSketch = startSketchOn('XY')
|
firstSketch = startSketchOn('XY')
|
||||||
|> startProfileAt([-12, 12], %)
|
|> startProfileAt([-12, 12], %)
|
||||||
|> line(end = [24, 0])
|
|> line([24, 0], %)
|
||||||
|> line(end = [0, -24])
|
|> line([0, -24], %)
|
||||||
|> line(end = [-24, 0])
|
|> line([-24, 0], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 6)
|
|> extrude(6, %)
|
||||||
|> appearance({
|
|> appearance({
|
||||||
color = '#ff0000',
|
color = '#ff0000',
|
||||||
metalness = 90,
|
metalness = 90,
|
||||||
@ -137,12 +137,12 @@ shell({ faces = ['end'], thickness = 0.25 }, firstSketch)
|
|||||||
// This example shows _before_ the pattern.
|
// This example shows _before_ the pattern.
|
||||||
exampleSketch = startSketchOn('XZ')
|
exampleSketch = startSketchOn('XZ')
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [0, 2])
|
|> line([0, 2], %)
|
||||||
|> line(end = [3, 1])
|
|> line([3, 1], %)
|
||||||
|> line(end = [0, -4])
|
|> line([0, -4], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|
|
||||||
example = extrude(exampleSketch, length = 1)
|
example = extrude(1, exampleSketch)
|
||||||
|> appearance({
|
|> appearance({
|
||||||
color = '#ff0000',
|
color = '#ff0000',
|
||||||
metalness = 90,
|
metalness = 90,
|
||||||
@ -162,12 +162,12 @@ example = extrude(exampleSketch, length = 1)
|
|||||||
// This example shows _after_ the pattern.
|
// This example shows _after_ the pattern.
|
||||||
exampleSketch = startSketchOn('XZ')
|
exampleSketch = startSketchOn('XZ')
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [0, 2])
|
|> line([0, 2], %)
|
||||||
|> line(end = [3, 1])
|
|> line([3, 1], %)
|
||||||
|> line(end = [0, -4])
|
|> line([0, -4], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|
|
||||||
example = extrude(exampleSketch, length = 1)
|
example = extrude(1, exampleSketch)
|
||||||
|> patternLinear3d({
|
|> patternLinear3d({
|
||||||
axis = [1, 0, 1],
|
axis = [1, 0, 1],
|
||||||
instances = 7,
|
instances = 7,
|
||||||
@ -186,10 +186,10 @@ example = extrude(exampleSketch, length = 1)
|
|||||||
// Color the result of a 2D pattern that was extruded.
|
// Color the result of a 2D pattern that was extruded.
|
||||||
exampleSketch = startSketchOn('XZ')
|
exampleSketch = startSketchOn('XZ')
|
||||||
|> startProfileAt([.5, 25], %)
|
|> startProfileAt([.5, 25], %)
|
||||||
|> line(end = [0, 5])
|
|> line([0, 5], %)
|
||||||
|> line(end = [-1, 0])
|
|> line([-1, 0], %)
|
||||||
|> line(end = [0, -5])
|
|> line([0, -5], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> patternCircular2d({
|
|> patternCircular2d({
|
||||||
center = [0, 0],
|
center = [0, 0],
|
||||||
instances = 13,
|
instances = 13,
|
||||||
@ -197,7 +197,7 @@ exampleSketch = startSketchOn('XZ')
|
|||||||
rotateDuplicates = true
|
rotateDuplicates = true
|
||||||
}, %)
|
}, %)
|
||||||
|
|
||||||
example = extrude(exampleSketch, length = 1)
|
example = extrude(1, exampleSketch)
|
||||||
|> appearance({
|
|> appearance({
|
||||||
color = '#ff0000',
|
color = '#ff0000',
|
||||||
metalness = 90,
|
metalness = 90,
|
||||||
@ -214,11 +214,11 @@ example = extrude(exampleSketch, length = 1)
|
|||||||
// Create a path for the sweep.
|
// Create a path for the sweep.
|
||||||
sweepPath = startSketchOn('XZ')
|
sweepPath = startSketchOn('XZ')
|
||||||
|> startProfileAt([0.05, 0.05], %)
|
|> startProfileAt([0.05, 0.05], %)
|
||||||
|> line(end = [0, 7])
|
|> line([0, 7], %)
|
||||||
|> tangentialArc({ offset = 90, radius = 5 }, %)
|
|> tangentialArc({ offset = 90, radius = 5 }, %)
|
||||||
|> line(end = [-3, 0])
|
|> line([-3, 0], %)
|
||||||
|> tangentialArc({ offset = -90, radius = 5 }, %)
|
|> tangentialArc({ offset = -90, radius = 5 }, %)
|
||||||
|> line(end = [0, 7])
|
|> line([0, 7], %)
|
||||||
|
|
||||||
pipeHole = startSketchOn('XY')
|
pipeHole = startSketchOn('XY')
|
||||||
|> circle({ center = [0, 0], radius = 1.5 }, %)
|
|> circle({ center = [0, 0], radius = 1.5 }, %)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -36,12 +36,12 @@ filletRadius = 2
|
|||||||
|
|
||||||
mountingPlateSketch = startSketchOn("XY")
|
mountingPlateSketch = startSketchOn("XY")
|
||||||
|> startProfileAt([-width / 2, -length / 2], %)
|
|> startProfileAt([-width / 2, -length / 2], %)
|
||||||
|> line(endAbsolute = [width / 2, -length / 2], tag = $edge1)
|
|> lineTo([width / 2, -length / 2], %, $edge1)
|
||||||
|> line(endAbsolute = [width / 2, length / 2], tag = $edge2)
|
|> lineTo([width / 2, length / 2], %, $edge2)
|
||||||
|> line(endAbsolute = [-width / 2, length / 2], tag = $edge3)
|
|> lineTo([-width / 2, length / 2], %, $edge3)
|
||||||
|> close(tag = $edge4)
|
|> close(%, $edge4)
|
||||||
|
|
||||||
mountingPlate = extrude(mountingPlateSketch, length = thickness)
|
mountingPlate = extrude(thickness, mountingPlateSketch)
|
||||||
|> fillet({
|
|> fillet({
|
||||||
radius = filletRadius,
|
radius = filletRadius,
|
||||||
tags = [
|
tags = [
|
||||||
@ -63,12 +63,12 @@ filletRadius = 1
|
|||||||
|
|
||||||
mountingPlateSketch = startSketchOn("XY")
|
mountingPlateSketch = startSketchOn("XY")
|
||||||
|> startProfileAt([-width / 2, -length / 2], %)
|
|> startProfileAt([-width / 2, -length / 2], %)
|
||||||
|> line(endAbsolute = [width / 2, -length / 2], tag = $edge1)
|
|> lineTo([width / 2, -length / 2], %, $edge1)
|
||||||
|> line(endAbsolute = [width / 2, length / 2], tag = $edge2)
|
|> lineTo([width / 2, length / 2], %, $edge2)
|
||||||
|> line(endAbsolute = [-width / 2, length / 2], tag = $edge3)
|
|> lineTo([-width / 2, length / 2], %, $edge3)
|
||||||
|> close(tag = $edge4)
|
|> close(%, $edge4)
|
||||||
|
|
||||||
mountingPlate = extrude(mountingPlateSketch, length = thickness)
|
mountingPlate = extrude(thickness, mountingPlateSketch)
|
||||||
|> fillet({
|
|> fillet({
|
||||||
radius = filletRadius,
|
radius = filletRadius,
|
||||||
tolerance = 0.000001,
|
tolerance = 0.000001,
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -29,14 +29,14 @@ getNextAdjacentEdge(tag: TagIdentifier) -> Uuid
|
|||||||
```js
|
```js
|
||||||
exampleSketch = startSketchOn('XZ')
|
exampleSketch = startSketchOn('XZ')
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [10, 0])
|
|> line([10, 0], %)
|
||||||
|> angledLine({ angle = 60, length = 10 }, %)
|
|> angledLine({ angle = 60, length = 10 }, %)
|
||||||
|> angledLine({ angle = 120, length = 10 }, %)
|
|> angledLine({ angle = 120, length = 10 }, %)
|
||||||
|> line(end = [-10, 0])
|
|> line([-10, 0], %)
|
||||||
|> angledLine({ angle = 240, length = 10 }, %, $referenceEdge)
|
|> angledLine({ angle = 240, length = 10 }, %, $referenceEdge)
|
||||||
|> close()
|
|> close(%)
|
||||||
|
|
||||||
example = extrude(exampleSketch, length = 5)
|
example = extrude(5, exampleSketch)
|
||||||
|> fillet({
|
|> fillet({
|
||||||
radius = 3,
|
radius = 3,
|
||||||
tags = [getNextAdjacentEdge(referenceEdge)]
|
tags = [getNextAdjacentEdge(referenceEdge)]
|
||||||
|
|||||||
@ -29,14 +29,14 @@ getOppositeEdge(tag: TagIdentifier) -> Uuid
|
|||||||
```js
|
```js
|
||||||
exampleSketch = startSketchOn('XZ')
|
exampleSketch = startSketchOn('XZ')
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [10, 0])
|
|> line([10, 0], %)
|
||||||
|> angledLine({ angle = 60, length = 10 }, %)
|
|> angledLine({ angle = 60, length = 10 }, %)
|
||||||
|> angledLine({ angle = 120, length = 10 }, %)
|
|> angledLine({ angle = 120, length = 10 }, %)
|
||||||
|> line(end = [-10, 0])
|
|> line([-10, 0], %)
|
||||||
|> angledLine({ angle = 240, length = 10 }, %, $referenceEdge)
|
|> angledLine({ angle = 240, length = 10 }, %, $referenceEdge)
|
||||||
|> close()
|
|> close(%)
|
||||||
|
|
||||||
example = extrude(exampleSketch, length = 5)
|
example = extrude(5, exampleSketch)
|
||||||
|> fillet({
|
|> fillet({
|
||||||
radius = 3,
|
radius = 3,
|
||||||
tags = [getOppositeEdge(referenceEdge)]
|
tags = [getOppositeEdge(referenceEdge)]
|
||||||
|
|||||||
@ -29,14 +29,14 @@ getPreviousAdjacentEdge(tag: TagIdentifier) -> Uuid
|
|||||||
```js
|
```js
|
||||||
exampleSketch = startSketchOn('XZ')
|
exampleSketch = startSketchOn('XZ')
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [10, 0])
|
|> line([10, 0], %)
|
||||||
|> angledLine({ angle = 60, length = 10 }, %)
|
|> angledLine({ angle = 60, length = 10 }, %)
|
||||||
|> angledLine({ angle = 120, length = 10 }, %)
|
|> angledLine({ angle = 120, length = 10 }, %)
|
||||||
|> line(end = [-10, 0])
|
|> line([-10, 0], %)
|
||||||
|> angledLine({ angle = 240, length = 10 }, %, $referenceEdge)
|
|> angledLine({ angle = 240, length = 10 }, %, $referenceEdge)
|
||||||
|> close()
|
|> close(%)
|
||||||
|
|
||||||
example = extrude(exampleSketch, length = 5)
|
example = extrude(5, exampleSketch)
|
||||||
|> fillet({
|
|> fillet({
|
||||||
radius = 3,
|
radius = 3,
|
||||||
tags = [getPreviousAdjacentEdge(referenceEdge)]
|
tags = [getPreviousAdjacentEdge(referenceEdge)]
|
||||||
|
|||||||
@ -49,7 +49,7 @@ springSketch = startSketchOn('YZ')
|
|||||||
// Create a helix around an edge.
|
// Create a helix around an edge.
|
||||||
helper001 = startSketchOn('XZ')
|
helper001 = startSketchOn('XZ')
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [0, 10], tag = $edge001)
|
|> line([0, 10], %, $edge001)
|
||||||
|
|
||||||
helixPath = helix({
|
helixPath = helix({
|
||||||
angleStart = 0,
|
angleStart = 0,
|
||||||
|
|||||||
@ -30,7 +30,7 @@ helixRevolutions(data: HelixRevolutionsData, solid: Solid) -> Solid
|
|||||||
```js
|
```js
|
||||||
part001 = startSketchOn('XY')
|
part001 = startSketchOn('XY')
|
||||||
|> circle({ center = [5, 5], radius = 10 }, %)
|
|> circle({ center = [5, 5], radius = 10 }, %)
|
||||||
|> extrude(length = 10)
|
|> extrude(10, %)
|
||||||
|> helixRevolutions({
|
|> helixRevolutions({
|
||||||
angleStart = 0,
|
angleStart = 0,
|
||||||
ccw = true,
|
ccw = true,
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -31,11 +31,11 @@ hollow(thickness: number, solid: Solid) -> Solid
|
|||||||
// Hollow a basic sketch.
|
// Hollow a basic sketch.
|
||||||
firstSketch = startSketchOn('XY')
|
firstSketch = startSketchOn('XY')
|
||||||
|> startProfileAt([-12, 12], %)
|
|> startProfileAt([-12, 12], %)
|
||||||
|> line(end = [24, 0])
|
|> line([24, 0], %)
|
||||||
|> line(end = [0, -24])
|
|> line([0, -24], %)
|
||||||
|> line(end = [-24, 0])
|
|> line([-24, 0], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 6)
|
|> extrude(6, %)
|
||||||
|> hollow(0.25, %)
|
|> hollow(0.25, %)
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -45,11 +45,11 @@ firstSketch = startSketchOn('XY')
|
|||||||
// Hollow a basic sketch.
|
// Hollow a basic sketch.
|
||||||
firstSketch = startSketchOn('-XZ')
|
firstSketch = startSketchOn('-XZ')
|
||||||
|> startProfileAt([-12, 12], %)
|
|> startProfileAt([-12, 12], %)
|
||||||
|> line(end = [24, 0])
|
|> line([24, 0], %)
|
||||||
|> line(end = [0, -24])
|
|> line([0, -24], %)
|
||||||
|> line(end = [-24, 0])
|
|> line([-24, 0], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 6)
|
|> extrude(6, %)
|
||||||
|> hollow(0.5, %)
|
|> hollow(0.5, %)
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -60,25 +60,25 @@ firstSketch = startSketchOn('-XZ')
|
|||||||
size = 100
|
size = 100
|
||||||
case = startSketchOn('-XZ')
|
case = startSketchOn('-XZ')
|
||||||
|> startProfileAt([-size, -size], %)
|
|> startProfileAt([-size, -size], %)
|
||||||
|> line(end = [2 * size, 0])
|
|> line([2 * size, 0], %)
|
||||||
|> line(end = [0, 2 * size])
|
|> line([0, 2 * size], %)
|
||||||
|> tangentialArcTo([-size, size], %)
|
|> tangentialArcTo([-size, size], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 65)
|
|> extrude(65, %)
|
||||||
|
|
||||||
thing1 = startSketchOn(case, 'end')
|
thing1 = startSketchOn(case, 'end')
|
||||||
|> circle({
|
|> circle({
|
||||||
center = [-size / 2, -size / 2],
|
center = [-size / 2, -size / 2],
|
||||||
radius = 25
|
radius = 25
|
||||||
}, %)
|
}, %)
|
||||||
|> extrude(length = 50)
|
|> extrude(50, %)
|
||||||
|
|
||||||
thing2 = startSketchOn(case, 'end')
|
thing2 = startSketchOn(case, 'end')
|
||||||
|> circle({
|
|> circle({
|
||||||
center = [size / 2, -size / 2],
|
center = [size / 2, -size / 2],
|
||||||
radius = 25
|
radius = 25
|
||||||
}, %)
|
}, %)
|
||||||
|> extrude(length = 50)
|
|> extrude(50, %)
|
||||||
|
|
||||||
hollow(0.5, case)
|
hollow(0.5, case)
|
||||||
```
|
```
|
||||||
|
|||||||
@ -58,6 +58,7 @@ layout: manual
|
|||||||
* [`legAngY`](kcl/legAngY)
|
* [`legAngY`](kcl/legAngY)
|
||||||
* [`legLen`](kcl/legLen)
|
* [`legLen`](kcl/legLen)
|
||||||
* [`line`](kcl/line)
|
* [`line`](kcl/line)
|
||||||
|
* [`lineTo`](kcl/lineTo)
|
||||||
* [`ln`](kcl/ln)
|
* [`ln`](kcl/ln)
|
||||||
* [`loft`](kcl/loft)
|
* [`loft`](kcl/loft)
|
||||||
* [`log`](kcl/log)
|
* [`log`](kcl/log)
|
||||||
|
|||||||
@ -38,7 +38,7 @@ assertEqual(n, 3, 0.0001, "5/2 = 2.5, rounded up makes 3")
|
|||||||
// Draw n cylinders.
|
// Draw n cylinders.
|
||||||
startSketchOn('XZ')
|
startSketchOn('XZ')
|
||||||
|> circle({ center = [0, 0], radius = 2 }, %)
|
|> circle({ center = [0, 0], radius = 2 }, %)
|
||||||
|> extrude(length = 5)
|
|> extrude(5, %)
|
||||||
|> patternTransform(n, fn(id) {
|
|> patternTransform(n, fn(id) {
|
||||||
return { translate = [4 * id, 0, 0] }
|
return { translate = [4 * id, 0, 0] }
|
||||||
}, %)
|
}, %)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -34,18 +34,18 @@ loft(sketches: [Sketch], v_degree: NonZeroU32, bez_approximate_rational: bool, b
|
|||||||
// Loft a square and a triangle.
|
// Loft a square and a triangle.
|
||||||
squareSketch = startSketchOn('XY')
|
squareSketch = startSketchOn('XY')
|
||||||
|> startProfileAt([-100, 200], %)
|
|> startProfileAt([-100, 200], %)
|
||||||
|> line(end = [200, 0])
|
|> line([200, 0], %)
|
||||||
|> line(end = [0, -200])
|
|> line([0, -200], %)
|
||||||
|> line(end = [-200, 0])
|
|> line([-200, 0], %)
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|
|
||||||
triangleSketch = startSketchOn(offsetPlane('XY', 75))
|
triangleSketch = startSketchOn(offsetPlane('XY', 75))
|
||||||
|> startProfileAt([0, 125], %)
|
|> startProfileAt([0, 125], %)
|
||||||
|> line(end = [-15, -30])
|
|> line([-15, -30], %)
|
||||||
|> line(end = [30, 0])
|
|> line([30, 0], %)
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|
|
||||||
loft([squareSketch, triangleSketch])
|
loft([squareSketch, triangleSketch])
|
||||||
```
|
```
|
||||||
@ -56,11 +56,11 @@ loft([squareSketch, triangleSketch])
|
|||||||
// Loft a square, a circle, and another circle.
|
// Loft a square, a circle, and another circle.
|
||||||
squareSketch = startSketchOn('XY')
|
squareSketch = startSketchOn('XY')
|
||||||
|> startProfileAt([-100, 200], %)
|
|> startProfileAt([-100, 200], %)
|
||||||
|> line(end = [200, 0])
|
|> line([200, 0], %)
|
||||||
|> line(end = [0, -200])
|
|> line([0, -200], %)
|
||||||
|> line(end = [-200, 0])
|
|> line([-200, 0], %)
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|
|
||||||
circleSketch0 = startSketchOn(offsetPlane('XY', 75))
|
circleSketch0 = startSketchOn(offsetPlane('XY', 75))
|
||||||
|> circle({ center = [0, 100], radius = 50 }, %)
|
|> circle({ center = [0, 100], radius = 50 }, %)
|
||||||
@ -81,11 +81,11 @@ loft([
|
|||||||
// Loft a square, a circle, and another circle with options.
|
// Loft a square, a circle, and another circle with options.
|
||||||
squareSketch = startSketchOn('XY')
|
squareSketch = startSketchOn('XY')
|
||||||
|> startProfileAt([-100, 200], %)
|
|> startProfileAt([-100, 200], %)
|
||||||
|> line(end = [200, 0])
|
|> line([200, 0], %)
|
||||||
|> line(end = [0, -200])
|
|> line([0, -200], %)
|
||||||
|> line(end = [-200, 0])
|
|> line([-200, 0], %)
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|
|
||||||
circleSketch0 = startSketchOn(offsetPlane('XY', 75))
|
circleSketch0 = startSketchOn(offsetPlane('XY', 75))
|
||||||
|> circle({ center = [0, 100], radius = 50 }, %)
|
|> circle({ center = [0, 100], radius = 50 }, %)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -31,7 +31,7 @@ patternCircular3d(data: CircularPattern3dData, solid_set: SolidSet) -> [Solid]
|
|||||||
exampleSketch = startSketchOn('XZ')
|
exampleSketch = startSketchOn('XZ')
|
||||||
|> circle({ center = [0, 0], radius = 1 }, %)
|
|> circle({ center = [0, 0], radius = 1 }, %)
|
||||||
|
|
||||||
example = extrude(exampleSketch, length = -5)
|
example = extrude(-5, exampleSketch)
|
||||||
|> patternCircular3d({
|
|> patternCircular3d({
|
||||||
axis = [1, -1, 0],
|
axis = [1, -1, 0],
|
||||||
center = [10, -20, 0],
|
center = [10, -20, 0],
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -30,12 +30,12 @@ patternLinear3d(data: LinearPattern3dData, solid_set: SolidSet) -> [Solid]
|
|||||||
```js
|
```js
|
||||||
exampleSketch = startSketchOn('XZ')
|
exampleSketch = startSketchOn('XZ')
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [0, 2])
|
|> line([0, 2], %)
|
||||||
|> line(end = [3, 1])
|
|> line([3, 1], %)
|
||||||
|> line(end = [0, -4])
|
|> line([0, -4], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|
|
||||||
example = extrude(exampleSketch, length = 1)
|
example = extrude(1, exampleSketch)
|
||||||
|> patternLinear3d({
|
|> patternLinear3d({
|
||||||
axis = [1, 0, 1],
|
axis = [1, 0, 1],
|
||||||
instances = 7,
|
instances = 7,
|
||||||
|
|||||||
@ -63,7 +63,7 @@ fn transform(id) {
|
|||||||
// Sketch 4 cylinders.
|
// Sketch 4 cylinders.
|
||||||
sketch001 = startSketchOn('XZ')
|
sketch001 = startSketchOn('XZ')
|
||||||
|> circle({ center = [0, 0], radius = 2 }, %)
|
|> circle({ center = [0, 0], radius = 2 }, %)
|
||||||
|> extrude(length = 5)
|
|> extrude(5, %)
|
||||||
|> patternTransform(4, transform, %)
|
|> patternTransform(4, transform, %)
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ fn transform(id) {
|
|||||||
|
|
||||||
sketch001 = startSketchOn('XZ')
|
sketch001 = startSketchOn('XZ')
|
||||||
|> circle({ center = [0, 0], radius = 2 }, %)
|
|> circle({ center = [0, 0], radius = 2 }, %)
|
||||||
|> extrude(length = 5)
|
|> extrude(5, %)
|
||||||
|> patternTransform(4, transform, %)
|
|> patternTransform(4, transform, %)
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -97,12 +97,12 @@ fn cube(length, center) {
|
|||||||
|
|
||||||
return startSketchOn('XY')
|
return startSketchOn('XY')
|
||||||
|> startProfileAt(p0, %)
|
|> startProfileAt(p0, %)
|
||||||
|> line(endAbsolute = p1)
|
|> lineTo(p1, %)
|
||||||
|> line(endAbsolute = p2)
|
|> lineTo(p2, %)
|
||||||
|> line(endAbsolute = p3)
|
|> lineTo(p3, %)
|
||||||
|> line(endAbsolute = p0)
|
|> lineTo(p0, %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = length)
|
|> extrude(length, %)
|
||||||
}
|
}
|
||||||
|
|
||||||
width = 20
|
width = 20
|
||||||
@ -135,12 +135,12 @@ fn cube(length, center) {
|
|||||||
|
|
||||||
return startSketchOn('XY')
|
return startSketchOn('XY')
|
||||||
|> startProfileAt(p0, %)
|
|> startProfileAt(p0, %)
|
||||||
|> line(endAbsolute = p1)
|
|> lineTo(p1, %)
|
||||||
|> line(endAbsolute = p2)
|
|> lineTo(p2, %)
|
||||||
|> line(endAbsolute = p3)
|
|> lineTo(p3, %)
|
||||||
|> line(endAbsolute = p0)
|
|> lineTo(p0, %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = length)
|
|> extrude(length, %)
|
||||||
}
|
}
|
||||||
|
|
||||||
width = 20
|
width = 20
|
||||||
@ -179,7 +179,7 @@ fn layer() {
|
|||||||
return startSketchOn("XY")
|
return startSketchOn("XY")
|
||||||
// or some other plane idk
|
// or some other plane idk
|
||||||
|> circle({ center = [0, 0], radius = 1 }, %, $tag1)
|
|> circle({ center = [0, 0], radius = 1 }, %, $tag1)
|
||||||
|> extrude(length = h)
|
|> extrude(h, %)
|
||||||
}
|
}
|
||||||
// The vase is 100 layers tall.
|
// The vase is 100 layers tall.
|
||||||
// The 100 layers are replica of each other, with a slight transformation applied to each.
|
// The 100 layers are replica of each other, with a slight transformation applied to each.
|
||||||
@ -205,7 +205,7 @@ startSketchOn('XY')
|
|||||||
center = [0, 0],
|
center = [0, 0],
|
||||||
inscribed = false
|
inscribed = false
|
||||||
}, %)
|
}, %)
|
||||||
|> extrude(length = 4)
|
|> extrude(4, %)
|
||||||
|> patternTransform(3, transform, %)
|
|> patternTransform(3, transform, %)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -30,12 +30,12 @@ segEnd(tag: TagIdentifier) -> [number]
|
|||||||
w = 15
|
w = 15
|
||||||
cube = startSketchOn('XY')
|
cube = startSketchOn('XY')
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [w, 0], tag = $line1)
|
|> line([w, 0], %, $line1)
|
||||||
|> line(end = [0, w], tag = $line2)
|
|> line([0, w], %, $line2)
|
||||||
|> line(end = [-w, 0], tag = $line3)
|
|> line([-w, 0], %, $line3)
|
||||||
|> line(end = [0, -w], tag = $line4)
|
|> line([0, -w], %, $line4)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 5)
|
|> extrude(5, %)
|
||||||
|
|
||||||
fn cylinder(radius, tag) {
|
fn cylinder(radius, tag) {
|
||||||
return startSketchOn('XY')
|
return startSketchOn('XY')
|
||||||
@ -44,7 +44,7 @@ fn cylinder(radius, tag) {
|
|||||||
radius = radius,
|
radius = radius,
|
||||||
center = segEnd(tag)
|
center = segEnd(tag)
|
||||||
}, %)
|
}, %)
|
||||||
|> extrude(length = radius)
|
|> extrude(radius, %)
|
||||||
}
|
}
|
||||||
|
|
||||||
cylinder(1, line1)
|
cylinder(1, line1)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -30,12 +30,12 @@ segStart(tag: TagIdentifier) -> [number]
|
|||||||
w = 15
|
w = 15
|
||||||
cube = startSketchOn('XY')
|
cube = startSketchOn('XY')
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [w, 0], tag = $line1)
|
|> line([w, 0], %, $line1)
|
||||||
|> line(end = [0, w], tag = $line2)
|
|> line([0, w], %, $line2)
|
||||||
|> line(end = [-w, 0], tag = $line3)
|
|> line([-w, 0], %, $line3)
|
||||||
|> line(end = [0, -w], tag = $line4)
|
|> line([0, -w], %, $line4)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 5)
|
|> extrude(5, %)
|
||||||
|
|
||||||
fn cylinder(radius, tag) {
|
fn cylinder(radius, tag) {
|
||||||
return startSketchOn('XY')
|
return startSketchOn('XY')
|
||||||
@ -44,7 +44,7 @@ fn cylinder(radius, tag) {
|
|||||||
radius = radius,
|
radius = radius,
|
||||||
center = segStart(tag)
|
center = segStart(tag)
|
||||||
}, %)
|
}, %)
|
||||||
|> extrude(length = radius)
|
|> extrude(radius, %)
|
||||||
}
|
}
|
||||||
|
|
||||||
cylinder(1, line1)
|
cylinder(1, line1)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -31,11 +31,11 @@ shell(data: ShellData, solid_set: SolidSet) -> SolidSet
|
|||||||
// Remove the end face for the extrusion.
|
// Remove the end face for the extrusion.
|
||||||
firstSketch = startSketchOn('XY')
|
firstSketch = startSketchOn('XY')
|
||||||
|> startProfileAt([-12, 12], %)
|
|> startProfileAt([-12, 12], %)
|
||||||
|> line(end = [24, 0])
|
|> line([24, 0], %)
|
||||||
|> line(end = [0, -24])
|
|> line([0, -24], %)
|
||||||
|> line(end = [-24, 0])
|
|> line([-24, 0], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 6)
|
|> extrude(6, %)
|
||||||
|
|
||||||
// Remove the end face for the extrusion.
|
// Remove the end face for the extrusion.
|
||||||
shell({ faces = ['end'], thickness = 0.25 }, firstSketch)
|
shell({ faces = ['end'], thickness = 0.25 }, firstSketch)
|
||||||
@ -47,11 +47,11 @@ shell({ faces = ['end'], thickness = 0.25 }, firstSketch)
|
|||||||
// Remove the start face for the extrusion.
|
// Remove the start face for the extrusion.
|
||||||
firstSketch = startSketchOn('-XZ')
|
firstSketch = startSketchOn('-XZ')
|
||||||
|> startProfileAt([-12, 12], %)
|
|> startProfileAt([-12, 12], %)
|
||||||
|> line(end = [24, 0])
|
|> line([24, 0], %)
|
||||||
|> line(end = [0, -24])
|
|> line([0, -24], %)
|
||||||
|> line(end = [-24, 0])
|
|> line([-24, 0], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 6)
|
|> extrude(6, %)
|
||||||
|
|
||||||
// Remove the start face for the extrusion.
|
// Remove the start face for the extrusion.
|
||||||
shell({ faces = ['start'], thickness = 0.25 }, firstSketch)
|
shell({ faces = ['start'], thickness = 0.25 }, firstSketch)
|
||||||
@ -63,11 +63,11 @@ shell({ faces = ['start'], thickness = 0.25 }, firstSketch)
|
|||||||
// Remove a tagged face and the end face for the extrusion.
|
// Remove a tagged face and the end face for the extrusion.
|
||||||
firstSketch = startSketchOn('XY')
|
firstSketch = startSketchOn('XY')
|
||||||
|> startProfileAt([-12, 12], %)
|
|> startProfileAt([-12, 12], %)
|
||||||
|> line(end = [24, 0])
|
|> line([24, 0], %)
|
||||||
|> line(end = [0, -24])
|
|> line([0, -24], %)
|
||||||
|> line(end = [-24, 0], tag = $myTag)
|
|> line([-24, 0], %, $myTag)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 6)
|
|> extrude(6, %)
|
||||||
|
|
||||||
// Remove a tagged face for the extrusion.
|
// Remove a tagged face for the extrusion.
|
||||||
shell({ faces = [myTag], thickness = 0.25 }, firstSketch)
|
shell({ faces = [myTag], thickness = 0.25 }, firstSketch)
|
||||||
@ -79,11 +79,11 @@ shell({ faces = [myTag], thickness = 0.25 }, firstSketch)
|
|||||||
// Remove multiple faces at once.
|
// Remove multiple faces at once.
|
||||||
firstSketch = startSketchOn('XY')
|
firstSketch = startSketchOn('XY')
|
||||||
|> startProfileAt([-12, 12], %)
|
|> startProfileAt([-12, 12], %)
|
||||||
|> line(end = [24, 0])
|
|> line([24, 0], %)
|
||||||
|> line(end = [0, -24])
|
|> line([0, -24], %)
|
||||||
|> line(end = [-24, 0], tag = $myTag)
|
|> line([-24, 0], %, $myTag)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 6)
|
|> extrude(6, %)
|
||||||
|
|
||||||
// Remove a tagged face and the end face for the extrusion.
|
// Remove a tagged face and the end face for the extrusion.
|
||||||
shell({
|
shell({
|
||||||
@ -99,25 +99,25 @@ shell({
|
|||||||
size = 100
|
size = 100
|
||||||
case = startSketchOn('-XZ')
|
case = startSketchOn('-XZ')
|
||||||
|> startProfileAt([-size, -size], %)
|
|> startProfileAt([-size, -size], %)
|
||||||
|> line(end = [2 * size, 0])
|
|> line([2 * size, 0], %)
|
||||||
|> line(end = [0, 2 * size])
|
|> line([0, 2 * size], %)
|
||||||
|> tangentialArcTo([-size, size], %)
|
|> tangentialArcTo([-size, size], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 65)
|
|> extrude(65, %)
|
||||||
|
|
||||||
thing1 = startSketchOn(case, 'end')
|
thing1 = startSketchOn(case, 'end')
|
||||||
|> circle({
|
|> circle({
|
||||||
center = [-size / 2, -size / 2],
|
center = [-size / 2, -size / 2],
|
||||||
radius = 25
|
radius = 25
|
||||||
}, %)
|
}, %)
|
||||||
|> extrude(length = 50)
|
|> extrude(50, %)
|
||||||
|
|
||||||
thing2 = startSketchOn(case, 'end')
|
thing2 = startSketchOn(case, 'end')
|
||||||
|> circle({
|
|> circle({
|
||||||
center = [size / 2, -size / 2],
|
center = [size / 2, -size / 2],
|
||||||
radius = 25
|
radius = 25
|
||||||
}, %)
|
}, %)
|
||||||
|> extrude(length = 50)
|
|> extrude(50, %)
|
||||||
|
|
||||||
// We put "case" in the shell function to shell the entire object.
|
// We put "case" in the shell function to shell the entire object.
|
||||||
shell({ faces = ['start'], thickness = 5 }, case)
|
shell({ faces = ['start'], thickness = 5 }, case)
|
||||||
@ -130,25 +130,25 @@ shell({ faces = ['start'], thickness = 5 }, case)
|
|||||||
size = 100
|
size = 100
|
||||||
case = startSketchOn('XY')
|
case = startSketchOn('XY')
|
||||||
|> startProfileAt([-size, -size], %)
|
|> startProfileAt([-size, -size], %)
|
||||||
|> line(end = [2 * size, 0])
|
|> line([2 * size, 0], %)
|
||||||
|> line(end = [0, 2 * size])
|
|> line([0, 2 * size], %)
|
||||||
|> tangentialArcTo([-size, size], %)
|
|> tangentialArcTo([-size, size], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 65)
|
|> extrude(65, %)
|
||||||
|
|
||||||
thing1 = startSketchOn(case, 'end')
|
thing1 = startSketchOn(case, 'end')
|
||||||
|> circle({
|
|> circle({
|
||||||
center = [-size / 2, -size / 2],
|
center = [-size / 2, -size / 2],
|
||||||
radius = 25
|
radius = 25
|
||||||
}, %)
|
}, %)
|
||||||
|> extrude(length = 50)
|
|> extrude(50, %)
|
||||||
|
|
||||||
thing2 = startSketchOn(case, 'end')
|
thing2 = startSketchOn(case, 'end')
|
||||||
|> circle({
|
|> circle({
|
||||||
center = [size / 2, -size / 2],
|
center = [size / 2, -size / 2],
|
||||||
radius = 25
|
radius = 25
|
||||||
}, %)
|
}, %)
|
||||||
|> extrude(length = 50)
|
|> extrude(50, %)
|
||||||
|
|
||||||
// We put "thing1" in the shell function to shell the end face of the object.
|
// We put "thing1" in the shell function to shell the end face of the object.
|
||||||
shell({ faces = ['end'], thickness = 5 }, thing1)
|
shell({ faces = ['end'], thickness = 5 }, thing1)
|
||||||
@ -164,25 +164,25 @@ shell({ faces = ['end'], thickness = 5 }, thing1)
|
|||||||
size = 100
|
size = 100
|
||||||
case = startSketchOn('XY')
|
case = startSketchOn('XY')
|
||||||
|> startProfileAt([-size, -size], %)
|
|> startProfileAt([-size, -size], %)
|
||||||
|> line(end = [2 * size, 0])
|
|> line([2 * size, 0], %)
|
||||||
|> line(end = [0, 2 * size])
|
|> line([0, 2 * size], %)
|
||||||
|> tangentialArcTo([-size, size], %)
|
|> tangentialArcTo([-size, size], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
|> extrude(length = 65)
|
|> extrude(65, %)
|
||||||
|
|
||||||
thing1 = startSketchOn(case, 'end')
|
thing1 = startSketchOn(case, 'end')
|
||||||
|> circle({
|
|> circle({
|
||||||
center = [-size / 2, -size / 2],
|
center = [-size / 2, -size / 2],
|
||||||
radius = 25
|
radius = 25
|
||||||
}, %)
|
}, %)
|
||||||
|> extrude(length = 50)
|
|> extrude(50, %)
|
||||||
|
|
||||||
thing2 = startSketchOn(case, 'end')
|
thing2 = startSketchOn(case, 'end')
|
||||||
|> circle({
|
|> circle({
|
||||||
center = [size / 2, -size / 2],
|
center = [size / 2, -size / 2],
|
||||||
radius = 25
|
radius = 25
|
||||||
}, %)
|
}, %)
|
||||||
|> extrude(length = 50)
|
|> extrude(50, %)
|
||||||
|
|
||||||
// We put "thing1" and "thing2" in the shell function to shell the end face of the object.
|
// We put "thing1" and "thing2" in the shell function to shell the end face of the object.
|
||||||
shell({ faces = ['end'], thickness = 5 }, [thing1, thing2])
|
shell({ faces = ['end'], thickness = 5 }, [thing1, thing2])
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
9320
docs/kcl/std.json
9320
docs/kcl/std.json
File diff suppressed because it is too large
Load Diff
@ -34,11 +34,11 @@ sweep(data: SweepData, sketch: Sketch) -> Solid
|
|||||||
// Create a path for the sweep.
|
// Create a path for the sweep.
|
||||||
sweepPath = startSketchOn('XZ')
|
sweepPath = startSketchOn('XZ')
|
||||||
|> startProfileAt([0.05, 0.05], %)
|
|> startProfileAt([0.05, 0.05], %)
|
||||||
|> line(end = [0, 7])
|
|> line([0, 7], %)
|
||||||
|> tangentialArc({ offset = 90, radius = 5 }, %)
|
|> tangentialArc({ offset = 90, radius = 5 }, %)
|
||||||
|> line(end = [-3, 0])
|
|> line([-3, 0], %)
|
||||||
|> tangentialArc({ offset = -90, radius = 5 }, %)
|
|> tangentialArc({ offset = -90, radius = 5 }, %)
|
||||||
|> line(end = [0, 7])
|
|> line([0, 7], %)
|
||||||
|
|
||||||
// Create a hole for the pipe.
|
// Create a hole for the pipe.
|
||||||
pipeHole = startSketchOn('XY')
|
pipeHole = startSketchOn('XY')
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -20,11 +20,11 @@ test.describe('Code pane and errors', () => {
|
|||||||
`// Extruded Triangle
|
`// Extruded Triangle
|
||||||
sketch001 = startSketchOn('XZ')
|
sketch001 = startSketchOn('XZ')
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line(end = [10, 0])
|
|> line([10, 0], %)
|
||||||
|> line(end = [-5, 10])
|
|> line([-5, 10], %)
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
extrude001 = extrude(sketch001, length = 5)`
|
extrude001 = extrude(5, sketch001)`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -79,10 +79,8 @@ test.describe('Code pane and errors', () => {
|
|||||||
|
|
||||||
// Delete a character to break the KCL
|
// Delete a character to break the KCL
|
||||||
await editor.openPane()
|
await editor.openPane()
|
||||||
await editor.scrollToText('bracketLeg1Sketch, length = thickness)')
|
await editor.scrollToText('thickness, bracketLeg1Sketch)')
|
||||||
await page
|
await page.getByText('extrude(thickness, bracketLeg1Sketch)').click()
|
||||||
.getByText('extrude(bracketLeg1Sketch, length = thickness)')
|
|
||||||
.click()
|
|
||||||
await page.keyboard.press('Backspace')
|
await page.keyboard.press('Backspace')
|
||||||
|
|
||||||
// Ensure that a badge appears on the button
|
// Ensure that a badge appears on the button
|
||||||
@ -109,7 +107,7 @@ test.describe('Code pane and errors', () => {
|
|||||||
await editor.openPane()
|
await editor.openPane()
|
||||||
|
|
||||||
// Go to our problematic code again (missing closing paren!)
|
// Go to our problematic code again (missing closing paren!)
|
||||||
await editor.scrollToText('extrude(bracketLeg1Sketch, length = thickness')
|
await editor.scrollToText('extrude(thickness, bracketLeg1Sketch')
|
||||||
|
|
||||||
// Ensure that a badge appears on the button
|
// Ensure that a badge appears on the button
|
||||||
await expect(codePaneButtonHolder).toContainText('notification')
|
await expect(codePaneButtonHolder).toContainText('notification')
|
||||||
|
|||||||
@ -14,10 +14,10 @@ test.describe('Command bar tests', () => {
|
|||||||
'persistCode',
|
'persistCode',
|
||||||
`sketch001 = startSketchOn('XY')
|
`sketch001 = startSketchOn('XY')
|
||||||
|> startProfileAt([-10, -10], %)
|
|> startProfileAt([-10, -10], %)
|
||||||
|> line(end = [20, 0])
|
|> line([20, 0], %)
|
||||||
|> line(end = [0, 20])
|
|> line([0, 20], %)
|
||||||
|> xLine(-20, %)
|
|> xLine(-20, %)
|
||||||
|> close()
|
|> close(%)
|
||||||
`
|
`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
@ -32,7 +32,7 @@ test.describe('Command bar tests', () => {
|
|||||||
await u.closeDebugPanel()
|
await u.closeDebugPanel()
|
||||||
|
|
||||||
// Click the line of code for xLine.
|
// Click the line of code for xLine.
|
||||||
await page.getByText(`close()`).click() // TODO remove this and reinstate // await topHorzSegmentClick()
|
await page.getByText(`close(%)`).click() // TODO remove this and reinstate // await topHorzSegmentClick()
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
|
|
||||||
await page.getByRole('button', { name: 'Extrude' }).click()
|
await page.getByRole('button', { name: 'Extrude' }).click()
|
||||||
@ -42,47 +42,7 @@ test.describe('Command bar tests', () => {
|
|||||||
await page.keyboard.press('Enter')
|
await page.keyboard.press('Enter')
|
||||||
await page.waitForTimeout(200)
|
await page.waitForTimeout(200)
|
||||||
await expect(page.locator('.cm-activeLine')).toHaveText(
|
await expect(page.locator('.cm-activeLine')).toHaveText(
|
||||||
`extrude001 = extrude(sketch001, length = ${KCL_DEFAULT_LENGTH})`
|
`extrude001 = extrude(${KCL_DEFAULT_LENGTH}, sketch001)`
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
// TODO: fix this test after the electron migration
|
|
||||||
test.fixme('Fillet from command bar', async ({ page, homePage }) => {
|
|
||||||
await page.addInitScript(async () => {
|
|
||||||
localStorage.setItem(
|
|
||||||
'persistCode',
|
|
||||||
`sketch001 = startSketchOn('XY')
|
|
||||||
|> startProfileAt([-5, -5], %)
|
|
||||||
|> line(end = [0, 10])
|
|
||||||
|> line(end = [10, 0])
|
|
||||||
|> line(end = [0, -10])
|
|
||||||
|> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
|
||||||
|> close()
|
|
||||||
extrude001 = extrude(sketch001, length = -10)`
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
const u = await getUtils(page)
|
|
||||||
await page.setBodyDimensions({ width: 1000, height: 500 })
|
|
||||||
await homePage.goToModelingScene()
|
|
||||||
await u.openDebugPanel()
|
|
||||||
await u.expectCmdLog('[data-message-type="execution-done"]')
|
|
||||||
await u.closeDebugPanel()
|
|
||||||
|
|
||||||
const selectSegment = () => page.getByText(`line(end = [0, -10])`).click()
|
|
||||||
|
|
||||||
await selectSegment()
|
|
||||||
await page.waitForTimeout(100)
|
|
||||||
await page.getByRole('button', { name: 'Fillet' }).click()
|
|
||||||
await page.waitForTimeout(100)
|
|
||||||
await page.keyboard.press('Enter') // skip selection
|
|
||||||
await page.waitForTimeout(100)
|
|
||||||
await page.keyboard.press('Enter') // accept default radius
|
|
||||||
await page.waitForTimeout(100)
|
|
||||||
await page.keyboard.press('Enter') // submit
|
|
||||||
await page.waitForTimeout(100)
|
|
||||||
await expect(page.locator('.cm-activeLine')).toContainText(
|
|
||||||
`fillet({ radius = ${KCL_DEFAULT_LENGTH}, tags = [seg01] }, %)`
|
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -223,10 +183,10 @@ test.describe('Command bar tests', () => {
|
|||||||
`distance = sqrt(20)
|
`distance = sqrt(20)
|
||||||
sketch001 = startSketchOn('XZ')
|
sketch001 = startSketchOn('XZ')
|
||||||
|> startProfileAt([-6.95, 10.98], %)
|
|> startProfileAt([-6.95, 10.98], %)
|
||||||
|> line(end = [25.1, 0.41])
|
|> line([25.1, 0.41], %)
|
||||||
|> line(end = [0.73, -20.93])
|
|> line([0.73, -20.93], %)
|
||||||
|> line(end = [-23.44, 0.52])
|
|> line([-23.44, 0.52], %)
|
||||||
|> close()
|
|> close(%)
|
||||||
`
|
`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
@ -291,7 +251,7 @@ test.describe('Command bar tests', () => {
|
|||||||
await u.waitForCmdReceive('extrude')
|
await u.waitForCmdReceive('extrude')
|
||||||
|
|
||||||
await expect(page.locator('.cm-content')).toContainText(
|
await expect(page.locator('.cm-content')).toContainText(
|
||||||
'extrude001 = extrude(sketch001, length = distance001)'
|
'extrude001 = extrude(distance001, sketch001)'
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user