Compare commits
	
		
			1 Commits
		
	
	
		
			v0.18.0
			...
			achalmers/
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| bf5287faab | 
| @ -1,3 +1,3 @@ | ||||
| [codespell] | ||||
| ignore-words-list: crate,everytime,inout,co-ordinate,ot,nwo,absolutey,atleast | ||||
| skip: **/target,node_modules,build,**/Cargo.lock,./docs/kcl/*.md,./src-tauri/gen/schemas | ||||
| ignore-words-list: crate,everytime,inout,co-ordinate,ot,nwo | ||||
| skip: **/target,node_modules,build,**/Cargo.lock | ||||
|  | ||||
							
								
								
									
										12
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -9,27 +9,15 @@ updates: | ||||
|       directory: '/' # Location of package manifests | ||||
|       schedule: | ||||
|           interval: 'daily' | ||||
|       reviewers: | ||||
|           - franknoirot  | ||||
|           - irev-dev | ||||
|     - package-ecosystem: 'github-actions' # See documentation for possible values | ||||
|       directory: '/' # Location of package manifests | ||||
|       schedule: | ||||
|           interval: 'daily' | ||||
|       reviewers: | ||||
|           - adamchalmers | ||||
|           - jessfraz | ||||
|     - package-ecosystem: 'cargo' # See documentation for possible values | ||||
|       directory: '/src/wasm-lib/' # Location of package manifests | ||||
|       schedule: | ||||
|           interval: 'daily' | ||||
|       reviewers: | ||||
|           - adamchalmers | ||||
|           - jessfraz | ||||
|     - package-ecosystem: 'cargo' # See documentation for possible values | ||||
|       directory: '/src-tauri/' # Location of package manifests | ||||
|       schedule: | ||||
|           interval: 'daily' | ||||
|       reviewers: | ||||
|           - adamchalmers | ||||
|           - jessfraz | ||||
|  | ||||
							
								
								
									
										50
									
								
								.github/workflows/cargo-build.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,50 @@ | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|     paths: | ||||
|       - '**.rs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - .github/workflows/cargo-build.yml | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - '**.rs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - .github/workflows/cargo-build.yml | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: true | ||||
| name: cargo build | ||||
| jobs: | ||||
|   cargobuild: | ||||
|     name: cargo build | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         dir: ['src/wasm-lib'] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Install latest rust | ||||
|         uses: actions-rs/toolchain@v1 | ||||
|         with: | ||||
|             toolchain: stable | ||||
|             override: true | ||||
|  | ||||
|       - name: install dependencies | ||||
|         if: matrix.dir ==  'src-tauri' | ||||
|         run: | | ||||
|           sudo apt-get update | ||||
|           sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf | ||||
|       - name: Rust Cache | ||||
|         uses: Swatinem/rust-cache@v2.6.1 | ||||
|  | ||||
|       - name: Run cargo build | ||||
|         run: | | ||||
|           cd "${{ matrix.dir }}" | ||||
|           cargo build --all | ||||
|         shell: bash | ||||
							
								
								
									
										6
									
								
								.github/workflows/cargo-clippy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -9,6 +9,12 @@ on: | ||||
|       - '**.rs' | ||||
|       - .github/workflows/cargo-clippy.yml | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - '**.rs' | ||||
|       - .github/workflows/cargo-build.yml | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: true | ||||
|  | ||||
| @ -7,23 +7,23 @@ on: | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - .github/workflows/cargo-bench.yml | ||||
|       - .github/workflows/cargo-criterion.yml | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - '**.rs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - .github/workflows/cargo-bench.yml | ||||
|       - .github/workflows/cargo-criterion.yml | ||||
|   workflow_dispatch: | ||||
| permissions: read-all | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: true | ||||
| name: cargo bench | ||||
| name: cargo criterion | ||||
| jobs: | ||||
|   cargo-bench: | ||||
|     name: Benchmark with iai | ||||
|   cargocriterion: | ||||
|     name: cargo criterion | ||||
|     runs-on: ubuntu-latest-8-cores | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
| @ -31,12 +31,10 @@ jobs: | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|           cargo install cargo-criterion | ||||
|           sudo apt update | ||||
|           sudo apt install -y valgrind | ||||
|       - name: Rust Cache | ||||
|         uses: Swatinem/rust-cache@v2.6.1 | ||||
|       - name: Benchmark kcl library | ||||
|         shell: bash | ||||
|         run: |- | ||||
|           cd src/wasm-lib/kcl; cargo bench -- iai | ||||
|           cd src/wasm-lib/kcl; cargo criterion | ||||
| 
 | ||||
							
								
								
									
										17
									
								
								.github/workflows/cargo-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -3,15 +3,14 @@ on: | ||||
|     branches: | ||||
|       - main | ||||
|     paths: | ||||
|       - 'src/wasm-lib/**.rs' | ||||
|       - '**.rs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - .github/workflows/cargo-test.yml | ||||
|  | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - 'src/wasm-lib/**.rs' | ||||
|       - '**.rs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
| @ -21,7 +20,7 @@ permissions: read-all | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: true | ||||
| name: cargo test of wasm-lib | ||||
| name: cargo test | ||||
| jobs: | ||||
|   cargotest: | ||||
|     name: cargo test | ||||
| @ -63,16 +62,8 @@ jobs: | ||||
|         shell: bash | ||||
|         run: |- | ||||
|           cd "${{ matrix.dir }}" | ||||
|           cargo llvm-cov nextest --all --lcov --output-path lcov.info --test-threads=1 --no-fail-fast -P ci 2>&1 | tee /tmp/github-actions.log | ||||
|           cargo nextest run --workspace --no-fail-fast -P ci 2>&1 | tee /tmp/github-actions.log | ||||
|         env: | ||||
|           KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}} | ||||
|           RUST_MIN_STACK: 10485760000 | ||||
|       - name: Upload to codecov.io | ||||
|         uses: codecov/codecov-action@v4 | ||||
|         with: | ||||
|           token: ${{secrets.CODECOV_TOKEN}} | ||||
|           fail_ci_if_error: true | ||||
|           flags: wasm-lib | ||||
|           verbose: true | ||||
|           files: lcov.info | ||||
|  | ||||
|  | ||||
							
								
								
									
										36
									
								
								.github/workflows/check-exampleKcl.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,36 +0,0 @@ | ||||
