Compare commits

...

39 Commits

Author SHA1 Message Date
525f213f1d Assemblies: Make Clone available in releases (#6538)
* Assemblies: Make Clone available in releases
Fixes #6537

* Lint
2025-04-30 14:10:52 -04:00
58a81da039 Update Insert, Transform, and Clone codemods to match new import behavior (#6577)
* Fix operations to reflect concurrent module import behavior

* Add new generated output

* Fix root module import tracking

* Rename test so that it's easier to filter

* Update output ops

* Fix clippy

* Update output after rebase

* Update multi-axis-robot flowchart output

* Disable e2e tests until future PR

* WIP: Update Insert and Transform codemods to match new import behavior
Fixes #6570

* Fix operations to reflect concurrent module import behavior

* Add new generated output

* Fix root module import tracking

* Rename test so that it's easier to filter

* Update output ops

* Fix clippy

* Update output after rebase

* Disable e2e tests until future PR

* Update one of the tests

* Somewhat working very ugly translate

* Working translate and rotate

* Fix deletion

* Clean up things and disable tests deleting the *first* import due to unclear issue

* Fix Clone

* Clean up ahead of review

* Support cases with translate and rotate in two different pipes (but not for deletion)

* Fix generated output; probably from recent merge

* Find all pipes and look for last in most cases, adding fallbacks to set translate/rotate on the right ones

* More fixups

* Delete unused snap file

* Update src/lang/queryAst.ts

Co-authored-by: Jonathan Tran <jonnytran@gmail.com>

* Change lint ignore to be more specific

* Add test that checks we can still translate, rotate, and delete weird import code

* Clean up

---------

Co-authored-by: Jonathan Tran <jonnytran@gmail.com>
2025-04-30 13:07:39 -04:00
0002295cdf Fix operations to reflect concurrent module import behavior (#6568)
* Fix operations to reflect concurrent module import behavior

* Add new generated output

* Fix root module import tracking

* Rename test so that it's easier to filter

* Update output ops

* Fix clippy

* Update output after rebase

* Disable e2e tests until future PR

* Fix generated output; probably from recent merge

* Delete unused snap file
2025-04-30 16:26:46 +00:00
c050739f41 Some improvements to the boxed signatures in the docs (#6593)
* Show a more reasonable name in function docs

Signed-off-by: Nick Cameron <nrc@ncameron.org>

* Fix buggy docs for union types

Signed-off-by: Nick Cameron <nrc@ncameron.org>

* Make types in the docs signatures into links

Signed-off-by: Nick Cameron <nrc@ncameron.org>

---------

Signed-off-by: Nick Cameron <nrc@ncameron.org>
2025-04-30 16:03:22 +00:00
ccd5b0272d Add math functions back to the prelude (#6595)
* Add math functions back to the prelude

* Update output

* Update docs
2025-04-30 11:07:05 -04:00
f1fdf48834 tidy up modeling diagram (#6594)
* neaten modeling diagram

* moar
2025-04-30 10:10:30 +02:00
bae875382c Replace plane strings with literals (#6592)
Signed-off-by: Nick Cameron <nrc@ncameron.org>
2025-04-30 05:13:11 +00:00
14ce66bcc1 Fix to have stable sorting for end cap artifacts (#6589)
* Fix to have stable sorting for end cap artifacts

* Update output
2025-04-30 04:34:35 +00:00
644c561815 Declare std::math in KCL (BREAKING) (#6588)
Declare std::math in KCL

Signed-off-by: Nick Cameron <nrc@ncameron.org>
2025-04-30 03:59:19 +00:00
5f31f3a6b3 Lint suggestion variables on non-camelCase (#6590)
* initial

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
2025-04-30 15:41:40 +12:00
a0afe9dd0e bump kcl and friends in prep for release (#6591)
Signed-off-by: Jess Frazelle <github@jessfraz.com>
2025-04-30 15:39:13 +12:00
9c29756a38 lint default planes and add a suggestion (#6587)
lint default planes and other plane cleanup

Signed-off-by: Jess Frazelle <github@jessfraz.com>
2025-04-30 02:11:02 +00:00
bf63b21d74 [BUG] circle and threePointArc and other overlay fixes (#6409)
* fix length constrainting

* conflicet

* fix circle center constraints

* fix up circle remove constraints more and add test

* fix three point arc overlays and add test for it

* fixes

* console log

* fix tangential arc stuff

* fmt

* fix unit test

* fix console error when selectiong arc
2025-04-30 02:08:45 +00:00
0ea0d1703e Remove deprecated syntax (#6561)
* Remove deprecated syntax

Signed-off-by: Nick Cameron <nrc@ncameron.org>

* fix one test

* fix sketch on revolved face test

* fix test: empty-scene default-planes act as expected

* fix up more tests

* another fix

* remove another const

---------

Signed-off-by: Nick Cameron <nrc@ncameron.org>
Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
2025-04-30 13:12:40 +12:00
29b8a442c2 Codemirror lsp enhance (#6580)
* codemirror side

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* codemirror actions

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* codemirror actions

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* code mirror now shows lint suggestions

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix hanging params with test

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates for signature help

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix clone

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* add tests

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* add tests

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* clippy

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* clippy

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* Update packages/codemirror-lsp-client/src/plugin/lsp.ts

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* z-index

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* playwright tests

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-04-29 20:57:02 -04:00
844f229b5a Remove trig functions from prelude and change their unit handling (BREAKING) (#6565)
Remove trig functions from prelude and change their unit handling

Signed-off-by: Nick Cameron <nrc@ncameron.org>
2025-04-30 12:40:11 +12:00
fa51b4bbbc Post-kwargs cleanup (#6571)
* Remove dead code
* Stop creating CallExpression and instead create CallExpressionKw
2025-04-29 16:05:45 -05:00
1fa6e1eccc Name shards consistently (#6582) 2025-04-29 16:39:08 -04:00
44b810ee0a Partition nextest runs (#6574)
* Partition nextest runs

* move name back to 'cargo test'

* Fix duplicate name

There were two jobs both named `build-test-artifacts`. Changed the latter
to `run-test-artifacts`

* cd into rust/ before running nextest

* Get token when running the tests

* Try getting archive into correct dir via different method

* Bump shards to 6

* Replace llvm-cov with nextest

* Adjust job name

* Remove unnecessary comments

---------

Co-authored-by: Jace Browning <jacebrowning@gmail.com>
2025-04-29 16:28:13 -04:00
a9998be176 Remove unneeded derive Deserialize (#6579)
This revealed that one of our variants is never constructed.
2025-04-29 12:17:41 -07:00
5e200aebcc [Feature]: Load external model becomes Add file to project, global application add file to project with home page update. (#6506)
* chore: saving off skeleton

* fix: saving skeleton

* chore: skeleton for loading projects from project directory path

* chore: cleaning up useless state transition to be an on event direct to action state

* fix: new structure for web vs desktop vs react machine provider code

* chore: saving off skeleton

* fix: skeleton logic for react? going to move it from a string to obj.string

* fix: trying to prevent error element unmount on global react components. This is bricking JS state

* fix: we are so back

* chore: implemented navigating to specfic KCL file

* chore: implementing renaming project

* chore: deleting project

* fix: auto fixes

* fix: old debug/testing file oops

* chore: generic create new file

* chore: skeleton for web create file provide

* chore: basic machine vitest... need to figure out how to get window.electron implemented in vitest?

* chore: save off progress before deleting other project implementation, a few missing features still

* chore: trying a different init skeleton? most likely will migrate

* chore: first attempt of purging projects context provider

* chore: enabling toast for some machine state

* chore: enabling more toast success and error

* chore: writing read write state to the system io based on the project path

* fix: tsc fixes

* fix: use file system watcher, navigate to project after creation via the requestProjectName

* chore: open project command, hooks vs snapshot context helpers

* chore: implemented open and create project for e2e testing. They are hard coded in poor spot for now.

* fix: codespell fixes

* chore: implementing more project commands

* chore: PR improvements for root.tsx

* chore: leaving comment about new Router.tsx layout

* fix: removing debugging code

* fix: rewriting component for readability

* fix: improving web initialization

* chore: implementing import file from url which is not actually that?

* fix: clearing search params on import file from url

* fix: fixed two e2e tests, forgot needsReview when making new command

* fix: fixing some import from url business logic to pass e2e tests

* chore: script for diffing circular deps +/-

* fix: formatting

* fix: massive fix for circular depsga!

* fix: trying to fix some errors and auto fmt

* fix: updating deps

* fix: removing debugging code

* fix: big clean up

* fix: more deletion

* fix: tsc cleanup

* fix: TSC TSC TSC TSC!

* fix: typo fix

* fix: clear query params on web only, desktop not required

* fix: removing unused code

* fmt

* Bring back `trap` removed in merge

* Use explicit types instead of `any`s on arg configs

* Add project commands directly to command palette

* fix: deleting debugging code, from PR review

* fix: this got added back(?)

* fix: using referred type

* fix: more PR clean up

* fix: big block comment for xstate architecture decision

* fix: more pr comment fixes

* fix: saving off logic, need a big cleanup because I hacked it together to get a POC

* fix: extra business?

* fix: merge conflict just added them back why dude

* fix: more PR comments

* fix: big ciruclar deps fix, commandBarActor in appActor

* chore: writing e2e test, still need to fix 3 bugs

* chore: adding more scenarios

* fix: formatting

* fix: fixing tsc errors

* chore: deleting the old text to cad and using the new application level one, almost there

* fix: prompt to edit works

* fix: large push to get 1 text to cad command... the usage is a little buggy with delete and navigate within /file

* fix: settings for highlight edges now works

* chore: adding another e2e test

* fix: cleaning up e2e tests and writing more of them

* fix: tsc type

* chore: more e2e improvements, unique project name  in text to cad

* chore: e2e tests should be good to go

* fix: gotcha comment

* fix: enabled web t2c, codespell fixes

* fix: fixing merge conflcits??

* feat: implemented load external for kcl samples

* feat: load external model from disk

* fix: trying to delete old stuff

* fix: all command trigger locations now have defaults for current project

* fix: gotcha comment for the future

* chore: hiding import file from url command, two separate commands for 3d and kcl file adding

* chore: commands are now add file to project, 3rd iteration

* fix: t2c in file menu fixed

* chore: updating file menu for new global actions

* fix: auto fixes

* fix: the command bar arg flow for web add kcl file seems backwards?

* chore: updated home layout, added create from kcl sample button

* chore: remapping some menu actions

* fix: fixing open dialog copy

* fix: an e2e test

* fix: fixed e2e tests

* fix: fixed e2e tests

* fix: auto fixes

* fix: pr clean up

* fix: removing console log

* fix: PR updates

* fix: the reviewed stage boolean required the expected state to change. Also I progressed the command bar too soon

* fix: no idea how this passed locally yesterday? I removed the {dir} unused but I need the function's logic but not the return value...

* fix: should be good to go?

---------

Co-authored-by: Frank Noirot <frankjohnson1993@gmail.com>
2025-04-29 13:04:45 -05:00
e0cd3efc64 fix edge cuts & clone (#6572)
* fix edge cuts & clone

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix edge_id

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* code comemnt

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
2025-04-29 16:51:52 +00:00
77e3efde9a Deterministic parallelized snaps (#6527)
* initial pass

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

changes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

more updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

more updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

serde variant name

Signed-off-by: Jess Frazelle <github@jessfraz.com>

fixes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

some sort

Signed-off-by: Jess Frazelle <github@jessfraz.com>

some sort

Signed-off-by: Jess Frazelle <github@jessfraz.com>

some sort

Signed-off-by: Jess Frazelle <github@jessfraz.com>

some sort

Signed-off-by: Jess Frazelle <github@jessfraz.com>

some sort

Signed-off-by: Jess Frazelle <github@jessfraz.com>

some sort

Signed-off-by: Jess Frazelle <github@jessfraz.com>

some sort

Signed-off-by: Jess Frazelle <github@jessfraz.com>

some sort

Signed-off-by: Jess Frazelle <github@jessfraz.com>

some sort

Signed-off-by: Jess Frazelle <github@jessfraz.com>

some sort

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

sort the edges

Signed-off-by: Jess Frazelle <github@jessfraz.com>

fixes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

u[dates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

u[dates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

cleanups

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

add bs-to-kcl

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fixes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fixes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fixes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
2025-04-29 13:38:52 +00:00
a173a82d59 Remove skips to align with new way of opting-in tests (#6560) 2025-04-29 08:50:19 -04:00
4d2bc18c2f Fix lint after #6558 (#6562) 2025-04-29 15:23:50 +10:00
aca5fdb521 Remove some deprecated functions from std (#6531)
Signed-off-by: Nick Cameron <nrc@ncameron.org>
2025-04-28 20:24:18 -04:00
8867258e47 Notify TAB API to share a summary report on PRs (#6544)
* Notify TAB API to share a summary report on PRs

* wip: break a test

* Revert "wip: break a test"

This reverts commit 80c3793cbd.
2025-04-28 19:30:42 -04:00
f6cb725268 [bug]: Chokidar + reading projects spams multiple times (#6558)
fix: do not double or triple load reading folders from disk due to file system watcher when deleting
2025-04-28 19:15:20 -04:00
1bd570ceb9 Remove unnecessary docs (#6559)
These aren't used anymore
2025-04-28 22:42:01 +00:00
1c87298b44 Migrate more functions to use kwargs (#6551)
These little helper functions (legAng, segLen etc) were already using keyword arguments, but when the frontend created AST nodes, it was creating them as CallExpression not CallExpressionKw. We have backwards-compatibility so it's fine, but we should not be relying on that anymore.

This PR should not have any user-observable change.
2025-04-28 22:21:37 +00:00
3a23ec1bee Create std::units module (#6528)
Signed-off-by: Nick Cameron <nrc@ncameron.org>
2025-04-29 08:41:31 +12:00
d96a4d3337 Improvements to axis handling (#6530)
Signed-off-by: Nick Cameron <nrc@ncameron.org>
2025-04-29 08:29:22 +12:00
94452cce88 ability to set suggestions on lints (#6535)
* fix the lint tests which were not compiling

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* apply sugggestions for offsetplanes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* diagnostics and suggestions for offset planes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
2025-04-29 07:07:10 +12:00
2e754f2a11 BREAKING: Change to disallow indexing KCL records/objects with strings (#6529)
* Change to disallow indexing records/objects with strings

* Update output

* Remove outdated sim test

* Fix tests
2025-04-28 12:08:47 -04:00
719136937e #4852 Add test for delete line segments in sketch mode using keyboard (#6543)
* wip hack to delete line segments

* unrelated: clean up console

* better check if current selection is segment before deletion

* lint

* add test for delete segment with key
2025-04-28 11:32:55 -04:00
e207552255 Home: Update read blog icon to glasses (#6541) 2025-04-28 14:47:15 +00:00
1835e49191 Remove docs for deleted KCL functions (#6540)
These functions were removed as part of our big 1.0 kwargs work,
so their docs page should have been deleted, but we forgot to.
2025-04-28 14:43:24 +00:00
145c28bbd5 Remove unused Arc button from toolbar (#6539) 2025-04-28 14:32:43 +00:00
a58a3361b6 #4852 Delete line segments in sketch mode using keyboard (#6407)
* wip hack to delete line segments

* unrelated: clean up console

* better check if current selection is segment before deletion

* lint
2025-04-28 10:27:11 -04:00
1087 changed files with 268137 additions and 275354 deletions

View File

@ -13,11 +13,11 @@ concurrency:
cancel-in-progress: true
name: cargo test
jobs:
cargotest:
name: cargo test
build-test-artifacts:
name: Build test artifacts
runs-on:
- runs-on=${{ github.run_id }}
- runner=32cpu-linux-x64
- runner=8cpu-linux-x64
- extras=s3-cache
steps:
- uses: runs-on/action@v1
@ -43,7 +43,6 @@ jobs:
env:
GH_ACTIONS_AXIOM_TOKEN: ${{ secrets.GH_ACTIONS_AXIOM_TOKEN }}
OS_NAME: ${{ env.OS_NAME }}
- uses: taiki-e/install-action@cargo-llvm-cov
- uses: taiki-e/install-action@nextest
- name: Install just
uses: taiki-e/install-action@just
@ -121,21 +120,67 @@ jobs:
# Configure nextest when it's run by insta (via just).
NEXTEST_PROFILE: ci
RUST_BACKTRACE: full
- name: cargo test
if: steps.path-changes.outputs.outside-kcl-samples == 'true'
- name: Build and archive tests
run: |
cd rust
cargo nextest archive --workspace --features artifact-graph --archive-file nextest-archive.tar.zst
- name: Upload archive to workflow
uses: actions/upload-artifact@v4
with:
name: nextest-archive
path: rust/nextest-archive.tar.zst
run-test-artifacts:
name: cargo test (shard ${{ matrix.partitionIndex}})
runs-on:
- runs-on=${{ github.run_id }}
- runner=32cpu-linux-x64
- extras=s3-cache
needs: build-test-artifacts
strategy:
fail-fast: false
matrix:
partitionIndex: [1, 2, 3, 4, 5, 6]
partitionTotal: [6]
steps:
- uses: runs-on/action@v1
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ secrets.MODELING_APP_GH_APP_ID }}
private-key: ${{ secrets.MODELING_APP_GH_APP_PRIVATE_KEY }}
owner: ${{ github.repository_owner }}
- uses: actions/checkout@v4
with:
token: ${{ steps.app-token.outputs.token }}
- name: Use correct Rust toolchain
shell: bash
run: |
[ -e rust-toolchain.toml ] || cp rust/rust-toolchain.toml ./
- name: Install rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
cache: false # Configured below.
- name: Start Vector
run: .github/ci-cd-scripts/start-vector-ubuntu.sh
env:
GH_ACTIONS_AXIOM_TOKEN: ${{ secrets.GH_ACTIONS_AXIOM_TOKEN }}
OS_NAME: ${{ env.OS_NAME }}
- uses: taiki-e/install-action@nextest
- name: Download archive
uses: actions/download-artifact@v4
with:
name: nextest-archive
- name: Run tests
shell: bash
run: |-
cp nextest-archive.tar.zst rust/nextest-archive.tar.zst
ls -lah
cd rust
cargo llvm-cov nextest --workspace --features artifact-graph --lcov --output-path lcov.info --retries=2 --no-fail-fast -P ci 2>&1 | tee /tmp/github-actions.log
cargo nextest run\
--retries=2 --no-fail-fast -P ci --archive-file nextest-archive.tar.zst \
--partition count:${{ matrix.partitionIndex}}/${{ matrix.partitionTotal }} \
2>&1 | tee /tmp/github-actions.log
env:
KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}}
- name: Upload to codecov.io
if: steps.path-changes.outputs.outside-kcl-samples == 'true'
uses: codecov/codecov-action@v5
with:
token: ${{secrets.CODECOV_TOKEN}}
fail_ci_if_error: true
flags: rust
verbose: true
files: lcov.info

View File

@ -277,7 +277,7 @@ jobs:
timeout-minutes: 60
env:
OS_NAME: ${{ contains(matrix.os, 'ubuntu') && 'ubuntu' || (contains(matrix.os, 'windows') && 'windows' || 'macos') }}
name: playwright:electron:${{ contains(matrix.os, 'ubuntu') && 'ubuntu' || (contains(matrix.os, 'windows') && 'windows' || 'macos') }}:${{ matrix.shardIndex }}:${{ matrix.shardTotal }}
name: playwright:electron:${{ contains(matrix.os, 'ubuntu') && 'ubuntu' || (contains(matrix.os, 'windows') && 'windows' || 'macos') }} (shard ${{ matrix.shardIndex }})
strategy:
fail-fast: false
matrix:

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

View File

@ -8,17 +8,17 @@ Draw a line segment relative to the current origin using the polar measure of so
```js
```kcl
angledLine(
sketch: Sketch,
angle: number,
length?: number,
lengthX?: number,
lengthY?: number,
endAbsoluteX?: number,
endAbsoluteY?: number,
tag?: TagDeclarator,
): Sketch
sketch: [Sketch](/docs/kcl/types/Sketch),
angle: [number](/docs/kcl/types/number),
length?: [number](/docs/kcl/types/number),
lengthX?: [number](/docs/kcl/types/number),
lengthY?: [number](/docs/kcl/types/number),
endAbsoluteX?: [number](/docs/kcl/types/number),
endAbsoluteY?: [number](/docs/kcl/types/number),
tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
): [Sketch](/docs/kcl/types/Sketch)
```
@ -33,7 +33,7 @@ angledLine(
| `lengthY` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
| `endAbsoluteX` | [`number`](/docs/kcl/types/number) | Draw the line along the given angle until it reaches this point along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
| `endAbsoluteY` | [`number`](/docs/kcl/types/number) | Draw the line along the given angle until it reaches this point along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
### Returns
@ -42,7 +42,7 @@ angledLine(
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> yLine(endAbsolute = 15)

View File

@ -8,14 +8,14 @@ Draw an angled line from the current origin, constructing a line segment such th
```js
```kcl
angledLineThatIntersects(
sketch: Sketch,
angle: number,
intersectTag: TagIdentifier,
offset?: number,
tag?: TagDeclarator,
): Sketch
sketch: [Sketch](/docs/kcl/types/Sketch),
angle: [number](/docs/kcl/types/number),
intersectTag: [TagIdentifier](/docs/kcl/types#tag-identifier),
offset?: [number](/docs/kcl/types/number),
tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
): [Sketch](/docs/kcl/types/Sketch)
```
@ -27,7 +27,7 @@ angledLineThatIntersects(
| `angle` | [`number`](/docs/kcl/types/number) | Which angle should the line be drawn at? | Yes |
| `intersectTag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The tag of the line to intersect with | Yes |
| `offset` | [`number`](/docs/kcl/types/number) | The offset from the intersecting line. Defaults to 0. | No |
| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
### Returns
@ -36,7 +36,7 @@ angledLineThatIntersects(
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(endAbsolute = [5, 10])

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

View File

@ -8,15 +8,15 @@ Check a value meets some expected conditions at runtime. Program terminates with
```js
```kcl
assert(
actual: number,
isGreaterThan?: number,
isLessThan?: number,
isGreaterThanOrEqual?: number,
isLessThanOrEqual?: number,
isEqualTo?: number,
tolerance?: number,
actual: [number](/docs/kcl/types/number),
isGreaterThan?: [number](/docs/kcl/types/number),
isLessThan?: [number](/docs/kcl/types/number),
isGreaterThanOrEqual?: [number](/docs/kcl/types/number),
isLessThanOrEqual?: [number](/docs/kcl/types/number),
isEqualTo?: [number](/docs/kcl/types/number),
tolerance?: [number](/docs/kcl/types/number),
error?: String,
): ()
```
@ -42,7 +42,7 @@ assert(
### Examples
```js
```kcl
n = 10
assert(n, isEqualTo = 10)
assert(

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

View File

@ -8,9 +8,9 @@ Asserts that a value is the boolean value true.
```js
```kcl
assertIs(
actual: bool,
actual: [bool](/docs/kcl/types/bool),
error?: String,
): ()
```
@ -30,7 +30,7 @@ assertIs(
### Examples
```js
```kcl
kclIsFun = true
assertIs(kclIsFun)
```

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

View File

@ -8,14 +8,14 @@ Draw a smooth, continuous, curved line segment from the current origin to the de
```js
```kcl
bezierCurve(
sketch: Sketch,
control1: [number],
control2: [number],
end: [number],
tag?: TagDeclarator,
): Sketch
sketch: [Sketch](/docs/kcl/types/Sketch),
control1: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
control2: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
end: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
): [Sketch](/docs/kcl/types/Sketch)
```
@ -27,7 +27,7 @@ bezierCurve(
| `control1` | [`[number]`](/docs/kcl/types/number) | First control point for the cubic | Yes |
| `control2` | [`[number]`](/docs/kcl/types/number) | Second control point for the cubic | Yes |
| `end` | [`[number]`](/docs/kcl/types/number) | How far away (along the X and Y axes) should this line go? | Yes |
| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
### Returns
@ -36,7 +36,7 @@ bezierCurve(
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(end = [0, 10])

File diff suppressed because one or more lines are too long

View File

@ -8,14 +8,14 @@ Construct a circle derived from 3 points.
```js
```kcl
circleThreePoint(
sketchSurfaceOrGroup: SketchOrSurface,
p1: [number],
p2: [number],
p3: [number],
tag?: TagDeclarator,
): Sketch
sketchSurfaceOrGroup: [[Sketch](/docs/kcl/types/Sketch)OrSurface](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)OrSurface),
p1: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
p2: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
p3: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
): [Sketch](/docs/kcl/types/Sketch)
```
@ -27,7 +27,7 @@ circleThreePoint(
| `p1` | [`[number]`](/docs/kcl/types/number) | 1st point to derive the circle. | Yes |
| `p2` | [`[number]`](/docs/kcl/types/number) | 2nd point to derive the circle. | Yes |
| `p3` | [`[number]`](/docs/kcl/types/number) | 3rd point to derive the circle. | Yes |
| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Identifier for the circle to reference elsewhere. | No |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Identifier for the circle to reference elsewhere. | No |
### Returns
@ -36,7 +36,7 @@ circleThreePoint(
### Examples
```js
```kcl
exampleSketch = startSketchOn(XY)
|> circleThreePoint(p1 = [10, 10], p2 = [20, 8], p3 = [15, 5])
|> extrude(length = 5)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@ Identifies the ending face of an extrusion. I.e., the new face created by an ext
```js
```kcl
std::END: string = 'end'
```

View File

@ -8,7 +8,7 @@ Identifies the starting face of an extrusion. I.e., the face which is extruded.
```js
```kcl
std::START: string = 'start'
```

View File

@ -8,7 +8,7 @@ layout: manual
```js
```kcl
std::X
```

View File

@ -8,7 +8,7 @@ layout: manual
```js
```kcl
std::XY
```

View File

@ -8,7 +8,7 @@ layout: manual
```js
```kcl
std::XZ
```

View File

@ -8,7 +8,7 @@ layout: manual
```js
```kcl
std::Y
```

View File

@ -8,7 +8,7 @@ layout: manual
```js
```kcl
std::YZ
```

View File

@ -8,7 +8,7 @@ layout: manual
```js
```kcl
std::Z
```

View File

@ -8,13 +8,13 @@ The value of Eulers number `e`.
```js
```kcl
std::math::E: number = 2.71828182845904523536028747135266250_
```
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> angledLine(

View File

@ -8,17 +8,17 @@ The value of `pi`, Archimedes constant (π).
```js
std::math::PI: number = 3.14159265358979323846264338327950288_
```kcl
std::math::PI: number(_?) = 3.14159265358979323846264338327950288_?
```
### Examples
```js
```kcl
circumference = 70
exampleSketch = startSketchOn(XZ)
|> circle(center = [0, 0], radius = circumference / (2 * PI))
|> circle(center = [0, 0], radius = (circumference / (2 * PI)): number(mm))
example = extrude(exampleSketch, length = 5)
```

View File

@ -8,13 +8,13 @@ The value of `tau`, the full circle constant (τ). Equal to 2π.
```js
```kcl
std::math::TAU: number = 6.28318530717958647692528676655900577_
```
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> angledLine(

View File

@ -8,7 +8,7 @@ layout: manual
```js
```kcl
std::turns::HALF_TURN: number(deg) = 180deg
```

View File

@ -8,7 +8,7 @@ layout: manual
```js
```kcl
std::turns::QUARTER_TURN: number(deg) = 90deg
```

View File

@ -8,7 +8,7 @@ layout: manual
```js
```kcl
std::turns::THREE_QUARTER_TURN: number(deg) = 270deg
```

View File

@ -8,7 +8,7 @@ layout: manual
```js
```kcl
std::turns::ZERO: number = 0
```

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -8,8 +8,8 @@ Get the shared edge between two faces.
```js
getCommonEdge(faces: [TagIdentifier]): Uuid
```kcl
getCommon[Edge](/docs/kcl/types/Edge)(faces: [[TagIdentifier](/docs/kcl/types#tag-identifier)]): Uuid
```
@ -26,7 +26,7 @@ getCommonEdge(faces: [TagIdentifier]): Uuid
### Examples
```js
```kcl
// Get an edge shared between two faces, created after a chamfer.

View File

@ -8,8 +8,8 @@ Get the next adjacent edge to the edge given.
```js
getNextAdjacentEdge(edge: TagIdentifier): Uuid
```kcl
getNextAdjacent[Edge](/docs/kcl/types/Edge)(edge: [TagIdentifier](/docs/kcl/types#tag-identifier)): Uuid
```
@ -26,7 +26,7 @@ getNextAdjacentEdge(edge: TagIdentifier): Uuid
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(end = [10, 0])

View File

@ -8,8 +8,8 @@ Get the opposite edge to the edge given.
```js
getOppositeEdge(edge: TagIdentifier): Uuid
```kcl
getOpposite[Edge](/docs/kcl/types/Edge)(edge: [TagIdentifier](/docs/kcl/types#tag-identifier)): Uuid
```
@ -26,7 +26,7 @@ getOppositeEdge(edge: TagIdentifier): Uuid
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(end = [10, 0])

View File

@ -8,8 +8,8 @@ Get the previous adjacent edge to the edge given.
```js
getPreviousAdjacentEdge(edge: TagIdentifier): Uuid
```kcl
getPreviousAdjacent[Edge](/docs/kcl/types/Edge)(edge: [TagIdentifier](/docs/kcl/types#tag-identifier)): Uuid
```
@ -26,7 +26,7 @@ getPreviousAdjacentEdge(edge: TagIdentifier): Uuid
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(end = [10, 0])

View File

@ -30,24 +30,17 @@ layout: manual
* [`Y`](kcl/consts/std-Y)
* [`YZ`](kcl/consts/std-YZ)
* [`Z`](kcl/consts/std-Z)
* [`abs`](kcl/abs)
* [`acos`](kcl/acos)
* [`angledLine`](kcl/angledLine)
* [`angledLineThatIntersects`](kcl/angledLineThatIntersects)
* [`appearance`](kcl/appearance)
* [`arc`](kcl/arc)
* [`asin`](kcl/asin)
* [`assert`](kcl/assert)
* [`assertIs`](kcl/assertIs)
* [`atan`](kcl/atan)
* [`atan2`](kcl/atan2)
* [`bezierCurve`](kcl/bezierCurve)
* [`ceil`](kcl/ceil)
* [`circleThreePoint`](kcl/circleThreePoint)
* [`clone`](kcl/clone)
* [`close`](kcl/close)
* [`extrude`](kcl/extrude)
* [`floor`](kcl/floor)
* [`getCommonEdge`](kcl/getCommonEdge)
* [`getNextAdjacentEdge`](kcl/getNextAdjacentEdge)
* [`getOppositeEdge`](kcl/getOppositeEdge)
@ -61,14 +54,8 @@ layout: manual
* [`legAngY`](kcl/legAngY)
* [`legLen`](kcl/legLen)
* [`line`](kcl/line)
* [`ln`](kcl/ln)
* [`loft`](kcl/loft)
* [`log`](kcl/log)
* [`log10`](kcl/log10)
* [`log2`](kcl/log2)
* [`map`](kcl/map)
* [`max`](kcl/max)
* [`min`](kcl/min)
* [`offsetPlane`](kcl/std-offsetPlane)
* [`patternCircular2d`](kcl/patternCircular2d)
* [`patternCircular3d`](kcl/patternCircular3d)
@ -78,16 +65,13 @@ layout: manual
* [`patternTransform2d`](kcl/patternTransform2d)
* [`polygon`](kcl/polygon)
* [`pop`](kcl/pop)
* [`pow`](kcl/pow)
* [`profileStart`](kcl/profileStart)
* [`profileStartX`](kcl/profileStartX)
* [`profileStartY`](kcl/profileStartY)
* [`push`](kcl/push)
* [`reduce`](kcl/reduce)
* [`rem`](kcl/rem)
* [`revolve`](kcl/std-revolve)
* [`rotate`](kcl/rotate)
* [`round`](kcl/round)
* [`scale`](kcl/scale)
* [`segAng`](kcl/segAng)
* [`segEnd`](kcl/segEnd)
@ -97,7 +81,6 @@ layout: manual
* [`segStart`](kcl/segStart)
* [`segStartX`](kcl/segStartX)
* [`segStartY`](kcl/segStartY)
* [`sqrt`](kcl/sqrt)
* [`startProfile`](kcl/startProfile)
* [`startSketchOn`](kcl/startSketchOn)
* [`subtract`](kcl/subtract)
@ -105,14 +88,6 @@ layout: manual
* [`sweep`](kcl/sweep)
* [`tangentToEnd`](kcl/tangentToEnd)
* [`tangentialArc`](kcl/tangentialArc)
* [`toCentimeters`](kcl/std-toCentimeters)
* [`toDegrees`](kcl/std-toDegrees)
* [`toFeet`](kcl/std-toFeet)
* [`toInches`](kcl/std-toInches)
* [`toMeters`](kcl/std-toMeters)
* [`toMillimeters`](kcl/std-toMillimeters)
* [`toRadians`](kcl/std-toRadians)
* [`toYards`](kcl/std-toYards)
* [`translate`](kcl/translate)
* [`union`](kcl/union)
* [`xLine`](kcl/xLine)
@ -121,9 +96,26 @@ layout: manual
* [`E`](kcl/consts/std-math-E)
* [`PI`](kcl/consts/std-math-PI)
* [`TAU`](kcl/consts/std-math-TAU)
* [`abs`](kcl/std-math-abs)
* [`acos`](kcl/std-math-acos)
* [`asin`](kcl/std-math-asin)
* [`atan`](kcl/std-math-atan)
* [`atan2`](kcl/std-math-atan2)
* [`ceil`](kcl/std-math-ceil)
* [`cos`](kcl/std-math-cos)
* [`floor`](kcl/std-math-floor)
* [`ln`](kcl/std-math-ln)
* [`log`](kcl/std-math-log)
* [`log10`](kcl/std-math-log10)
* [`log2`](kcl/std-math-log2)
* [`max`](kcl/std-math-max)
* [`min`](kcl/std-math-min)
* [`polar`](kcl/std-math-polar)
* [`pow`](kcl/std-math-pow)
* [`rem`](kcl/std-math-rem)
* [`round`](kcl/std-math-round)
* [`sin`](kcl/std-math-sin)
* [`sqrt`](kcl/std-math-sqrt)
* [`tan`](kcl/std-math-tan)
* **std::sketch**
* [`circle`](kcl/std-sketch-circle)
@ -149,3 +141,12 @@ layout: manual
* [`Point3d`](kcl/types/Point3d)
* [`Sketch`](kcl/types/Sketch)
* [`Solid`](kcl/types/Solid)
* **std::units**
* [`units::toCentimeters`](kcl/std-units-toCentimeters)
* [`units::toDegrees`](kcl/std-units-toDegrees)
* [`units::toFeet`](kcl/std-units-toFeet)
* [`units::toInches`](kcl/std-units-toInches)
* [`units::toMeters`](kcl/std-units-toMeters)
* [`units::toMillimeters`](kcl/std-units-toMillimeters)
* [`units::toRadians`](kcl/std-units-toRadians)
* [`units::toYards`](kcl/std-units-toYards)

File diff suppressed because one or more lines are too long

View File

@ -8,15 +8,15 @@ Extend the current sketch with a new involute circular curve.
```js
```kcl
involuteCircular(
sketch: Sketch,
startRadius: number,
endRadius: number,
angle: number,
reverse?: bool,
tag?: TagDeclarator,
): Sketch
sketch: [Sketch](/docs/kcl/types/Sketch),
startRadius: [number](/docs/kcl/types/number),
endRadius: [number](/docs/kcl/types/number),
angle: [number](/docs/kcl/types/number),
reverse?: [bool](/docs/kcl/types/bool),
tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
): [Sketch](/docs/kcl/types/Sketch)
```
@ -29,7 +29,7 @@ involuteCircular(
| `endRadius` | [`number`](/docs/kcl/types/number) | The involute is described between two circles, end_radius is the radius of the outer circle. | Yes |
| `angle` | [`number`](/docs/kcl/types/number) | The angle to rotate the involute by. A value of zero will produce a curve with a tangent along the x-axis at the start point of the curve. | Yes |
| `reverse` | [`bool`](/docs/kcl/types/bool) | If reverse is true, the segment will start from the end of the involute, otherwise it will start from that start. Defaults to false. | No |
| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
### Returns
@ -38,7 +38,7 @@ involuteCircular(
### Examples
```js
```kcl
a = 10
b = 14
startSketchOn(XZ)

View File

@ -8,8 +8,8 @@ Extract the 'x' axis value of the last line segment in the provided 2-d sketch.
```js
lastSegX(sketch: Sketch): number
```kcl
lastSegX(sketch: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/types/number)
```
@ -26,7 +26,7 @@ lastSegX(sketch: Sketch): number
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(end = [5, 0])

View File

@ -8,8 +8,8 @@ Extract the 'y' axis value of the last line segment in the provided 2-d sketch.
```js
lastSegY(sketch: Sketch): number
```kcl
lastSegY(sketch: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/types/number)
```
@ -26,7 +26,7 @@ lastSegY(sketch: Sketch): number
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(end = [5, 0])

View File

@ -8,11 +8,11 @@ Compute the angle of the given leg for x.
```js
```kcl
legAngX(
hypotenuse: number,
leg: number,
): number
hypotenuse: [number](/docs/kcl/types/number),
leg: [number](/docs/kcl/types/number),
): [number](/docs/kcl/types/number)
```
### Tags
@ -34,7 +34,7 @@ legAngX(
### Examples
```js
```kcl
legAngX(hypotenuse = 5, leg = 3)
```

View File

@ -8,11 +8,11 @@ Compute the angle of the given leg for y.
```js
```kcl
legAngY(
hypotenuse: number,
leg: number,
): number
hypotenuse: [number](/docs/kcl/types/number),
leg: [number](/docs/kcl/types/number),
): [number](/docs/kcl/types/number)
```
### Tags
@ -34,7 +34,7 @@ legAngY(
### Examples
```js
```kcl
legAngY(hypotenuse = 5, leg = 3)
```

View File

@ -8,11 +8,11 @@ Compute the length of the given leg.
```js
```kcl
legLen(
hypotenuse: number,
leg: number,
): number
hypotenuse: [number](/docs/kcl/types/number),
leg: [number](/docs/kcl/types/number),
): [number](/docs/kcl/types/number)
```
### Tags
@ -34,7 +34,7 @@ legLen(
### Examples
```js
```kcl
legLen(hypotenuse = 5, leg = 3)
```

View File

@ -8,13 +8,13 @@ Extend the current sketch with a new straight line.
```js
```kcl
line(
sketch: Sketch,
endAbsolute?: [number],
end?: [number],
tag?: TagDeclarator,
): Sketch
sketch: [Sketch](/docs/kcl/types/Sketch),
endAbsolute?: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
end?: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
): [Sketch](/docs/kcl/types/Sketch)
```
@ -25,7 +25,7 @@ line(
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
| `endAbsolute` | [`[number]`](/docs/kcl/types/number) | Which absolute point should this line go to? Incompatible with `end`. | No |
| `end` | [`[number]`](/docs/kcl/types/number) | How far away (along the X and Y axes) should this line go? Incompatible with `endAbsolute`. | No |
| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
### Returns
@ -34,7 +34,7 @@ line(
### Examples
```js
```kcl
triangle = startSketchOn(XZ)
|> startProfile(at = [0, 0])
// The END argument means it ends at exactly [10, 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

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

View File

@ -8,15 +8,15 @@ Repeat a 2-dimensional sketch some number of times along a partial or complete c
```js
```kcl
patternCircular2d(
sketchSet: [Sketch],
sketchSet: [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)),
instances: integer,
center: [number],
arcDegrees: number,
rotateDuplicates: bool,
useOriginal?: bool,
): [Sketch]
center: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
arcDegrees: [number](/docs/kcl/types/number),
rotateDuplicates: [bool](/docs/kcl/types/bool),
useOriginal?: [bool](/docs/kcl/types/bool),
): [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch))
```
@ -38,7 +38,7 @@ patternCircular2d(
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [.5, 25])
|> line(end = [0, 5])

View File

@ -8,16 +8,16 @@ Repeat a 3-dimensional solid some number of times along a partial or complete ci
```js
```kcl
patternCircular3d(
solids: [Solid],
solids: [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)),
instances: integer,
axis: [number],
center: [number],
arcDegrees: number,
rotateDuplicates: bool,
useOriginal?: bool,
): [Solid]
axis: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
center: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
arcDegrees: [number](/docs/kcl/types/number),
rotateDuplicates: [bool](/docs/kcl/types/bool),
useOriginal?: [bool](/docs/kcl/types/bool),
): [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid))
```
@ -40,7 +40,7 @@ patternCircular3d(
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> circle(center = [0, 0], radius = 1)

View File

@ -8,14 +8,14 @@ Repeat a 2-dimensional sketch along some dimension, with a dynamic amount of dis
```js
```kcl
patternLinear2d(
sketches: [Sketch],
sketches: [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)),
instances: integer,
distance: number,
axis: [number],
useOriginal?: bool,
): [Sketch]
distance: [number](/docs/kcl/types/number),
axis: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
useOriginal?: [bool](/docs/kcl/types/bool),
): [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch))
```
@ -36,7 +36,7 @@ patternLinear2d(
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> circle(center = [0, 0], radius = 1)
|> patternLinear2d(axis = [1, 0], instances = 7, distance = 4)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -8,13 +8,13 @@ Just like patternTransform, but works on 2D sketches not 3D solids.
```js
```kcl
patternTransform2d(
sketches: [Sketch],
sketches: [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)),
instances: integer,
transform: FunctionSource,
useOriginal?: bool,
): [Sketch]
useOriginal?: [bool](/docs/kcl/types/bool),
): [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch))
```
@ -34,7 +34,7 @@ patternTransform2d(
### Examples
```js
```kcl
// Each instance will be shifted along the X axis.
fn transform(id) {
return { translate = [4 * id, 0] }

File diff suppressed because one or more lines are too long

View File

@ -8,8 +8,8 @@ Remove the last element from an array.
Returns a new array with the last element removed.
```js
pop(array: [KclValue]): KclValue
```kcl
pop(array: [[[KclValue](/docs/kcl/types/KclValue)]](/docs/kcl/types/[KclValue](/docs/kcl/types/KclValue))): [KclValue](/docs/kcl/types/KclValue)
```
@ -26,7 +26,7 @@ pop(array: [KclValue]): KclValue
### Examples
```js
```kcl
arr = [1, 2, 3, 4]
new_arr = pop(arr)
assert(

File diff suppressed because one or more lines are too long

View File

@ -8,8 +8,8 @@ Extract the provided 2-dimensional sketch's profile's origin value.
```js
profileStart(profile: Sketch): [number]
```kcl
profileStart(profile: [Sketch](/docs/kcl/types/Sketch)): [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number))
```
@ -26,7 +26,7 @@ profileStart(profile: Sketch): [number]
### Examples
```js
```kcl
sketch001 = startSketchOn(XY)
|> startProfile(at = [5, 2])
|> angledLine(angle = 120, length = 50, tag = $seg01)

View File

@ -8,8 +8,8 @@ Extract the provided 2-dimensional sketch's profile's origin's 'x' value.
```js
profileStartX(profile: Sketch): number
```kcl
profileStartX(profile: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/types/number)
```
@ -26,7 +26,7 @@ profileStartX(profile: Sketch): number
### Examples
```js
```kcl
sketch001 = startSketchOn(XY)
|> startProfile(at = [5, 2])
|> angledLine(angle = -26.6, length = 50)

View File

@ -8,8 +8,8 @@ Extract the provided 2-dimensional sketch's profile's origin's 'y' value.
```js
profileStartY(profile: Sketch): number
```kcl
profileStartY(profile: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/types/number)
```
@ -26,7 +26,7 @@ profileStartY(profile: Sketch): number
### Examples
```js
```kcl
sketch001 = startSketchOn(XY)
|> startProfile(at = [5, 2])
|> angledLine(angle = -60, length = 14)

View File

@ -8,11 +8,11 @@ Append an element to the end of an array.
Returns a new array with the element appended.
```js
```kcl
push(
array: [KclValue],
item: KclValue,
): KclValue
array: [[[KclValue](/docs/kcl/types/KclValue)]](/docs/kcl/types/[KclValue](/docs/kcl/types/KclValue)),
item: [KclValue](/docs/kcl/types/KclValue),
): [KclValue](/docs/kcl/types/KclValue)
```
@ -30,7 +30,7 @@ push(
### Examples
```js
```kcl
arr = [1, 2, 3]
new_arr = push(arr, item = 4)
assert(

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

View File

@ -8,8 +8,8 @@ Compute the angle (in degrees) of the provided line segment.
```js
segAng(tag: TagIdentifier): number
```kcl
segAng(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
```
@ -17,7 +17,7 @@ segAng(tag: TagIdentifier): number
| Name | Type | Description | Required |
|----------|------|-------------|----------|
| [`tag`](/docs/kcl/types/tag) | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
### Returns
@ -26,7 +26,7 @@ segAng(tag: TagIdentifier): number
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(end = [10, 0])

View File

@ -8,8 +8,8 @@ Compute the ending point of the provided line segment.
```js
segEnd(tag: TagIdentifier): [number]
```kcl
segEnd(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number))
```
@ -17,7 +17,7 @@ segEnd(tag: TagIdentifier): [number]
| Name | Type | Description | Required |
|----------|------|-------------|----------|
| [`tag`](/docs/kcl/types/tag) | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
### Returns
@ -26,7 +26,7 @@ segEnd(tag: TagIdentifier): [number]
### Examples
```js
```kcl
w = 15
cube = startSketchOn(XY)
|> startProfile(at = [0, 0])

View File

@ -8,8 +8,8 @@ Compute the ending point of the provided line segment along the 'x' axis.
```js
segEndX(tag: TagIdentifier): number
```kcl
segEndX(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
```
@ -17,7 +17,7 @@ segEndX(tag: TagIdentifier): number
| Name | Type | Description | Required |
|----------|------|-------------|----------|
| [`tag`](/docs/kcl/types/tag) | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
### Returns
@ -26,7 +26,7 @@ segEndX(tag: TagIdentifier): number
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(end = [20, 0], tag = $thing)

View File

@ -8,8 +8,8 @@ Compute the ending point of the provided line segment along the 'y' axis.
```js
segEndY(tag: TagIdentifier): number
```kcl
segEndY(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
```
@ -17,7 +17,7 @@ segEndY(tag: TagIdentifier): number
| Name | Type | Description | Required |
|----------|------|-------------|----------|
| [`tag`](/docs/kcl/types/tag) | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
### Returns
@ -26,7 +26,7 @@ segEndY(tag: TagIdentifier): number
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(end = [20, 0])

View File

@ -8,8 +8,8 @@ Compute the length of the provided line segment.
```js
segLen(tag: TagIdentifier): number
```kcl
segLen(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
```
@ -17,7 +17,7 @@ segLen(tag: TagIdentifier): number
| Name | Type | Description | Required |
|----------|------|-------------|----------|
| [`tag`](/docs/kcl/types/tag) | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
### Returns
@ -26,7 +26,7 @@ segLen(tag: TagIdentifier): number
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> angledLine(angle = 60, length = 10, tag = $thing)

View File

@ -8,8 +8,8 @@ Compute the starting point of the provided line segment.
```js
segStart(tag: TagIdentifier): [number]
```kcl
segStart(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number))
```
@ -17,7 +17,7 @@ segStart(tag: TagIdentifier): [number]
| Name | Type | Description | Required |
|----------|------|-------------|----------|
| [`tag`](/docs/kcl/types/tag) | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
### Returns
@ -26,7 +26,7 @@ segStart(tag: TagIdentifier): [number]
### Examples
```js
```kcl
w = 15
cube = startSketchOn(XY)
|> startProfile(at = [0, 0])

View File

@ -8,8 +8,8 @@ Compute the starting point of the provided line segment along the 'x' axis.
```js
segStartX(tag: TagIdentifier): number
```kcl
segStartX(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
```
@ -17,7 +17,7 @@ segStartX(tag: TagIdentifier): number
| Name | Type | Description | Required |
|----------|------|-------------|----------|
| [`tag`](/docs/kcl/types/tag) | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
### Returns
@ -26,7 +26,7 @@ segStartX(tag: TagIdentifier): number
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(end = [20, 0], tag = $thing)

View File

@ -8,8 +8,8 @@ Compute the starting point of the provided line segment along the 'y' axis.
```js
segStartY(tag: TagIdentifier): number
```kcl
segStartY(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
```
@ -17,7 +17,7 @@ segStartY(tag: TagIdentifier): number
| Name | Type | Description | Required |
|----------|------|-------------|----------|
| [`tag`](/docs/kcl/types/tag) | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
### Returns
@ -26,7 +26,7 @@ segStartY(tag: TagIdentifier): number
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> line(end = [20, 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

51
docs/kcl/std-math-abs.md Normal file

File diff suppressed because one or more lines are too long

45
docs/kcl/std-math-acos.md Normal file

File diff suppressed because one or more lines are too long

44
docs/kcl/std-math-asin.md Normal file

File diff suppressed because one or more lines are too long

43
docs/kcl/std-math-atan.md Normal file
View File

@ -0,0 +1,43 @@
---
title: "std::math::atan"
excerpt: "Compute the arctangent of a number."
layout: manual
---
Compute the arctangent of a number.
Consider using `atan2()` instead for the true inverse of tangent.
```kcl
atan(@num: [number](/docs/kcl/types/number)(_)): [number](/docs/kcl/types/number)(rad)
```
### Arguments
| Name | Type | Description | Required |
|----------|------|-------------|----------|
| `num` | `number(_)` | | Yes |
### Returns
`number(rad)`
### Examples
```kcl
sketch001 = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> angledLine(
angle = atan(1.25),
length = 20,
)
|> yLine(endAbsolute = 0)
|> close()
extrude001 = extrude(sketch001, length = 5)
```

File diff suppressed because one or more lines are too long

42
docs/kcl/std-math-ceil.md Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,15 +1,15 @@
---
title: "std::math::cos"
excerpt: "Compute the cosine of a number (in radians)."
excerpt: "Compute the cosine of a number."
layout: manual
---
Compute the cosine of a number (in radians).
Compute the cosine of a number.
```js
cos(@num: number(Angle)): number(_)
```kcl
cos(@num: [number](/docs/kcl/types/number)(Angle)): [number](/docs/kcl/types/number)(_)
```
@ -26,7 +26,7 @@ cos(@num: number(Angle)): number(_)
### Examples
```js
```kcl
exampleSketch = startSketchOn(XZ)
|> startProfile(at = [0, 0])
|> angledLine(

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