| name: Check Onboarding KCL | ||||
|  | ||||
| on: | ||||
|   pull_request: | ||||
|     types: [opened, synchronize] | ||||
|     paths: | ||||
|       - 'src/lib/exampleKcl.ts' | ||||
|  | ||||
| permissions: | ||||
|   contents: read | ||||
|   issues: write | ||||
|   pull-requests: write | ||||
|  | ||||
| jobs: | ||||
|   comment: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Comment on PR | ||||
|         uses: actions/github-script@v7 | ||||
|         with: | ||||
|           script: | | ||||
|             const message = '`src/lib/exampleKcl.ts` has been updated in this PR, please review and update the `src/routes/onboarding`, if needed.'; | ||||
|             const issue_number = context.payload.pull_request.number; | ||||
|             const owner = context.repo.owner; | ||||
|             const repo = context.repo.repo; | ||||
|  | ||||
|             // Post a comment on the PR | ||||
|             await github.rest.issues.createComment({ | ||||
|               owner, | ||||
|               repo, | ||||
|               issue_number, | ||||
|               body: message, | ||||
|             }); | ||||
							
								
								
									
										43
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -104,11 +104,7 @@ jobs: | ||||
|         run: | | ||||
|           VERSION=$(date +'%-y.%-m.%-d') yarn bump-jsons | ||||
|           echo "$(jq --arg url 'https://dl.zoo.dev/releases/modeling-app/nightly/last_update.json' \ | ||||
|             '.plugins.updater.endpoints[]=$url' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json | ||||
|           echo "$(jq --arg id 'dev.zoo.modeling-app-nightly' \ | ||||
|             '.identifier=$id' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json | ||||
|           echo "$(jq --arg name 'Zoo Modeling App (Nightly)' \ | ||||
|             '.productName=$name' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json | ||||
|             '.tauri.updater.endpoints[]=$url' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         if: github.event_name == 'schedule' | ||||
| @ -129,9 +125,6 @@ jobs: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-14, ubuntu-latest, windows-latest] | ||||
|     env: | ||||
|       TAURI_ARGS_MACOS: ${{ matrix.os == 'macos-14' && '--target universal-apple-darwin' || '' }} | ||||
|       TAURI_ARGS_UBUNTU: ${{ matrix.os == 'ubuntu-latest' && '--bundles' || '' }} | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|  | ||||
| @ -151,12 +144,10 @@ jobs: | ||||
|           sudo apt-get update && | ||||
|           sudo apt-get install -y | ||||
|           libgtk-3-dev | ||||
|           libayatana-appindicator3-dev | ||||
|           libgtksourceview-3.0-dev | ||||
|           webkit2gtk-4.0 | ||||
|           libappindicator3-dev | ||||
|           webkit2gtk-driver | ||||
|           libsoup-3.0-dev | ||||
|           libjavascriptcoregtk-4.1-dev | ||||
|           libwebkit2gtk-4.1-dev | ||||
|           at-spi2-core | ||||
|           xvfb | ||||
|  | ||||
|       - name: Sync node version and setup cache | ||||
| @ -170,9 +161,7 @@ jobs: | ||||
|       - name: Setup Rust | ||||
|         uses: dtolnay/rust-toolchain@stable | ||||
|  | ||||
|       # TODO: re-enable for Windows builds, see https://github.com/tauri-apps/tauri/issues/9045 | ||||
|       - name: Setup Rust cache | ||||
|         if: matrix.os != 'windows-latest' | ||||
|         uses: swatinem/rust-cache@v2 | ||||
|         with: | ||||
|           workspaces: './src-tauri -> target' | ||||
| @ -235,14 +224,14 @@ jobs: | ||||
|         with: | ||||
|           includeRelease: false | ||||
|           includeDebug: true | ||||
|           args: "${{ env.TAURI_ARGS_MACOS }} ${{ env.TAURI_ARGS_UBUNTU }}" | ||||
|           args: ${{ matrix.os == 'macos-14' && '--target universal-apple-darwin' || '' }} | ||||
|  | ||||
|       - name: Build the app (release) and sign | ||||
|         uses: tauri-apps/tauri-action@v0 | ||||
|         if: ${{ env.BUILD_RELEASE == 'true' }} | ||||
|         env: | ||||
|           TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} | ||||
|           TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} | ||||
|           TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | ||||
|           TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | ||||
|           APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} | ||||
|           APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | ||||
|           APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} | ||||
| @ -251,7 +240,7 @@ jobs: | ||||
|           APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | ||||
|           TAURI_CONF_ARGS: "--config ${{ matrix.os == 'windows-latest' && 'src-tauri\\tauri.release.conf.json' || 'src-tauri/tauri.release.conf.json' }}" | ||||
|         with: | ||||
|           args: "${{ env.TAURI_CONF_ARGS }} ${{ env.TAURI_ARGS_MACOS }} ${{ env.TAURI_ARGS_UBUNTU }}" | ||||
|           args: "${{ matrix.os == 'macos-14' && '--target universal-apple-darwin' || '' }} ${{ env.TAURI_CONF_ARGS }}" | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         if: matrix.os != 'ubuntu-latest' | ||||
| @ -261,11 +250,10 @@ jobs: | ||||
|         with: | ||||
|           path: "${{ env.PREFIX }}/${{ env.MODE }}/bundle/*/*" | ||||
|  | ||||
|       # TODO: re-enable linux e2e tests when possible | ||||
|       - name: Run e2e tests (linux only) | ||||
|         if: false | ||||
|         if: matrix.os == 'ubuntu-latest' | ||||
|         run: | | ||||
|           cargo install tauri-driver | ||||
|           cargo install tauri-driver@0.1.3 | ||||
|           source .env.${{ env.BUILD_RELEASE == 'true' && 'production' || 'development' }} | ||||
|           export VITE_KC_API_BASE_URL | ||||
|           xvfb-run yarn test:e2e:tauri | ||||
| @ -285,7 +273,6 @@ jobs: | ||||
|       NOTES: ${{ github.event_name == 'release' && github.event.release.body || format('Nightly build, commit {0}', github.sha) }} | ||||
|       BUCKET_DIR: ${{ github.event_name == 'release' && 'dl.kittycad.io/releases/modeling-app' || 'dl.kittycad.io/releases/modeling-app/nightly' }} | ||||
|       WEBSITE_DIR: ${{ github.event_name == 'release' && 'dl.zoo.dev/releases/modeling-app' || 'dl.zoo.dev/releases/modeling-app/nightly' }} | ||||
|       URL_CODED_NAME: ${{ github.event_name == 'schedule' && 'Zoo%20Modeling%20App%20%28Nightly%29' || 'Zoo%20Modeling%20App' }} | ||||
|     steps: | ||||
|       - uses: actions/download-artifact@v3 | ||||
|  | ||||
| @ -300,9 +287,9 @@ jobs: | ||||
|             --arg pub_date "${PUB_DATE}" \ | ||||
|             --arg notes "${NOTES}" \ | ||||
|             --arg darwin_sig "$DARWIN_SIG" \ | ||||
|             --arg darwin_url "$RELEASE_DIR/macos/${{ env.URL_CODED_NAME }}.app.tar.gz" \ | ||||
|             --arg darwin_url "$RELEASE_DIR/macos/Zoo%20Modeling%20App.app.tar.gz" \ | ||||
|             --arg windows_sig "$WINDOWS_SIG" \ | ||||
|             --arg windows_url "$RELEASE_DIR/msi/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_x64_en-US.msi.zip" \ | ||||
|             --arg windows_url "$RELEASE_DIR/msi/Zoo%20Modeling%20App_${VERSION_NO_V}_x64_en-US.msi.zip" \ | ||||
|             '{ | ||||
|               "version": $version, | ||||
|               "pub_date": $pub_date, | ||||
| @ -331,8 +318,8 @@ jobs: | ||||
|             --arg version "${VERSION}" \ | ||||
|             --arg pub_date "${PUB_DATE}" \ | ||||
|             --arg notes "${NOTES}" \ | ||||
|             --arg darwin_url "$RELEASE_DIR/dmg/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_universal.dmg" \ | ||||
|             --arg windows_url "$RELEASE_DIR/msi/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_x64_en-US.msi" \ | ||||
|             --arg darwin_url "$RELEASE_DIR/dmg/Zoo%20Modeling%20App_${VERSION_NO_V}_universal.dmg" \ | ||||
|             --arg windows_url "$RELEASE_DIR/msi/Zoo%20Modeling%20App_${VERSION_NO_V}_x64_en-US.msi" \ | ||||
|             '{ | ||||
|               "version": $version, | ||||
|               "pub_date": $pub_date, | ||||
| @ -380,7 +367,7 @@ jobs: | ||||
|  | ||||
|       - name: Upload release files to Github | ||||
|         if: ${{ github.event_name == 'release' }} | ||||
|         uses: softprops/action-gh-release@v2 | ||||
|         uses: softprops/action-gh-release@v1 | ||||
|         with: | ||||
|           files: 'artifact/*/Zoo*' | ||||
|            | ||||
|  | ||||
							
								
								
									
										65
									
								
								.github/workflows/generate-website-docs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -1,65 +0,0 @@ | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|     paths: | ||||
|       - .github/workflows/generate-website-docs.yml | ||||
|       - 'docs/**' | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - .github/workflows/generate-website-docs.yml | ||||
|   workflow_dispatch: | ||||
| name: generate-website-docs | ||||
| concurrency: | ||||
|   group: docs-${{ github.ref }} | ||||
|   cancel-in-progress: true | ||||
| jobs: | ||||
|   generate-website-docs: | ||||
|     name: generate-website-docs | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/create-github-app-token@v1 | ||||
|         id: app-token | ||||
|         with: | ||||
|           # required | ||||
|           app-id: ${{ secrets.GH_ORG_APP_ID }} | ||||
|           private-key: ${{ secrets.GH_ORG_APP_PRIVATE_KEY }} | ||||
|           owner: ${{ github.repository_owner }} | ||||
|       # Checkout the docs repo since we will want to update the files there. | ||||
|       - uses: actions/checkout@v4 | ||||
|         with: | ||||
|           repository: 'kittycad/documentation' | ||||
|           path: 'documentation' | ||||
|           token: ${{ steps.app-token.outputs.token }} | ||||
|       - name: move docs to docs | ||||
|         shell: bash | ||||
|         run: | | ||||
|           mkdir -p documentation/content/pages/docs/kcl/ | ||||
|           # cleanup old | ||||
|           rm -rf documentation/content/pages/docs/kcl/*.md | ||||
|           # move new | ||||
|           mv -f docs/kcl/*.md documentation/content/pages/docs/kcl/ | ||||
|       - name: commit the changes in the docs repo | ||||
|         shell: bash | ||||
|         run: | | ||||
|           cd documentation | ||||
|           git config --local user.email "github-actions[bot]@users.noreply.github.com" | ||||
|           git config --local user.name "github-actions[bot]" | ||||
|           git add . | ||||
|           git commit -am "YOYO NEW KCL DOCS!!" || exit 0 | ||||
|           git fetch origin | ||||
|           git rebase origin/main || exit 0 | ||||
|           export NEW_BRANCH="update-kcl-docs" | ||||
|           git checkout -b "$NEW_BRANCH" | ||||
|           git push -f origin "$NEW_BRANCH" | ||||
|           gh pr create --title "Update KCL docs" \ | ||||
|               --body "Updating the generated kcl docs cc @jessfraz @franknoirot merge this" \ | ||||
|               --head "$NEW_BRANCH" \ | ||||
|               --reviewer jessfraz \ | ||||
|               --reviewer irev-dev \ | ||||
|               --reviewer franknoirot \ | ||||
|               --base main || true | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} | ||||
|  | ||||
							
								
								
									
										9
									
								
								.github/workflows/playwright.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -9,21 +9,17 @@ concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | ||||
|   cancel-in-progress: true | ||||
|  | ||||
| permissions: | ||||
|   contents: write | ||||
|   pull-requests: write | ||||
|  | ||||
| jobs: | ||||
|   playwright-ubuntu: | ||||
|     timeout-minutes: 60 | ||||
|     runs-on: ubuntu-latest-8-cores | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-node@v4 | ||||
|       with: | ||||
|         node-version-file: '.nvmrc' | ||||
|         cache: 'yarn' | ||||
|     - uses: KittyCAD/action-install-cli@main | ||||
|     - uses: KittyCAD/action-install-cli@v0.2.21 | ||||
|     - name: Install dependencies | ||||
|       run: yarn | ||||
|     - name: Install Playwright Browsers | ||||
| @ -89,6 +85,7 @@ jobs: | ||||
|   playwright-macos: | ||||
|     timeout-minutes: 60 | ||||
|     runs-on: macos-14 | ||||
|     needs: playwright-ubuntu | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-node@v4 | ||||
|  | ||||
							
								
								
									
										12
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @ -33,14 +33,17 @@ src/wasm-lib/bindings | ||||
| src/wasm-lib/kcl/bindings | ||||
| public/wasm_lib_bg.wasm | ||||
| src/wasm-lib/lcov.info | ||||
| src/wasm-lib/grackle/test_json_output | ||||
|  | ||||
| e2e/playwright/playwright-secrets.env | ||||
| e2e/playwright/temp1.png | ||||
| e2e/playwright/temp2.png | ||||
| # exports from snapshot-tests.spec.ts "exports of each format should work" | ||||
| e2e/playwright/export-snapshots/* | ||||
| !e2e/playwright/export-snapshots/*.png | ||||
| # exports from snapshot-tests.spec.ts | ||||
| e2e/playwright/export-snapshots/*.ply | ||||
| e2e/playwright/export-snapshots/*.obj | ||||
| e2e/playwright/export-snapshots/*.step | ||||
| e2e/playwright/export-snapshots/*.stl | ||||
| e2e/playwright/export-snapshots/*binary.gltf | ||||
| e2e/playwright/export-snapshots/*embedded.gltf | ||||
|  | ||||
|  | ||||
| /test-results/ | ||||
| @ -51,6 +54,5 @@ e2e/playwright/export-snapshots/* | ||||
|  | ||||
| ## generated files | ||||
| src/**/*.typegen.ts | ||||
| src-tauri/gen | ||||
|  | ||||
| src/wasm-lib/grackle/stdlib_cube_partial.json | ||||
|  | ||||
| @ -141,7 +141,7 @@ run `./make-release.sh` for a patch update | ||||
| run `./make-release.sh "minor"` for minor | ||||
| run `./make-release.sh "major"` for major | ||||
|  | ||||
| The PR may serve as a place to discuss the human-readable changelog and extra QA. A quick way of getting PR's merged since the last bump is to [use this PR filter](https://github.com/KittyCAD/modeling-app/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Amerged+), open up the browser console and paste in the following | ||||
| The PR may serve as a place to discuss the human-readable changelog and extra QA. A quick way of getting PR's merged since the last bump is to [use this PR filter](https://github.com/KittyCAD/modeling-app/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Amerged+), open up the browser console and past in the following | ||||
|  | ||||
| ```typescript | ||||
| console.log( | ||||
| @ -281,7 +281,7 @@ https://github.com/KittyCAD/modeling-app/assets/29681384/6f5e8e85-1003-4fd9-be7f | ||||
| <details> | ||||
|  | ||||
| <summary> | ||||
| PS: for the debug panel, the following JSON is useful for snapping the camera | ||||
| Ps for the debug panel, the following JSON is useful for snapping the camera | ||||
| </summary> | ||||
|  | ||||
| ```JSON | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								app-icon.png
									
									
									
									
									
								
							
							
						
						| Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 120 KiB | 
| @ -1,3 +1,3 @@ | ||||
| module.exports = { | ||||
|   presets: ['@babel/preset-env'], | ||||
|   presets: ["@babel/preset-env"], | ||||
| } | ||||
|  | ||||
| @ -1,8 +1,4 @@ | ||||
| --- | ||||
| title: "KCL Known Issues" | ||||
| excerpt: "Known issues with the KCL standard library for the Zoo Modeling App." | ||||
| layout: manual | ||||
| --- | ||||
| # Known Issues | ||||
|  | ||||
| The following are bugs that are not in modeling-app or kcl itself. These bugs | ||||
| once fixed in engine will just start working here with no language changes. | ||||
| @ -16,5 +12,3 @@ once fixed in engine will just start working here with no language changes. | ||||
|     you cannot edit it, after v1, the engine will account for this. You also cannot | ||||
|     currently move or transform the imported objects at all, once we have assemblies | ||||
|     this will work. | ||||
|  | ||||
| - **Fillets**: Fillets cannot intersect, you will get an error. Only simple fillet cases work currently. | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "abs" | ||||
| excerpt: "Computes the absolute value of a number." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the absolute value of a number. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| abs(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = abs(-4) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "acos" | ||||
| excerpt: "Computes the arccosine of a number (in radians)." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the arccosine of a number (in radians). | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| acos(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = acos(0.5) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										389
									
								
								docs/kcl/arc.md
									
									
									
									
									
								
							
							
						
						| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "asin" | ||||
| excerpt: "Computes the arcsine of a number (in radians)." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the arcsine of a number (in radians). | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| asin(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = asin(0.5) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "atan" | ||||
| excerpt: "Computes the arctangent of a number (in radians)." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the arctangent of a number (in radians). | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| atan(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = atan(1.0) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "ceil" | ||||
| excerpt: "Computes the smallest integer greater than or equal to a number." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the smallest integer greater than or equal to a number. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| ceil(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = ceil(4.5) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "cos" | ||||
| excerpt: "Computes the cosine of a number (in radians)." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the cosine of a number (in radians). | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| cos(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const anotherVar = cos(2 * pi()) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,33 +0,0 @@ | ||||
| --- | ||||
| title: "e" | ||||
| excerpt: "Return the value of Euler’s number `e`." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Return the value of Euler’s number `e`. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| e() -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = e() | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "floor" | ||||
| excerpt: "Computes the largest integer less than or equal to a number." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the largest integer less than or equal to a number. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| floor(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = floor(4.5) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										540
									
								
								docs/kcl/hole.md
									
									
									
									
									
								
							
							
						
						| @ -1,136 +0,0 @@ | ||||
| --- | ||||
| title: "import" | ||||
| excerpt: "Import a CAD file." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Import a CAD file. | ||||
|  | ||||
| For formats lacking unit data (STL, OBJ, PLY), the default import unit is millimeters. Otherwise you can specify the unit by passing in the options parameter. If you import a gltf file, we will try to find the bin file and import it as well. | ||||
| Import paths are relative to the current project directory. This only works in the desktop app not in browser. | ||||
|  | ||||
| ```js | ||||
| import(file_path: String, options?: ImportFormat) -> ImportedGeometry | ||||
| ``` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const model = import("thing.obj") | ||||
| ``` | ||||
|  | ||||
| ```js | ||||
| const model = import("cube.obj", { type: "obj", units: "m" }) | ||||
| ``` | ||||
|  | ||||
| ```js | ||||
| const model = import("my_model.gltf") | ||||
| ``` | ||||
|  | ||||
| ```js | ||||
| const model = import("my_model.sldprt") | ||||
| ``` | ||||
|  | ||||
| ```js | ||||
| const model = import("my_model.step") | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `file_path`: `String` (REQUIRED) | ||||
| * `options`: `ImportFormat` - Import format specifier (OPTIONAL) | ||||
| ```js | ||||
| { | ||||
| 	type: "fbx", | ||||
| } | | ||||
| { | ||||
| 	type: "gltf", | ||||
| } | | ||||
| { | ||||
| 	// Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system. | ||||
| 	coords: { | ||||
| 	// Axis the front face of a model looks along. | ||||
| 	forward: { | ||||
| 	// Axis specifier. | ||||
| 	axis: "y" | "z", | ||||
| 	// Specifies which direction the axis is pointing. | ||||
| 	direction: "positive" | "negative", | ||||
| }, | ||||
| 	// Axis pointing up and away from a model. | ||||
| 	up: { | ||||
| 	// Axis specifier. | ||||
| 	axis: "y" | "z", | ||||
| 	// Specifies which direction the axis is pointing. | ||||
| 	direction: "positive" | "negative", | ||||
| }, | ||||
| }, | ||||
| 	type: "obj", | ||||
| 	// The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters. | ||||
| 	units: "cm" | "ft" | "in" | "m" | "mm" | "yd", | ||||
| } | | ||||
| { | ||||
| 	// Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system. | ||||
| 	coords: { | ||||
| 	// Axis the front face of a model looks along. | ||||
| 	forward: { | ||||
| 	// Axis specifier. | ||||
| 	axis: "y" | "z", | ||||
| 	// Specifies which direction the axis is pointing. | ||||
| 	direction: "positive" | "negative", | ||||
| }, | ||||
| 	// Axis pointing up and away from a model. | ||||
| 	up: { | ||||
| 	// Axis specifier. | ||||
| 	axis: "y" | "z", | ||||
| 	// Specifies which direction the axis is pointing. | ||||
| 	direction: "positive" | "negative", | ||||
| }, | ||||
| }, | ||||
| 	type: "ply", | ||||
| 	// The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters. | ||||
| 	units: "cm" | "ft" | "in" | "m" | "mm" | "yd", | ||||
| } | | ||||
| { | ||||
| 	type: "sldprt", | ||||
| } | | ||||
| { | ||||
| 	type: "step", | ||||
| } | | ||||
| { | ||||
| 	// Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system. | ||||
| 	coords: { | ||||
| 	// Axis the front face of a model looks along. | ||||
| 	forward: { | ||||
| 	// Axis specifier. | ||||
| 	axis: "y" | "z", | ||||
| 	// Specifies which direction the axis is pointing. | ||||
| 	direction: "positive" | "negative", | ||||
| }, | ||||
| 	// Axis pointing up and away from a model. | ||||
| 	up: { | ||||
| 	// Axis specifier. | ||||
| 	axis: "y" | "z", | ||||
| 	// Specifies which direction the axis is pointing. | ||||
| 	direction: "positive" | "negative", | ||||
| }, | ||||
| }, | ||||
| 	type: "stl", | ||||
| 	// The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters. | ||||
| 	units: "cm" | "ft" | "in" | "m" | "mm" | "yd", | ||||
| } | ||||
| ``` | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `ImportedGeometry` - Data for an imported geometry. | ||||
| ```js | ||||
| { | ||||
| 	// The ID of the imported geometry. | ||||
| 	id: uuid, | ||||
| 	// The original file paths. | ||||
| 	value: [string], | ||||
| } | ||||
| ``` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,79 +0,0 @@ | ||||
| --- | ||||
| title: "KCL Standard Library" | ||||
| excerpt: "Documentation for the KCL standard library for the Zoo Modeling App." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| ## Table of Contents | ||||
|  | ||||
| * [Types](kcl/types) | ||||
| * [Known Issues](kcl/KNOWN-ISSUES) | ||||
| * [`abs`](kcl/abs) | ||||
| * [`acos`](kcl/acos) | ||||
| * [`angleToMatchLengthX`](kcl/angleToMatchLengthX) | ||||
| * [`angleToMatchLengthY`](kcl/angleToMatchLengthY) | ||||
| * [`angledLine`](kcl/angledLine) | ||||
| * [`angledLineOfXLength`](kcl/angledLineOfXLength) | ||||
| * [`angledLineOfYLength`](kcl/angledLineOfYLength) | ||||
| * [`angledLineThatIntersects`](kcl/angledLineThatIntersects) | ||||
| * [`angledLineToX`](kcl/angledLineToX) | ||||
| * [`angledLineToY`](kcl/angledLineToY) | ||||
| * [`arc`](kcl/arc) | ||||
| * [`asin`](kcl/asin) | ||||
| * [`atan`](kcl/atan) | ||||
| * [`bezierCurve`](kcl/bezierCurve) | ||||
| * [`ceil`](kcl/ceil) | ||||
| * [`circle`](kcl/circle) | ||||
| * [`close`](kcl/close) | ||||
| * [`cos`](kcl/cos) | ||||
| * [`e`](kcl/e) | ||||
| * [`extrude`](kcl/extrude) | ||||
| * [`fillet`](kcl/fillet) | ||||
| * [`floor`](kcl/floor) | ||||
| * [`getEdge`](kcl/getEdge) | ||||
| * [`getExtrudeWallTransform`](kcl/getExtrudeWallTransform) | ||||
| * [`getNextAdjacentEdge`](kcl/getNextAdjacentEdge) | ||||
| * [`getOppositeEdge`](kcl/getOppositeEdge) | ||||
| * [`getPreviousAdjacentEdge`](kcl/getPreviousAdjacentEdge) | ||||
| * [`helix`](kcl/helix) | ||||
| * [`hole`](kcl/hole) | ||||
| * [`import`](kcl/import) | ||||
| * [`lastSegX`](kcl/lastSegX) | ||||
| * [`lastSegY`](kcl/lastSegY) | ||||
| * [`legAngX`](kcl/legAngX) | ||||
| * [`legAngY`](kcl/legAngY) | ||||
| * [`legLen`](kcl/legLen) | ||||
| * [`line`](kcl/line) | ||||
| * [`lineTo`](kcl/lineTo) | ||||
| * [`ln`](kcl/ln) | ||||
| * [`log`](kcl/log) | ||||
| * [`log10`](kcl/log10) | ||||
| * [`log2`](kcl/log2) | ||||
| * [`max`](kcl/max) | ||||
| * [`min`](kcl/min) | ||||
| * [`patternCircular2d`](kcl/patternCircular2d) | ||||
| * [`patternCircular3d`](kcl/patternCircular3d) | ||||
| * [`patternLinear2d`](kcl/patternLinear2d) | ||||
| * [`patternLinear3d`](kcl/patternLinear3d) | ||||
| * [`pi`](kcl/pi) | ||||
| * [`pow`](kcl/pow) | ||||
| * [`revolve`](kcl/revolve) | ||||
| * [`segAng`](kcl/segAng) | ||||
| * [`segEndX`](kcl/segEndX) | ||||
| * [`segEndY`](kcl/segEndY) | ||||
| * [`segLen`](kcl/segLen) | ||||
| * [`sin`](kcl/sin) | ||||
| * [`sqrt`](kcl/sqrt) | ||||
| * [`startProfileAt`](kcl/startProfileAt) | ||||
| * [`startSketchAt`](kcl/startSketchAt) | ||||
| * [`startSketchOn`](kcl/startSketchOn) | ||||
| * [`tan`](kcl/tan) | ||||
| * [`tangentialArc`](kcl/tangentialArc) | ||||
| * [`tangentialArcTo`](kcl/tangentialArcTo) | ||||
| * [`tau`](kcl/tau) | ||||
| * [`toDegrees`](kcl/toDegrees) | ||||
| * [`toRadians`](kcl/toRadians) | ||||
| * [`xLine`](kcl/xLine) | ||||
| * [`xLineTo`](kcl/xLineTo) | ||||
| * [`yLine`](kcl/yLine) | ||||
| * [`yLineTo`](kcl/yLineTo) | ||||
| @ -1,35 +0,0 @@ | ||||
| --- | ||||
| title: "legAngX" | ||||
| excerpt: "Returns the angle of the given leg for x." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Returns the angle of the given leg for x. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| legAngX(hypotenuse: number, leg: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legAngX(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,35 +0,0 @@ | ||||
| --- | ||||
| title: "legAngY" | ||||
| excerpt: "Returns the angle of the given leg for y." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Returns the angle of the given leg for y. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| legAngY(hypotenuse: number, leg: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legAngY(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,35 +0,0 @@ | ||||
| --- | ||||
| title: "legLen" | ||||
| excerpt: "Returns the length of the given leg." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Returns the length of the given leg. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| legLen(hypotenuse: number, leg: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legLen(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										369
									
								
								docs/kcl/line.md
									
									
									
									
									
								
							
							
						
						| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "ln" | ||||
| excerpt: "Computes the natural logarithm of the number." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the natural logarithm of the number. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| ln(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = ln(4) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,35 +0,0 @@ | ||||
| --- | ||||
| title: "log" | ||||
| excerpt: "Computes the logarithm of the number with respect to an arbitrary base." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the logarithm of the number with respect to an arbitrary base. | ||||
|  | ||||
| The result might not be correctly rounded owing to implementation details; `log2()` can produce more accurate results for base 2, and `log10()` can produce more accurate results for base 10. | ||||
|  | ||||
| ```js | ||||
| log(num: number, base: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = log(4, 2) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
| * `base`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "log10" | ||||
| excerpt: "Computes the base 10 logarithm of the number." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the base 10 logarithm of the number. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| log10(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = log10(4) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "log2" | ||||
| excerpt: "Computes the base 2 logarithm of the number." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the base 2 logarithm of the number. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| log2(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = log2(4) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "max" | ||||
| excerpt: "Computes the maximum of the given arguments." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the maximum of the given arguments. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| max(args: [number]) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = max(4, 5, 6) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `args`: `[number]` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "min" | ||||
| excerpt: "Computes the minimum of the given arguments." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the minimum of the given arguments. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| min(args: [number]) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = min(4, 5, 6) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `args`: `[number]` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,33 +0,0 @@ | ||||
| --- | ||||
| title: "pi" | ||||
| excerpt: "Return the value of `pi`. Archimedes’ constant (π)." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Return the value of `pi`. Archimedes’ constant (π). | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| pi() -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = pi() * 3.0 | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,35 +0,0 @@ | ||||
| --- | ||||
| title: "pow" | ||||
| excerpt: "Computes the number to a power." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the number to a power. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| pow(num: number, pow: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = pow(4, 2) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
| * `pow`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "sin" | ||||
| excerpt: "Computes the sine of a number (in radians)." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the sine of a number (in radians). | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| sin(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = sin(2 * pi()) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "sqrt" | ||||
| excerpt: "Computes the square root of a number." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the square root of a number. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| sqrt(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = sqrt(4) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										36604
									
								
								docs/kcl/std.json
									
									
									
									
									
								
							
							
						
						
							
								
								
									
										10512
									
								
								docs/kcl/std.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "tan" | ||||
| excerpt: "Computes the tangent of a number (in radians)." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Computes the tangent of a number (in radians). | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| tan(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = tan(2 * pi()) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,33 +0,0 @@ | ||||
| --- | ||||
| title: "tau" | ||||
| excerpt: "Return the value of `tau`. The full circle constant (τ). Equal to 2π." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Return the value of `tau`. The full circle constant (τ). Equal to 2π. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| tau() -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = tau() | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "toDegrees" | ||||
| excerpt: "Converts a number from radians to degrees." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Converts a number from radians to degrees. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| toDegrees(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = toDegrees(2 * pi()) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,34 +0,0 @@ | ||||
| --- | ||||
| title: "toRadians" | ||||
| excerpt: "Converts a number from degrees to radians." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Converts a number from degrees to radians. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| toRadians(num: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `math` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| const myVar = toRadians(180) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `num`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,8 +1,4 @@ | ||||
| --- | ||||
| title: "KCL Types" | ||||
| excerpt: "Documentation of types for the KCL standard library for the Zoo Modeling App." | ||||
| layout: manual | ||||
| --- | ||||
| # Types | ||||
|  | ||||
| `KCL` defines the following types and keywords the language. | ||||
|  | ||||
|  | ||||
| Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 193 KiB | 
| Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 193 KiB | 
							
								
								
									
										3056
									
								
								e2e/playwright/export-snapshots/gltf-standard-2.gltf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								e2e/playwright/export-snapshots/gltf-standard.gltf
									
									
									
									
									
										Normal file
									
								
							
							
						
						| Before Width: | Height: | Size: 224 KiB | 
| Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 259 KiB | 
| Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 220 KiB | 
| Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 220 KiB | 
| Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 220 KiB | 
| Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 193 KiB | 
							
								
								
									
										494
									
								
								e2e/playwright/export-snapshots/step-.step
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,494 @@ | ||||
| ISO-10303-21; | ||||
| HEADER; | ||||
| FILE_DESCRIPTION((('zoo.dev export')), '2;1'); | ||||
| FILE_NAME('dump.step', '1970-01-01T00:00:00.0+00:00', ('Author unknown'), ('Organization unknown'), 'zoo.dev beta', 'zoo.dev', 'Authorization unknown'); | ||||
| FILE_SCHEMA(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF')); | ||||
| ENDSEC; | ||||
| DATA; | ||||
| #1 = ( | ||||
|   LENGTH_UNIT() | ||||
|   NAMED_UNIT(*) | ||||
|   SI_UNIT($, .METRE.) | ||||
| ); | ||||
| #2 = UNCERTAINTY_MEASURE_WITH_UNIT(0.00001, #1, 'DISTANCE_ACCURACY_VALUE', $); | ||||
| #3 = ( | ||||
|   GEOMETRIC_REPRESENTATION_CONTEXT(3) | ||||
|   GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2)) | ||||
|   GLOBAL_UNIT_ASSIGNED_CONTEXT((#1)) | ||||
|   REPRESENTATION_CONTEXT('', '3D') | ||||
| ); | ||||
| #4 = CARTESIAN_POINT('NONE', (0, 0, -0)); | ||||
| #5 = VERTEX_POINT('NONE', #4); | ||||
| #6 = CARTESIAN_POINT('NONE', (0, -0.64516, -0)); | ||||
| #7 = VERTEX_POINT('NONE', #6); | ||||
| #8 = CARTESIAN_POINT('NONE', (0, -0.64516, 2.58064)); | ||||
| #9 = VERTEX_POINT('NONE', #8); | ||||
| #10 = CARTESIAN_POINT('NONE', (0, 0, 2.58064)); | ||||
| #11 = VERTEX_POINT('NONE', #10); | ||||
| #12 = CARTESIAN_POINT('NONE', (1.996782122555674, -0.64516, -0)); | ||||
| #13 = VERTEX_POINT('NONE', #12); | ||||
| #14 = CARTESIAN_POINT('NONE', (1.996782122555674, -0.64516, 2.58064)); | ||||
| #15 = VERTEX_POINT('NONE', #14); | ||||
| #16 = CARTESIAN_POINT('NONE', (3.839550058615159, -1.9354799999999992, -0)); | ||||
| #17 = VERTEX_POINT('NONE', #16); | ||||
| #18 = CARTESIAN_POINT('NONE', (3.839550058615159, -1.9354799999999992, 2.58064)); | ||||
| #19 = VERTEX_POINT('NONE', #18); | ||||
| #20 = CARTESIAN_POINT('NONE', (6.12902, -1.93548, -0)); | ||||
| #21 = VERTEX_POINT('NONE', #20); | ||||
| #22 = CARTESIAN_POINT('NONE', (6.12902, -1.93548, 2.58064)); | ||||
| #23 = VERTEX_POINT('NONE', #22); | ||||
| #24 = CARTESIAN_POINT('NONE', (6.12902, -1.6129, -0)); | ||||
| #25 = VERTEX_POINT('NONE', #24); | ||||
| #26 = CARTESIAN_POINT('NONE', (6.12902, -1.6129, 2.58064)); | ||||
| #27 = VERTEX_POINT('NONE', #26); | ||||
| #28 = CARTESIAN_POINT('NONE', (3.9412591419317424, -1.6129, -0)); | ||||
| #29 = VERTEX_POINT('NONE', #28); | ||||
| #30 = CARTESIAN_POINT('NONE', (3.9412591419317424, -1.6129, 2.58064)); | ||||
| #31 = VERTEX_POINT('NONE', #30); | ||||
| #32 = CARTESIAN_POINT('NONE', (1.6377992218573856, 0, -0)); | ||||
| #33 = VERTEX_POINT('NONE', #32); | ||||
| #34 = CARTESIAN_POINT('NONE', (1.6377992218573856, 0, 2.58064)); | ||||
| #35 = VERTEX_POINT('NONE', #34); | ||||
| #36 = CARTESIAN_POINT('NONE', (3.7131243491113075, 0.9677400000000002, -0)); | ||||
| #37 = VERTEX_POINT('NONE', #36); | ||||
| #38 = CARTESIAN_POINT('NONE', (3.7131243491113075, 0.9677400000000002, 2.58064)); | ||||
| #39 = VERTEX_POINT('NONE', #38); | ||||
| #40 = CARTESIAN_POINT('NONE', (6.12902, 0.9677399999999998, -0)); | ||||
| #41 = VERTEX_POINT('NONE', #40); | ||||
| #42 = CARTESIAN_POINT('NONE', (6.12902, 0.9677399999999998, 2.58064)); | ||||
| #43 = VERTEX_POINT('NONE', #42); | ||||
| #44 = CARTESIAN_POINT('NONE', (6.12902, 1.29032, -0)); | ||||
| #45 = VERTEX_POINT('NONE', #44); | ||||
| #46 = CARTESIAN_POINT('NONE', (6.12902, 1.29032, 2.58064)); | ||||
| #47 = VERTEX_POINT('NONE', #46); | ||||
| #48 = CARTESIAN_POINT('NONE', (3.6416100848359463, 1.29032, -0)); | ||||
| #49 = VERTEX_POINT('NONE', #48); | ||||
| #50 = CARTESIAN_POINT('NONE', (3.6416100848359463, 1.29032, 2.58064)); | ||||
| #51 = VERTEX_POINT('NONE', #50); | ||||
| #52 = CARTESIAN_POINT('NONE', (2.2580599999999995, 0.64516, -0)); | ||||
| #53 = VERTEX_POINT('NONE', #52); | ||||
| #54 = CARTESIAN_POINT('NONE', (2.2580599999999995, 0.64516, 2.58064)); | ||||
| #55 = VERTEX_POINT('NONE', #54); | ||||
| #56 = CARTESIAN_POINT('NONE', (0, 0.64516, -0)); | ||||
| #57 = VERTEX_POINT('NONE', #56); | ||||
| #58 = CARTESIAN_POINT('NONE', (0, 0.64516, 2.58064)); | ||||
| #59 = VERTEX_POINT('NONE', #58); | ||||
| #60 = DIRECTION('NONE', (0, -1, 0)); | ||||
| #61 = VECTOR('NONE', #60, 1); | ||||
| #62 = CARTESIAN_POINT('NONE', (0, 0, -0)); | ||||
| #63 = LINE('NONE', #62, #61); | ||||
| #64 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #65 = VECTOR('NONE', #64, 1); | ||||
| #66 = CARTESIAN_POINT('NONE', (0, -0.64516, -0)); | ||||
| #67 = LINE('NONE', #66, #65); | ||||
| #68 = DIRECTION('NONE', (0, -1, 0)); | ||||
| #69 = VECTOR('NONE', #68, 1); | ||||
| #70 = CARTESIAN_POINT('NONE', (0, 0, 2.58064)); | ||||
| #71 = LINE('NONE', #70, #69); | ||||
| #72 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #73 = VECTOR('NONE', #72, 1); | ||||
| #74 = CARTESIAN_POINT('NONE', (0, 0, -0)); | ||||
| #75 = LINE('NONE', #74, #73); | ||||
| #76 = DIRECTION('NONE', (1, 0, 0)); | ||||
| #77 = VECTOR('NONE', #76, 1); | ||||
| #78 = CARTESIAN_POINT('NONE', (0, -0.64516, -0)); | ||||
| #79 = LINE('NONE', #78, #77); | ||||
| #80 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #81 = VECTOR('NONE', #80, 1); | ||||
| #82 = CARTESIAN_POINT('NONE', (1.996782122555674, -0.64516, -0)); | ||||
| #83 = LINE('NONE', #82, #81); | ||||
| #84 = DIRECTION('NONE', (1, 0, 0)); | ||||
| #85 = VECTOR('NONE', #84, 1); | ||||
| #86 = CARTESIAN_POINT('NONE', (0, -0.64516, 2.58064)); | ||||
| #87 = LINE('NONE', #86, #85); | ||||
| #88 = DIRECTION('NONE', (0.819152044288992, -0.5735764363510459, 0)); | ||||
| #89 = VECTOR('NONE', #88, 1); | ||||
| #90 = CARTESIAN_POINT('NONE', (1.996782122555674, -0.64516, -0)); | ||||
| #91 = LINE('NONE', #90, #89); | ||||
| #92 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #93 = VECTOR('NONE', #92, 1); | ||||
| #94 = CARTESIAN_POINT('NONE', (3.839550058615159, -1.9354799999999992, -0)); | ||||
| #95 = LINE('NONE', #94, #93); | ||||
| #96 = DIRECTION('NONE', (0.819152044288992, -0.5735764363510459, 0)); | ||||
| #97 = VECTOR('NONE', #96, 1); | ||||
| #98 = CARTESIAN_POINT('NONE', (1.996782122555674, -0.64516, 2.58064)); | ||||
| #99 = LINE('NONE', #98, #97); | ||||
| #100 = DIRECTION('NONE', (1, -0.00000000000000038794063361359933, 0)); | ||||
| #101 = VECTOR('NONE', #100, 1); | ||||
| #102 = CARTESIAN_POINT('NONE', (3.839550058615159, -1.9354799999999992, -0)); | ||||
| #103 = LINE('NONE', #102, #101); | ||||
| #104 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #105 = VECTOR('NONE', #104, 1); | ||||
| #106 = CARTESIAN_POINT('NONE', (6.12902, -1.93548, -0)); | ||||
| #107 = LINE('NONE', #106, #105); | ||||
| #108 = DIRECTION('NONE', (1, -0.00000000000000038794063361359933, 0)); | ||||
| #109 = VECTOR('NONE', #108, 1); | ||||
| #110 = CARTESIAN_POINT('NONE', (3.839550058615159, -1.9354799999999992, 2.58064)); | ||||
| #111 = LINE('NONE', #110, #109); | ||||
| #112 = DIRECTION('NONE', (0, 1, 0)); | ||||
| #113 = VECTOR('NONE', #112, 1); | ||||
| #114 = CARTESIAN_POINT('NONE', (6.12902, -1.93548, -0)); | ||||
| #115 = LINE('NONE', #114, #113); | ||||
| #116 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #117 = VECTOR('NONE', #116, 1); | ||||
| #118 = CARTESIAN_POINT('NONE', (6.12902, -1.6129, -0)); | ||||
| #119 = LINE('NONE', #118, #117); | ||||
| #120 = DIRECTION('NONE', (0, 1, 0)); | ||||
| #121 = VECTOR('NONE', #120, 1); | ||||
| #122 = CARTESIAN_POINT('NONE', (6.12902, -1.93548, 2.58064)); | ||||
| #123 = LINE('NONE', #122, #121); | ||||
| #124 = DIRECTION('NONE', (-1, 0, 0)); | ||||
| #125 = VECTOR('NONE', #124, 1); | ||||
| #126 = CARTESIAN_POINT('NONE', (6.12902, -1.6129, -0)); | ||||
| #127 = LINE('NONE', #126, #125); | ||||
| #128 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #129 = VECTOR('NONE', #128, 1); | ||||
| #130 = CARTESIAN_POINT('NONE', (3.9412591419317424, -1.6129, -0)); | ||||
| #131 = LINE('NONE', #130, #129); | ||||
| #132 = DIRECTION('NONE', (-1, 0, 0)); | ||||
| #133 = VECTOR('NONE', #132, 1); | ||||
| #134 = CARTESIAN_POINT('NONE', (6.12902, -1.6129, 2.58064)); | ||||
| #135 = LINE('NONE', #134, #133); | ||||
| #136 = DIRECTION('NONE', (-0.8191520442889919, 0.573576436351046, 0)); | ||||
| #137 = VECTOR('NONE', #136, 1); | ||||
| #138 = CARTESIAN_POINT('NONE', (3.9412591419317424, -1.6129, -0)); | ||||
| #139 = LINE('NONE', #138, #137); | ||||
| #140 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #141 = VECTOR('NONE', #140, 1); | ||||
| #142 = CARTESIAN_POINT('NONE', (1.6377992218573856, 0, -0)); | ||||
| #143 = LINE('NONE', #142, #141); | ||||
| #144 = DIRECTION('NONE', (-0.8191520442889919, 0.573576436351046, 0)); | ||||
| #145 = VECTOR('NONE', #144, 1); | ||||
| #146 = CARTESIAN_POINT('NONE', (3.9412591419317424, -1.6129, 2.58064)); | ||||
| #147 = LINE('NONE', #146, #145); | ||||
| #148 = DIRECTION('NONE', (0.90630778703665, 0.4226182617406992, 0)); | ||||
| #149 = VECTOR('NONE', #148, 1); | ||||
| #150 = CARTESIAN_POINT('NONE', (1.6377992218573856, 0, -0)); | ||||
| #151 = LINE('NONE', #150, #149); | ||||
| #152 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #153 = VECTOR('NONE', #152, 1); | ||||
| #154 = CARTESIAN_POINT('NONE', (3.7131243491113075, 0.9677400000000002, -0)); | ||||
| #155 = LINE('NONE', #154, #153); | ||||
| #156 = DIRECTION('NONE', (0.90630778703665, 0.4226182617406992, 0)); | ||||
| #157 = VECTOR('NONE', #156, 1); | ||||
| #158 = CARTESIAN_POINT('NONE', (1.6377992218573856, 0, 2.58064)); | ||||
| #159 = LINE('NONE', #158, #157); | ||||
| #160 = DIRECTION('NONE', (1, -0.0000000000000001378647737807002, 0)); | ||||
| #161 = VECTOR('NONE', #160, 1); | ||||
| #162 = CARTESIAN_POINT('NONE', (3.7131243491113075, 0.9677400000000002, -0)); | ||||
| #163 = LINE('NONE', #162, #161); | ||||
| #164 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #165 = VECTOR('NONE', #164, 1); | ||||
| #166 = CARTESIAN_POINT('NONE', (6.12902, 0.9677399999999998, -0)); | ||||
| #167 = LINE('NONE', #166, #165); | ||||
| #168 = DIRECTION('NONE', (1, -0.0000000000000001378647737807002, 0)); | ||||
| #169 = VECTOR('NONE', #168, 1); | ||||
| #170 = CARTESIAN_POINT('NONE', (3.7131243491113075, 0.9677400000000002, 2.58064)); | ||||
| #171 = LINE('NONE', #170, #169); | ||||
| #172 = DIRECTION('NONE', (0, 1, 0)); | ||||
| #173 = VECTOR('NONE', #172, 1); | ||||
| #174 = CARTESIAN_POINT('NONE', (6.12902, 0.9677399999999998, -0)); | ||||
| #175 = LINE('NONE', #174, #173); | ||||
| #176 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #177 = VECTOR('NONE', #176, 1); | ||||
| #178 = CARTESIAN_POINT('NONE', (6.12902, 1.29032, -0)); | ||||
| #179 = LINE('NONE', #178, #177); | ||||
| #180 = DIRECTION('NONE', (0, 1, 0)); | ||||
| #181 = VECTOR('NONE', #180, 1); | ||||
| #182 = CARTESIAN_POINT('NONE', (6.12902, 0.9677399999999998, 2.58064)); | ||||
| #183 = LINE('NONE', #182, #181); | ||||
| #184 = DIRECTION('NONE', (-1, 0, 0)); | ||||
| #185 = VECTOR('NONE', #184, 1); | ||||
| #186 = CARTESIAN_POINT('NONE', (6.12902, 1.29032, -0)); | ||||
| #187 = LINE('NONE', #186, #185); | ||||
| #188 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #189 = VECTOR('NONE', #188, 1); | ||||
| #190 = CARTESIAN_POINT('NONE', (3.6416100848359463, 1.29032, -0)); | ||||
| #191 = LINE('NONE', #190, #189); | ||||
| #192 = DIRECTION('NONE', (-1, 0, 0)); | ||||
| #193 = VECTOR('NONE', #192, 1); | ||||
| #194 = CARTESIAN_POINT('NONE', (6.12902, 1.29032, 2.58064)); | ||||
| #195 = LINE('NONE', #194, #193); | ||||
| #196 = DIRECTION('NONE', (-0.90630778703665, -0.4226182617406995, 0)); | ||||
| #197 = VECTOR('NONE', #196, 1); | ||||
| #198 = CARTESIAN_POINT('NONE', (3.6416100848359463, 1.29032, -0)); | ||||
| #199 = LINE('NONE', #198, #197); | ||||
| #200 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #201 = VECTOR('NONE', #200, 1); | ||||
| #202 = CARTESIAN_POINT('NONE', (2.2580599999999995, 0.64516, -0)); | ||||
| #203 = LINE('NONE', #202, #201); | ||||
| #204 = DIRECTION('NONE', (-0.90630778703665, -0.4226182617406995, 0)); | ||||
| #205 = VECTOR('NONE', #204, 1); | ||||
| #206 = CARTESIAN_POINT('NONE', (3.6416100848359463, 1.29032, 2.58064)); | ||||
| #207 = LINE('NONE', #206, #205); | ||||
| #208 = DIRECTION('NONE', (-1, 0, 0)); | ||||
| #209 = VECTOR('NONE', #208, 1); | ||||
| #210 = CARTESIAN_POINT('NONE', (2.2580599999999995, 0.64516, -0)); | ||||
| #211 = LINE('NONE', #210, #209); | ||||
| #212 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #213 = VECTOR('NONE', #212, 1); | ||||
| #214 = CARTESIAN_POINT('NONE', (0, 0.64516, -0)); | ||||
| #215 = LINE('NONE', #214, #213); | ||||
| #216 = DIRECTION('NONE', (-1, 0, 0)); | ||||
| #217 = VECTOR('NONE', #216, 1); | ||||
| #218 = CARTESIAN_POINT('NONE', (2.2580599999999995, 0.64516, 2.58064)); | ||||
| #219 = LINE('NONE', #218, #217); | ||||
| #220 = DIRECTION('NONE', (0, -1, 0)); | ||||
| #221 = VECTOR('NONE', #220, 1); | ||||
| #222 = CARTESIAN_POINT('NONE', (0, 0.64516, -0)); | ||||
| #223 = LINE('NONE', #222, #221); | ||||
| #224 = DIRECTION('NONE', (0, -1, 0)); | ||||
| #225 = VECTOR('NONE', #224, 1); | ||||
| #226 = CARTESIAN_POINT('NONE', (0, 0.64516, 2.58064)); | ||||
| #227 = LINE('NONE', #226, #225); | ||||
| #228 = EDGE_CURVE('NONE', #5, #7, #63, .T.); | ||||
| #229 = EDGE_CURVE('NONE', #7, #9, #67, .T.); | ||||
| #230 = EDGE_CURVE('NONE', #11, #9, #71, .T.); | ||||
| #231 = EDGE_CURVE('NONE', #5, #11, #75, .T.); | ||||
| #232 = EDGE_CURVE('NONE', #7, #13, #79, .T.); | ||||
| #233 = EDGE_CURVE('NONE', #13, #15, #83, .T.); | ||||
| #234 = EDGE_CURVE('NONE', #9, #15, #87, .T.); | ||||
| #235 = EDGE_CURVE('NONE', #13, #17, #91, .T.); | ||||
| #236 = EDGE_CURVE('NONE', #17, #19, #95, .T.); | ||||
| #237 = EDGE_CURVE('NONE', #15, #19, #99, .T.); | ||||
| #238 = EDGE_CURVE('NONE', #17, #21, #103, .T.); | ||||
| #239 = EDGE_CURVE('NONE', #21, #23, #107, .T.); | ||||
| #240 = EDGE_CURVE('NONE', #19, #23, #111, .T.); | ||||
| #241 = EDGE_CURVE('NONE', #21, #25, #115, .T.); | ||||
| #242 = EDGE_CURVE('NONE', #25, #27, #119, .T.); | ||||
| #243 = EDGE_CURVE('NONE', #23, #27, #123, .T.); | ||||
| #244 = EDGE_CURVE('NONE', #25, #29, #127, .T.); | ||||
| #245 = EDGE_CURVE('NONE', #29, #31, #131, .T.); | ||||
| #246 = EDGE_CURVE('NONE', #27, #31, #135, .T.); | ||||
| #247 = EDGE_CURVE('NONE', #29, #33, #139, .T.); | ||||
| #248 = EDGE_CURVE('NONE', #33, #35, #143, .T.); | ||||
| #249 = EDGE_CURVE('NONE', #31, #35, #147, .T.); | ||||
| #250 = EDGE_CURVE('NONE', #33, #37, #151, .T.); | ||||
| #251 = EDGE_CURVE('NONE', #37, #39, #155, .T.); | ||||
| #252 = EDGE_CURVE('NONE', #35, #39, #159, .T.); | ||||
| #253 = EDGE_CURVE('NONE', #37, #41, #163, .T.); | ||||
| #254 = EDGE_CURVE('NONE', #41, #43, #167, .T.); | ||||
| #255 = EDGE_CURVE('NONE', #39, #43, #171, .T.); | ||||
| #256 = EDGE_CURVE('NONE', #41, #45, #175, .T.); | ||||
| #257 = EDGE_CURVE('NONE', #45, #47, #179, .T.); | ||||
| #258 = EDGE_CURVE('NONE', #43, #47, #183, .T.); | ||||
| #259 = EDGE_CURVE('NONE', #45, #49, #187, .T.); | ||||
| #260 = EDGE_CURVE('NONE', #49, #51, #191, .T.); | ||||
| #261 = EDGE_CURVE('NONE', #47, #51, #195, .T.); | ||||
| #262 = EDGE_CURVE('NONE', #49, #53, #199, .T.); | ||||
| #263 = EDGE_CURVE('NONE', #53, #55, #203, .T.); | ||||
| #264 = EDGE_CURVE('NONE', #51, #55, #207, .T.); | ||||
| #265 = EDGE_CURVE('NONE', #53, #57, #211, .T.); | ||||
| #266 = EDGE_CURVE('NONE', #57, #59, #215, .T.); | ||||
| #267 = EDGE_CURVE('NONE', #55, #59, #219, .T.); | ||||
| #268 = EDGE_CURVE('NONE', #57, #5, #223, .T.); | ||||
| #269 = EDGE_CURVE('NONE', #59, #11, #227, .T.); | ||||
| #270 = ORIENTED_EDGE('NONE', *, *, #228, .T.); | ||||
| #271 = ORIENTED_EDGE('NONE', *, *, #229, .T.); | ||||
| #272 = ORIENTED_EDGE('NONE', *, *, #230, .F.); | ||||
| #273 = ORIENTED_EDGE('NONE', *, *, #231, .F.); | ||||
| #274 = EDGE_LOOP('NONE', (#270, #271, #272, #273)); | ||||
| #275 = ORIENTED_EDGE('NONE', *, *, #232, .T.); | ||||
| #276 = ORIENTED_EDGE('NONE', *, *, #233, .T.); | ||||
| #277 = ORIENTED_EDGE('NONE', *, *, #234, .F.); | ||||
| #278 = ORIENTED_EDGE('NONE', *, *, #229, .F.); | ||||
| #279 = EDGE_LOOP('NONE', (#275, #276, #277, #278)); | ||||
| #280 = ORIENTED_EDGE('NONE', *, *, #235, .T.); | ||||
| #281 = ORIENTED_EDGE('NONE', *, *, #236, .T.); | ||||
| #282 = ORIENTED_EDGE('NONE', *, *, #237, .F.); | ||||
| #283 = ORIENTED_EDGE('NONE', *, *, #233, .F.); | ||||
| #284 = EDGE_LOOP('NONE', (#280, #281, #282, #283)); | ||||
| #285 = ORIENTED_EDGE('NONE', *, *, #238, .T.); | ||||
| #286 = ORIENTED_EDGE('NONE', *, *, #239, .T.); | ||||
| #287 = ORIENTED_EDGE('NONE', *, *, #240, .F.); | ||||
| #288 = ORIENTED_EDGE('NONE', *, *, #236, .F.); | ||||
| #289 = EDGE_LOOP('NONE', (#285, #286, #287, #288)); | ||||
| #290 = ORIENTED_EDGE('NONE', *, *, #241, .T.); | ||||
| #291 = ORIENTED_EDGE('NONE', *, *, #242, .T.); | ||||
| #292 = ORIENTED_EDGE('NONE', *, *, #243, .F.); | ||||
| #293 = ORIENTED_EDGE('NONE', *, *, #239, .F.); | ||||
| #294 = EDGE_LOOP('NONE', (#290, #291, #292, #293)); | ||||
| #295 = ORIENTED_EDGE('NONE', *, *, #244, .T.); | ||||
| #296 = ORIENTED_EDGE('NONE', *, *, #245, .T.); | ||||
| #297 = ORIENTED_EDGE('NONE', *, *, #246, .F.); | ||||
| #298 = ORIENTED_EDGE('NONE', *, *, #242, .F.); | ||||
| #299 = EDGE_LOOP('NONE', (#295, #296, #297, #298)); | ||||
| #300 = ORIENTED_EDGE('NONE', *, *, #247, .T.); | ||||
| #301 = ORIENTED_EDGE('NONE', *, *, #248, .T.); | ||||
| #302 = ORIENTED_EDGE('NONE', *, *, #249, .F.); | ||||
| #303 = ORIENTED_EDGE('NONE', *, *, #245, .F.); | ||||
| #304 = EDGE_LOOP('NONE', (#300, #301, #302, #303)); | ||||
| #305 = ORIENTED_EDGE('NONE', *, *, #250, .T.); | ||||
| #306 = ORIENTED_EDGE('NONE', *, *, #251, .T.); | ||||
| #307 = ORIENTED_EDGE('NONE', *, *, #252, .F.); | ||||
| #308 = ORIENTED_EDGE('NONE', *, *, #248, .F.); | ||||
| #309 = EDGE_LOOP('NONE', (#305, #306, #307, #308)); | ||||
| #310 = ORIENTED_EDGE('NONE', *, *, #253, .T.); | ||||
| #311 = ORIENTED_EDGE('NONE', *, *, #254, .T.); | ||||
| #312 = ORIENTED_EDGE('NONE', *, *, #255, .F.); | ||||
| #313 = ORIENTED_EDGE('NONE', *, *, #251, .F.); | ||||
| #314 = EDGE_LOOP('NONE', (#310, #311, #312, #313)); | ||||
| #315 = ORIENTED_EDGE('NONE', *, *, #256, .T.); | ||||
| #316 = ORIENTED_EDGE('NONE', *, *, #257, .T.); | ||||
| #317 = ORIENTED_EDGE('NONE', *, *, #258, .F.); | ||||
| #318 = ORIENTED_EDGE('NONE', *, *, #254, .F.); | ||||
| #319 = EDGE_LOOP('NONE', (#315, #316, #317, #318)); | ||||
| #320 = ORIENTED_EDGE('NONE', *, *, #259, .T.); | ||||
| #321 = ORIENTED_EDGE('NONE', *, *, #260, .T.); | ||||
| #322 = ORIENTED_EDGE('NONE', *, *, #261, .F.); | ||||
| #323 = ORIENTED_EDGE('NONE', *, *, #257, .F.); | ||||
| #324 = EDGE_LOOP('NONE', (#320, #321, #322, #323)); | ||||
| #325 = ORIENTED_EDGE('NONE', *, *, #262, .T.); | ||||
| #326 = ORIENTED_EDGE('NONE', *, *, #263, .T.); | ||||
| #327 = ORIENTED_EDGE('NONE', *, *, #264, .F.); | ||||
| #328 = ORIENTED_EDGE('NONE', *, *, #260, .F.); | ||||
| #329 = EDGE_LOOP('NONE', (#325, #326, #327, #328)); | ||||
| #330 = ORIENTED_EDGE('NONE', *, *, #265, .T.); | ||||
| #331 = ORIENTED_EDGE('NONE', *, *, #266, .T.); | ||||
| #332 = ORIENTED_EDGE('NONE', *, *, #267, .F.); | ||||
| #333 = ORIENTED_EDGE('NONE', *, *, #263, .F.); | ||||
| #334 = EDGE_LOOP('NONE', (#330, #331, #332, #333)); | ||||
| #335 = ORIENTED_EDGE('NONE', *, *, #268, .T.); | ||||
| #336 = ORIENTED_EDGE('NONE', *, *, #231, .T.); | ||||
| #337 = ORIENTED_EDGE('NONE', *, *, #269, .F.); | ||||
| #338 = ORIENTED_EDGE('NONE', *, *, #266, .F.); | ||||
| #339 = EDGE_LOOP('NONE', (#335, #336, #337, #338)); | ||||
| #340 = ORIENTED_EDGE('NONE', *, *, #228, .T.); | ||||
| #341 = ORIENTED_EDGE('NONE', *, *, #232, .T.); | ||||
| #342 = ORIENTED_EDGE('NONE', *, *, #235, .T.); | ||||
| #343 = ORIENTED_EDGE('NONE', *, *, #238, .T.); | ||||
| #344 = ORIENTED_EDGE('NONE', *, *, #241, .T.); | ||||
| #345 = ORIENTED_EDGE('NONE', *, *, #244, .T.); | ||||
| #346 = ORIENTED_EDGE('NONE', *, *, #247, .T.); | ||||
| #347 = ORIENTED_EDGE('NONE', *, *, #250, .T.); | ||||
| #348 = ORIENTED_EDGE('NONE', *, *, #253, .T.); | ||||
| #349 = ORIENTED_EDGE('NONE', *, *, #256, .T.); | ||||
| #350 = ORIENTED_EDGE('NONE', *, *, #259, .T.); | ||||
| #351 = ORIENTED_EDGE('NONE', *, *, #262, .T.); | ||||
| #352 = ORIENTED_EDGE('NONE', *, *, #265, .T.); | ||||
| #353 = ORIENTED_EDGE('NONE', *, *, #268, .T.); | ||||
| #354 = EDGE_LOOP('NONE', (#340, #341, #342, #343, #344, #345, #346, #347, #348, #349, #350, #351, #352, #353)); | ||||
| #355 = ORIENTED_EDGE('NONE', *, *, #230, .T.); | ||||
| #356 = ORIENTED_EDGE('NONE', *, *, #234, .T.); | ||||
| #357 = ORIENTED_EDGE('NONE', *, *, #237, .T.); | ||||
| #358 = ORIENTED_EDGE('NONE', *, *, #240, .T.); | ||||
| #359 = ORIENTED_EDGE('NONE', *, *, #243, .T.); | ||||
| #360 = ORIENTED_EDGE('NONE', *, *, #246, .T.); | ||||
| #361 = ORIENTED_EDGE('NONE', *, *, #249, .T.); | ||||
| #362 = ORIENTED_EDGE('NONE', *, *, #252, .T.); | ||||
| #363 = ORIENTED_EDGE('NONE', *, *, #255, .T.); | ||||
| #364 = ORIENTED_EDGE('NONE', *, *, #258, .T.); | ||||
| #365 = ORIENTED_EDGE('NONE', *, *, #261, .T.); | ||||
| #366 = ORIENTED_EDGE('NONE', *, *, #264, .T.); | ||||
| #367 = ORIENTED_EDGE('NONE', *, *, #267, .T.); | ||||
| #368 = ORIENTED_EDGE('NONE', *, *, #269, .T.); | ||||
| #369 = EDGE_LOOP('NONE', (#355, #356, #357, #358, #359, #360, #361, #362, #363, #364, #365, #366, #367, #368)); | ||||
| #370 = CARTESIAN_POINT('NONE', (0, -0.3225799999999985, 1.2903199999999995)); | ||||
| #371 = DIRECTION('NONE', (-1, -0, 0)); | ||||
| #372 = AXIS2_PLACEMENT_3D('NONE', #370, #371, $); | ||||
| #373 = PLANE('NONE', #372); | ||||
| #374 = CARTESIAN_POINT('NONE', (0.9983910612778368, -0.6451599999999998, 1.2903199999999997)); | ||||
| #375 = DIRECTION('NONE', (0, -1, 0)); | ||||
| #376 = AXIS2_PLACEMENT_3D('NONE', #374, #375, $); | ||||
| #377 = PLANE('NONE', #376); | ||||
| #378 = CARTESIAN_POINT('NONE', (2.918166090585415, -1.2903199999999988, 1.2903199999999997)); | ||||
| #379 = DIRECTION('NONE', (-0.5735764363510459, -0.8191520442889919, 0)); | ||||
| #380 = AXIS2_PLACEMENT_3D('NONE', #378, #379, $); | ||||
| #381 = PLANE('NONE', #380); | ||||
| #382 = CARTESIAN_POINT('NONE', (4.984285029307579, -1.9354799999999992, 1.2903199999999997)); | ||||
| #383 = DIRECTION('NONE', (0, -1, 0)); | ||||
| #384 = AXIS2_PLACEMENT_3D('NONE', #382, #383, $); | ||||
| #385 = PLANE('NONE', #384); | ||||
| #386 = CARTESIAN_POINT('NONE', (6.129019999999999, -1.7741899999999997, 1.2903199999999997)); | ||||
| #387 = DIRECTION('NONE', (1, -0, 0)); | ||||
| #388 = AXIS2_PLACEMENT_3D('NONE', #386, #387, $); | ||||
| #389 = PLANE('NONE', #388); | ||||
| #390 = CARTESIAN_POINT('NONE', (5.035139570965871, -1.6128999999999998, 1.2903199999999997)); | ||||
| #391 = DIRECTION('NONE', (0, 1, -0)); | ||||
| #392 = AXIS2_PLACEMENT_3D('NONE', #390, #391, $); | ||||
| #393 = PLANE('NONE', #392); | ||||
| #394 = CARTESIAN_POINT('NONE', (2.7895291818945633, -0.8064499999999998, 1.2903199999999995)); | ||||
| #395 = DIRECTION('NONE', (0.5735764363510459, 0.8191520442889918, -0)); | ||||
| #396 = AXIS2_PLACEMENT_3D('NONE', #394, #395, $); | ||||
| #397 = PLANE('NONE', #396); | ||||
| #398 = CARTESIAN_POINT('NONE', (2.6754617854843468, 0.4838700000000003, 1.2903199999999997)); | ||||
| #399 = DIRECTION('NONE', (0.4226182617406992, -0.90630778703665, 0)); | ||||
| #400 = AXIS2_PLACEMENT_3D('NONE', #398, #399, $); | ||||
| #401 = PLANE('NONE', #400); | ||||
| #402 = CARTESIAN_POINT('NONE', (4.921072174555653, 0.9677399999999998, 1.2903199999999995)); | ||||
| #403 = DIRECTION('NONE', (0, -1, 0)); | ||||
| #404 = AXIS2_PLACEMENT_3D('NONE', #402, #403, $); | ||||
| #405 = PLANE('NONE', #404); | ||||
| #406 = CARTESIAN_POINT('NONE', (6.129019999999998, 1.1290299999999989, 1.2903199999999995)); | ||||
| #407 = DIRECTION('NONE', (1, -0, 0)); | ||||
| #408 = AXIS2_PLACEMENT_3D('NONE', #406, #407, $); | ||||
| #409 = PLANE('NONE', #408); | ||||
| #410 = CARTESIAN_POINT('NONE', (4.8853150424179725, 1.2903199999999997, 1.2903199999999997)); | ||||
| #411 = DIRECTION('NONE', (0, 1, -0)); | ||||
| #412 = AXIS2_PLACEMENT_3D('NONE', #410, #411, $); | ||||
| #413 = PLANE('NONE', #412); | ||||
| #414 = CARTESIAN_POINT('NONE', (2.9498350424179733, 0.9677399999999998, 1.2903199999999997)); | ||||
| #415 = DIRECTION('NONE', (-0.42261826174069933, 0.9063077870366499, -0)); | ||||
| #416 = AXIS2_PLACEMENT_3D('NONE', #414, #415, $); | ||||
| #417 = PLANE('NONE', #416); | ||||
| #418 = CARTESIAN_POINT('NONE', (1.1290299999999998, 0.6451599999999998, 1.29032)); | ||||
| #419 = DIRECTION('NONE', (0, 1, -0)); | ||||
| #420 = AXIS2_PLACEMENT_3D('NONE', #418, #419, $); | ||||
| #421 = PLANE('NONE', #420); | ||||
| #422 = CARTESIAN_POINT('NONE', (0, 0.32257999999999987, 1.2903199999999995)); | ||||
| #423 = DIRECTION('NONE', (-1, -0, 0)); | ||||
| #424 = AXIS2_PLACEMENT_3D('NONE', #422, #423, $); | ||||
| #425 = PLANE('NONE', #424); | ||||
| #426 = CARTESIAN_POINT('NONE', (0, 0, -0)); | ||||
| #427 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #428 = AXIS2_PLACEMENT_3D('NONE', #426, #427, $); | ||||
| #429 = PLANE('NONE', #428); | ||||
| #430 = CARTESIAN_POINT('NONE', (0, 0, 2.58064)); | ||||
| #431 = DIRECTION('NONE', (0, 0, 1)); | ||||
| #432 = AXIS2_PLACEMENT_3D('NONE', #430, #431, $); | ||||
| #433 = PLANE('NONE', #432); | ||||
| #434 = FACE_OUTER_BOUND('NONE', #274, .T.); | ||||
| #435 = ADVANCED_FACE('NONE', (#434), #373, .T.); | ||||
| #436 = FACE_OUTER_BOUND('NONE', #279, .T.); | ||||
| #437 = ADVANCED_FACE('NONE', (#436), #377, .T.); | ||||
| #438 = FACE_OUTER_BOUND('NONE', #284, .T.); | ||||
| #439 = ADVANCED_FACE('NONE', (#438), #381, .T.); | ||||
| #440 = FACE_OUTER_BOUND('NONE', #289, .T.); | ||||
| #441 = ADVANCED_FACE('NONE', (#440), #385, .T.); | ||||
| #442 = FACE_OUTER_BOUND('NONE', #294, .T.); | ||||
| #443 = ADVANCED_FACE('NONE', (#442), #389, .T.); | ||||
| #444 = FACE_OUTER_BOUND('NONE', #299, .T.); | ||||
| #445 = ADVANCED_FACE('NONE', (#444), #393, .T.); | ||||
| #446 = FACE_OUTER_BOUND('NONE', #304, .T.); | ||||
| #447 = ADVANCED_FACE('NONE', (#446), #397, .T.); | ||||
| #448 = FACE_OUTER_BOUND('NONE', #309, .T.); | ||||
| #449 = ADVANCED_FACE('NONE', (#448), #401, .T.); | ||||
| #450 = FACE_OUTER_BOUND('NONE', #314, .T.); | ||||
| #451 = ADVANCED_FACE('NONE', (#450), #405, .T.); | ||||
| #452 = FACE_OUTER_BOUND('NONE', #319, .T.); | ||||
| #453 = ADVANCED_FACE('NONE', (#452), #409, .T.); | ||||
| #454 = FACE_OUTER_BOUND('NONE', #324, .T.); | ||||
| #455 = ADVANCED_FACE('NONE', (#454), #413, .T.); | ||||
| #456 = FACE_OUTER_BOUND('NONE', #329, .T.); | ||||
| #457 = ADVANCED_FACE('NONE', (#456), #417, .T.); | ||||
| #458 = FACE_OUTER_BOUND('NONE', #334, .T.); | ||||
| #459 = ADVANCED_FACE('NONE', (#458), #421, .T.); | ||||
| #460 = FACE_OUTER_BOUND('NONE', #339, .T.); | ||||
| #461 = ADVANCED_FACE('NONE', (#460), #425, .T.); | ||||
| #462 = FACE_OUTER_BOUND('NONE', #354, .F.); | ||||
| #463 = ADVANCED_FACE('NONE', (#462), #429, .F.); | ||||
| #464 = FACE_OUTER_BOUND('NONE', #369, .T.); | ||||
| #465 = ADVANCED_FACE('NONE', (#464), #433, .T.); | ||||
| #466 = CLOSED_SHELL('NONE', (#435, #437, #439, #441, #443, #445, #447, #449, #451, #453, #455, #457, #459, #461, #463, #465)); | ||||
| #467 = ORIENTED_CLOSED_SHELL('NONE', *, #466, .T.); | ||||
| #468 = MANIFOLD_SOLID_BREP('NONE', #467); | ||||
| #469 = APPLICATION_CONTEXT('configuration controlled 3D design of mechanical parts and assemblies'); | ||||
| #470 = PRODUCT_DEFINITION_CONTEXT('part definition', #469, 'design'); | ||||
| #471 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ()); | ||||
| #472 = PRODUCT_DEFINITION_FORMATION('', $, #471); | ||||
| #473 = PRODUCT_DEFINITION('design', $, #472, #470); | ||||
| #474 = PRODUCT_DEFINITION_SHAPE('NONE', $, #473); | ||||
| #475 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#468), #3); | ||||
| #476 = SHAPE_DEFINITION_REPRESENTATION(#474, #475); | ||||
| ENDSEC; | ||||
| END-ISO-10303-21; | ||||
