Compare commits

...

32 Commits

Author SHA1 Message Date
e8a82ea85e Clean up for PR 2025-04-11 09:47:45 -04:00
c1894edaed Remove sha1, add rfc3161TimeStampServer 2025-04-11 08:40:24 -04:00
8c28f34238 Back to publisherName = certificateSubjectName = KittyCAD Inc 2025-04-11 07:40:38 -04:00
d2340628a8 WIP 2025-04-11 07:05:22 -04:00
a1f5cdd690 Update signingHashAlgorithms to include sha1 2025-04-11 05:18:56 -04:00
d1d8d0a82c Use smctl windows certsync to update the windows store in build-apps (attempt) 2025-04-11 05:03:33 -04:00
f76b328136 WIP messing with Get-ChildItem -Recurse Cert 2025-04-11 04:59:45 -04:00
a13548da17 WIP messing with Get-ChildItem -Recurse Cert 2025-04-11 04:55:18 -04:00
65f4b0f239 WIP messing with Get-ChildItem -Recurse Cert 2025-04-11 04:54:05 -04:00
dbcc0bd3b4 WIP messing with Get-ChildItem -Recurse Cert 2025-04-11 04:43:35 -04:00
472b3618ac shell: pwsh 2025-04-11 04:00:47 -04:00
43e89e8bae Add back smksp_registrar.exe list and smctl.exe keypair ls 2025-04-10 19:39:56 -04:00
94a9e01301 Add certificateSha1 2025-04-10 19:02:01 -04:00
3980a1caf8 WIP 2025-04-10 18:58:46 -04:00
d4f23f8469 Trying to follow https://github.com/electron-userland/electron-builder/issues/7605#issuecomment-2257861622 2025-04-10 18:55:46 -04:00
9143c6f08a Test from https://github.com/electron-userland/electron-builder/issues/7605#issuecomment-2257861622 2025-04-10 18:49:23 -04:00
1d4456c458 Loosing my mind 2025-04-10 18:39:13 -04:00
c6fbb4fc63 Fix typo 2025-04-10 18:36:17 -04:00
b7c8d6c185 Copied line by line from docs in dummy script 2025-04-10 17:58:48 -04:00
f23aa5e642 Add dummy pierre-test-windows-code-sign, plus console log on normal script 2025-04-10 17:36:34 -04:00
8bb26c9b89 Remove stdio param for hopefully more logs 2025-04-10 16:56:54 -04:00
0d7aebdee9 DEBUG=electron-builder to get more logs (maybe) 2025-04-10 16:40:11 -04:00
ad333c2055 Try certutil.exe -csp "DigiCert Software Trust Manager KSP", forget yarn cache for now 2025-04-10 16:25:12 -04:00
3559df0c5e Add smksp_registrar.exe register which is somewhere else in their docs. Plus comment 2025-04-10 16:00:53 -04:00
e2dda07829 Update from docs, back to inherit 2025-04-10 15:33:19 -04:00
ea585cb5d6 Trying to get more logs 2025-04-10 15:04:18 -04:00
8af9af2aa7 Another try with the right things commented out 2025-04-10 14:22:30 -04:00
f0ba35c0b2 WIP: Updater on Nightly on Windows failed
Fixes #6256
2025-04-10 14:09:55 -04:00
970cf7f017 skip unreliable AI tests (#6252)
skip unrealiable AI tests
2025-04-10 12:10:57 -04:00
d125efcd60 Bidirectional extrude/revolve (#6154)
* extend extrude endpoint

* revolve and mocks

* add bounds check to revolve

* kcl examples of new args

* update to 110

* fix mock

* move example to prelude

* change to camelCase

* new prelude tests

* extend just file

* missed change

* change to XY

* redo sim tests

* review changes

* redo markdown
2025-04-10 10:46:10 -04:00
4664427832 Add a sidebar action to create a share link (#6233) 2025-04-10 00:27:22 +00:00
d84b9cc875 Remove flaky pixel check from prompt-to-edit test (#6225)
remove flaky pixel check
2025-04-10 00:06:38 +00:00
115 changed files with 4631 additions and 626 deletions

View File

@ -10,7 +10,8 @@ on:
- 'nightly-v[0-9]+.[0-9]+.[0-9]+' - 'nightly-v[0-9]+.[0-9]+.[0-9]+'
env: env:
IS_RELEASE: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'v') }} # IS_RELEASE: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'v') }}
IS_RELEASE: true
IS_NIGHTLY: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'nightly-v') }} IS_NIGHTLY: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'nightly-v') }}
concurrency: concurrency:
@ -99,11 +100,11 @@ jobs:
yarn files:set-version yarn files:set-version
yarn files:flip-to-nightly yarn files:flip-to-nightly
- name: Set release version # - name: Set release version
if: ${{ env.IS_RELEASE == 'true' }} # if: ${{ env.IS_RELEASE == 'true' }}
run: | # run: |
export VERSION=${GITHUB_REF_NAME#v} # export VERSION=${GITHUB_REF_NAME#v}
yarn files:set-version # yarn files:set-version
- uses: actions/upload-artifact@v4 - uses: actions/upload-artifact@v4
with: with:
@ -183,30 +184,32 @@ jobs:
max_attempts: 3 max_attempts: 3
command: yarn install command: yarn install
# Next steps are from Digicert docs at
# https://docs.digicert.com/en/digicert-keylocker/ci-cd-integrations/scripts/github/scripts-for-signing-using-ksp-library-on-github.html#ksp-signing-using-github-action-488726
- name: Prepare certificate and variables (Windows only) - name: Prepare certificate and variables (Windows only)
if: ${{ (env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true') && matrix.os == 'windows-2022' }} if: ${{ (env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true') && matrix.os == 'windows-2022' }}
run: | run: |
echo "${{secrets.SM_CLIENT_CERT_FILE_B64 }}" | base64 --decode > /d/Certificate_pkcs12.p12 CERTIFICATE_PATH=$RUNNER_TEMP/certificate.p12
cat /d/Certificate_pkcs12.p12 echo "$SM_CLIENT_CERT_FILE_B64" | base64 --decode > $CERTIFICATE_PATH
echo "::set-output name=version::${GITHUB_REF#refs/tags/v}" echo "SM_CLIENT_CERT_FILE=$CERTIFICATE_PATH" >> "$GITHUB_ENV"
echo "SM_HOST=${{ secrets.SM_HOST }}" >> "$GITHUB_ENV" echo "SM_HOST=${{ secrets.SM_HOST }}" >> "$GITHUB_ENV"
echo "SM_API_KEY=${{ secrets.SM_API_KEY }}" >> "$GITHUB_ENV" echo "SM_API_KEY=${{ secrets.SM_API_KEY }}" >> "$GITHUB_ENV"
echo "SM_CLIENT_CERT_FILE=D:\\Certificate_pkcs12.p12" >> "$GITHUB_ENV"
echo "SM_CLIENT_CERT_PASSWORD=${{ secrets.SM_CLIENT_CERT_PASSWORD }}" >> "$GITHUB_ENV" echo "SM_CLIENT_CERT_PASSWORD=${{ secrets.SM_CLIENT_CERT_PASSWORD }}" >> "$GITHUB_ENV"
echo "C:\Program Files (x86)\Windows Kits\10\App Certification Kit" >> $GITHUB_PATH echo "C:\Program Files (x86)\Windows Kits\10\App Certification Kit" >> $GITHUB_PATH
echo "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools" >> $GITHUB_PATH echo "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools" >> $GITHUB_PATH
echo "C:\Program Files\DigiCert\DigiCert One Signing Manager Tools" >> $GITHUB_PATH echo "C:\Program Files\DigiCert\DigiCert Keylocker Tools" >> $GITHUB_PATH
shell: bash shell: bash
- name: Setup certicate with SSM KSP (Windows only) - name: Setup certicate with SSM KSP (Windows only)
if: ${{ (env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true') && matrix.os == 'windows-2022' }} if: ${{ (env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true') && matrix.os == 'windows-2022' }}
run: | run: |
curl -X GET https://one.digicert.com/signingmanager/api-ui/v1/releases/smtools-windows-x64.msi/download -H "x-api-key:%SM_API_KEY%" -o smtools-windows-x64.msi curl -X GET https://one.digicert.com/signingmanager/api-ui/v1/releases/Keylockertools-windows-x64.msi/download -H "x-api-key:%SM_API_KEY%" -o Keylockertools-windows-x64.msi
msiexec /i smtools-windows-x64.msi /quiet /qn msiexec /i Keylockertools-windows-x64.msi /quiet /qn
smksp_registrar.exe list smksp_registrar.exe list
smctl.exe keypair ls smctl.exe keypair ls
C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user
smksp_cert_sync.exe smksp_cert_sync.exe
smctl windows certsync
shell: cmd shell: cmd
- name: Build the app (debug) - name: Build the app (debug)
@ -225,8 +228,8 @@ jobs:
CSC_LINK: ${{ secrets.APPLE_CERTIFICATE }} CSC_LINK: ${{ secrets.APPLE_CERTIFICATE }}
CSC_KEY_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} CSC_KEY_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
CSC_KEYCHAIN: ${{ secrets.APPLE_SIGNING_IDENTITY }} CSC_KEYCHAIN: ${{ secrets.APPLE_SIGNING_IDENTITY }}
WINDOWS_CERTIFICATE_THUMBPRINT: ${{ secrets.WINDOWS_CERTIFICATE_THUMBPRINT }} # DEBUG: "electron-notarize*"
DEBUG: "electron-notarize*" DEBUG: electron-builder
# TODO: Fix electron-notarize flakes. The logs above should help gather more data on failures # TODO: Fix electron-notarize flakes. The logs above should help gather more data on failures
uses: nick-fields/retry@v3.0.2 uses: nick-fields/retry@v3.0.2
with: with:

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 it is too large Load Diff

View File

@ -72,7 +72,6 @@ test.describe('edit with AI example snapshots', () => {
const submittingToast = page.getByText('Submitting to Text-to-CAD API...') const submittingToast = page.getByText('Submitting to Text-to-CAD API...')
await test.step('wait for scene to load select body and check selection came through', async () => { await test.step('wait for scene to load select body and check selection came through', async () => {
await scene.expectPixelColor([134, 134, 134], body1CapCoords, 15)
await clickBody1Cap() await clickBody1Cap()
await scene.expectPixelColor(yellow, body1CapCoords, 20) await scene.expectPixelColor(yellow, body1CapCoords, 20)
await editor.expectState({ await editor.expectState({

View File

@ -51,6 +51,7 @@ test.describe('Prompt-to-edit tests', { tag: '@skipWin' }, () => {
page, page,
scene, scene,
}) => { }) => {
test.fixme(orRunWhenFullSuiteEnabled())
await context.addInitScript((file) => { await context.addInitScript((file) => {
localStorage.setItem('persistCode', file) localStorage.setItem('persistCode', file)
}, file) }, file)
@ -259,6 +260,7 @@ test.describe('Prompt-to-edit tests', { tag: '@skipWin' }, () => {
page, page,
scene, scene,
}) => { }) => {
test.fixme(orRunWhenFullSuiteEnabled())
const body1CapCoords = { x: 571, y: 311 } const body1CapCoords = { x: 571, y: 311 }
const body2WallCoords = { x: 620, y: 152 } const body2WallCoords = { x: 620, y: 152 }
const [clickBody1Cap] = scene.makeMouseHelpers( const [clickBody1Cap] = scene.makeMouseHelpers(

View File

@ -33,10 +33,12 @@ win:
- x64 - x64
- arm64 - arm64
signtoolOptions: signtoolOptions:
sign: "./scripts/sign-win.js" certificateSha1: F4C9A52FF7BC26EE5E054946F6B11DEEA94C748D
signingHashAlgorithms: signingHashAlgorithms:
- sha256 - sha256
publisherName: "KittyCAD Inc" # needs to be exactly like on Digicert publisherName: "KittyCAD Inc"
certificateSubjectName: "KittyCAD Inc"
rfc3161TimeStampServer: http://timestamp.digicert.com
icon: "assets/icon.ico" icon: "assets/icon.ico"
fileAssociations: fileAssociations:
- ext: kcl - ext: kcl

4
rust/Cargo.lock generated
View File

@ -2033,9 +2033,9 @@ dependencies = [
[[package]] [[package]]
name = "kittycad-modeling-cmds" name = "kittycad-modeling-cmds"
version = "0.2.108" version = "0.2.110"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58f5fbcfb0fe3384592829cd1a5109aa45fb6a3ffc5ff2d164d2fd528ffd4641" checksum = "bdfd16800a12a2eaefff53958bd871875c246e669274269f7caefc25d19641ad"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"chrono", "chrono",

View File

@ -36,7 +36,7 @@ dashmap = { version = "6.1.0" }
http = "1" http = "1"
indexmap = "2.7.0" indexmap = "2.7.0"
kittycad = { version = "0.3.36", default-features = false, features = ["js", "requests"] } kittycad = { version = "0.3.36", default-features = false, features = ["js", "requests"] }
kittycad-modeling-cmds = { version = "0.2.108", features = ["ts-rs", "websocket"] } kittycad-modeling-cmds = { version = "0.2.110", features = ["ts-rs", "websocket"] }
lazy_static = "1.5.0" lazy_static = "1.5.0"
miette = "7.5.0" miette = "7.5.0"
pyo3 = { version = "0.24.0" } pyo3 = { version = "0.24.0" }

View File

@ -13,6 +13,7 @@ redo-kcl-stdlib-docs-no-imgs:
# Then run the stdlib docs generation # Then run the stdlib docs generation
redo-kcl-stdlib-docs: redo-kcl-stdlib-docs:
TWENTY_TWENTY=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- kcl_test_example TWENTY_TWENTY=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- kcl_test_example
TWENTY_TWENTY=overwrite {{cnr}} --workspace --no-fail-fast docs::kcl_doc::test::test_examples
EXPECTORATE=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- docs::gen_std_tests::test_generate_stdlib EXPECTORATE=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- docs::gen_std_tests::test_generate_stdlib
# Copy a test KCL file from executor tests into a new simulation test. # Copy a test KCL file from executor tests into a new simulation test.

View File

@ -10,6 +10,7 @@ use kcmc::{
ok_response::OkModelingCmdResponse, ok_response::OkModelingCmdResponse,
output::ExtrusionFaceInfo, output::ExtrusionFaceInfo,
shared::ExtrusionFaceCapType, shared::ExtrusionFaceCapType,
shared::Opposite,
websocket::{ModelingCmdReq, OkWebSocketResponseData}, websocket::{ModelingCmdReq, OkWebSocketResponseData},
ModelingCmd, ModelingCmd,
}; };
@ -30,10 +31,22 @@ use crate::{
pub async fn extrude(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn extrude(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let sketches = args.get_unlabeled_kw_arg_typed("sketches", &RuntimeType::sketches(), exec_state)?; let sketches = args.get_unlabeled_kw_arg_typed("sketches", &RuntimeType::sketches(), exec_state)?;
let length = args.get_kw_arg("length")?; let length = args.get_kw_arg("length")?;
let symmetric = args.get_kw_arg_opt("symmetric")?;
let bidirectional_length = args.get_kw_arg_opt("bidirectionalLength")?;
let tag_start = args.get_kw_arg_opt("tagStart")?; let tag_start = args.get_kw_arg_opt("tagStart")?;
let tag_end = args.get_kw_arg_opt("tagEnd")?; let tag_end = args.get_kw_arg_opt("tagEnd")?;
let result = inner_extrude(sketches, length, tag_start, tag_end, exec_state, args).await?; let result = inner_extrude(
sketches,
length,
symmetric,
bidirectional_length,
tag_start,
tag_end,
exec_state,
args,
)
.await?;
Ok(result.into()) Ok(result.into())
} }
@ -87,6 +100,50 @@ pub async fn extrude(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
/// ///
/// example = extrude(exampleSketch, length = 10) /// example = extrude(exampleSketch, length = 10)
/// ``` /// ```
///
/// ```no_run
/// exampleSketch = startSketchOn('XZ')
/// |> startProfileAt([-10, 0], %)
/// |> arc({
/// angleStart = 120,
/// angleEnd = -60,
/// radius = 5,
/// }, %)
/// |> line(end = [10, 0])
/// |> line(end = [5, 0])
/// |> bezierCurve({
/// control1 = [-3, 0],
/// control2 = [2, 10],
/// to = [-5, 10],
/// }, %)
/// |> line(end = [-4, 10])
/// |> line(end = [-5, -2])
/// |> close()
///
/// example = extrude(exampleSketch, length = 20, symmetric = true)
/// ```
///
/// ```no_run
/// exampleSketch = startSketchOn('XZ')
/// |> startProfileAt([-10, 0], %)
/// |> arc({
/// angleStart = 120,
/// angleEnd = -60,
/// radius = 5,
/// }, %)
/// |> line(end = [10, 0])
/// |> line(end = [5, 0])
/// |> bezierCurve({
/// control1 = [-3, 0],
/// control2 = [2, 10],
/// to = [-5, 10],
/// }, %)
/// |> line(end = [-4, 10])
/// |> line(end = [-5, -2])
/// |> close()
///
/// example = extrude(exampleSketch, length = 10, bidirectionalLength = 50)
/// ```
#[stdlib { #[stdlib {
name = "extrude", name = "extrude",
feature_tree_operation = true, feature_tree_operation = true,
@ -95,6 +152,9 @@ pub async fn extrude(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
args = { args = {
sketches = { docs = "Which sketch or sketches should be extruded"}, sketches = { docs = "Which sketch or sketches should be extruded"},
length = { docs = "How far to extrude the given sketches"}, length = { docs = "How far to extrude the given sketches"},
symmetric = { docs = "If true, the extrusion will happen symmetrically around the sketch. Otherwise, the
extrusion will happen on only one side of the sketch." },
bidirectional_length = { docs = "If specified, will also extrude in the opposite direction to 'distance' to the specified distance. If 'symmetric' is true, this value is ignored."},
tag_start = { docs = "A named tag for the face at the start of the extrusion, i.e. the original sketch" }, tag_start = { docs = "A named tag for the face at the start of the extrusion, i.e. the original sketch" },
tag_end = { docs = "A named tag for the face at the end of the extrusion, i.e. the new face created by extruding the original sketch" }, tag_end = { docs = "A named tag for the face at the end of the extrusion, i.e. the new face created by extruding the original sketch" },
} }
@ -103,6 +163,8 @@ pub async fn extrude(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
async fn inner_extrude( async fn inner_extrude(
sketches: Vec<Sketch>, sketches: Vec<Sketch>,
length: f64, length: f64,
symmetric: Option<bool>,
bidirectional_length: Option<f64>,
tag_start: Option<TagNode>, tag_start: Option<TagNode>,
tag_end: Option<TagNode>, tag_end: Option<TagNode>,
exec_state: &mut ExecState, exec_state: &mut ExecState,
@ -110,6 +172,25 @@ async fn inner_extrude(
) -> Result<Vec<Solid>, KclError> { ) -> Result<Vec<Solid>, KclError> {
// Extrude the element(s). // Extrude the element(s).
let mut solids = Vec::new(); let mut solids = Vec::new();
if symmetric.unwrap_or(false) && bidirectional_length.is_some() {
return Err(KclError::Semantic(KclErrorDetails {
source_ranges: vec![args.source_range],
message: "You cannot give both `symmetric` and `bidirectional` params, you have to choose one or the other"
.to_owned(),
}));
}
let bidirection = bidirectional_length.map(LengthUnit);
let opposite = match (symmetric, bidirection) {
(Some(true), _) => Opposite::Symmetric,
(None, None) => Opposite::None,
(Some(false), None) => Opposite::None,
(None, Some(length)) => Opposite::Other(length),
(Some(false), Some(length)) => Opposite::Other(length),
};
for sketch in &sketches { for sketch in &sketches {
let id = exec_state.next_uuid(); let id = exec_state.next_uuid();
args.batch_modeling_cmds(&sketch.build_sketch_mode_cmds( args.batch_modeling_cmds(&sketch.build_sketch_mode_cmds(
@ -120,6 +201,7 @@ async fn inner_extrude(
target: sketch.id.into(), target: sketch.id.into(),
distance: LengthUnit(length), distance: LengthUnit(length),
faces: Default::default(), faces: Default::default(),
opposite: opposite.clone(),
}), }),
}, },
)) ))

View File

@ -1,7 +1,7 @@
//! Standard library revolution surfaces. //! Standard library revolution surfaces.
use anyhow::Result; use anyhow::Result;
use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, shared::Angle, ModelingCmd}; use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, shared::Angle, shared::Opposite, ModelingCmd};
use kittycad_modeling_cmds::{self as kcmc, shared::Point3d}; use kittycad_modeling_cmds::{self as kcmc, shared::Point3d};
use super::DEFAULT_TOLERANCE; use super::DEFAULT_TOLERANCE;
@ -30,8 +30,22 @@ pub async fn revolve(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
let tolerance = args.get_kw_arg_opt("tolerance")?; let tolerance = args.get_kw_arg_opt("tolerance")?;
let tag_start = args.get_kw_arg_opt("tagStart")?; let tag_start = args.get_kw_arg_opt("tagStart")?;
let tag_end = args.get_kw_arg_opt("tagEnd")?; let tag_end = args.get_kw_arg_opt("tagEnd")?;
let symmetric = args.get_kw_arg_opt("symmetric")?;
let bidirectional_angle = args.get_kw_arg_opt("bidirectionalAngle")?;
let value = inner_revolve(sketches, axis, angle, tolerance, tag_start, tag_end, exec_state, args).await?; let value = inner_revolve(
sketches,
axis,
angle,
tolerance,
tag_start,
tag_end,
symmetric,
bidirectional_angle,
exec_state,
args,
)
.await?;
Ok(value.into()) Ok(value.into())
} }
@ -43,6 +57,8 @@ async fn inner_revolve(
tolerance: Option<f64>, tolerance: Option<f64>,
tag_start: Option<TagNode>, tag_start: Option<TagNode>,
tag_end: Option<TagNode>, tag_end: Option<TagNode>,
symmetric: Option<bool>,
bidirectional_angle: Option<f64>,
exec_state: &mut ExecState, exec_state: &mut ExecState,
args: Args, args: Args,
) -> Result<Vec<Solid>, KclError> { ) -> Result<Vec<Solid>, KclError> {
@ -58,8 +74,54 @@ async fn inner_revolve(
} }
} }
if let Some(bidirectional_angle) = bidirectional_angle {
// Return an error if the angle is zero.
// We don't use validate() here because we want to return a specific error message that is
// nice and we use the other data in the docs, so we still need use the derive above for the json schema.
if !(-360.0..=360.0).contains(&bidirectional_angle) || bidirectional_angle == 0.0 {
return Err(KclError::Semantic(KclErrorDetails {
message: format!(
"Expected bidirectional angle to be between -360 and 360 and not 0, found `{}`",
bidirectional_angle
),
source_ranges: vec![args.source_range],
}));
}
if let Some(angle) = angle {
let ang = angle.signum() * bidirectional_angle + angle;
if !(-360.0..=360.0).contains(&ang) {
return Err(KclError::Semantic(KclErrorDetails {
message: format!(
"Combined angle and bidirectional must be between -360 and 360, found '{}'",
ang
),
source_ranges: vec![args.source_range],
}));
}
}
}
if symmetric.unwrap_or(false) && bidirectional_angle.is_some() {
return Err(KclError::Semantic(KclErrorDetails {
source_ranges: vec![args.source_range],
message: "You cannot give both `symmetric` and `bidirectional` params, you have to choose one or the other"
.to_owned(),
}));
}
let angle = Angle::from_degrees(angle.unwrap_or(360.0)); let angle = Angle::from_degrees(angle.unwrap_or(360.0));
let bidirectional_angle = bidirectional_angle.map(Angle::from_degrees);
let opposite = match (symmetric, bidirectional_angle) {
(Some(true), _) => Opposite::Symmetric,
(None, None) => Opposite::None,
(Some(false), None) => Opposite::None,
(None, Some(angle)) => Opposite::Other(angle),
(Some(false), Some(angle)) => Opposite::Other(angle),
};
let mut solids = Vec::new(); let mut solids = Vec::new();
for sketch in &sketches { for sketch in &sketches {
let id = exec_state.next_uuid(); let id = exec_state.next_uuid();
@ -83,6 +145,7 @@ async fn inner_revolve(
}, },
tolerance: LengthUnit(tolerance.unwrap_or(DEFAULT_TOLERANCE)), tolerance: LengthUnit(tolerance.unwrap_or(DEFAULT_TOLERANCE)),
axis_is_2d: true, axis_is_2d: true,
opposite: opposite.clone(),
}), }),
) )
.await?; .await?;
@ -96,6 +159,7 @@ async fn inner_revolve(
target: sketch.id.into(), target: sketch.id.into(),
edge_id, edge_id,
tolerance: LengthUnit(tolerance.unwrap_or(DEFAULT_TOLERANCE)), tolerance: LengthUnit(tolerance.unwrap_or(DEFAULT_TOLERANCE)),
opposite: opposite.clone(),
}), }),
) )
.await?; .await?;

View File

@ -585,6 +585,32 @@ export fn helix(
/// |> circle(center = [-10, 10], radius = 4) /// |> circle(center = [-10, 10], radius = 4)
/// |> revolve(angle = 90, axis = revolveAxis) /// |> revolve(angle = 90, axis = revolveAxis)
/// ``` /// ```
///
/// ```
/// // Symmetrically revolve around a path.
///
/// profile001 = startSketchOn(XY)
/// |> startProfileAt([0, 0], %)
/// |> line(end = [0, 20], tag = $revolveAxis)
/// |> line(end = [20, 0])
///
/// sketch001 = startSketchOn(XY)
/// |> circle(center = [-10, 10], radius = 4)
/// |> revolve(angle = 90, axis = revolveAxis, symmetric = true)
/// ```
///
/// ```
/// // Bidirectional revolve around a path.
///
/// profile001 = startSketchOn(XY)
/// |> startProfileAt([0, 0], %)
/// |> line(end = [0, 20], tag = $revolveAxis)
/// |> line(end = [20, 0])
///
/// sketch001 = startSketchOn(XY)
/// |> circle(center = [-10, 10], radius = 4)
/// |> revolve(angle = 90, axis = revolveAxis, bidirectionalAngle = 50)
/// ```
@(impl = std_rust) @(impl = std_rust)
export fn revolve( export fn revolve(
/// The sketch or set of sketches that should be revolved /// The sketch or set of sketches that should be revolved
@ -595,6 +621,10 @@ export fn revolve(
angle?: number(deg), angle?: number(deg),
/// Tolerance for the revolve operation. /// Tolerance for the revolve operation.
tolerance?: number(mm), tolerance?: number(mm),
/// If true, the extrusion will happen symmetrically around the sketch. Otherwise, the extrusion will happen on only one side of the sketch.
symmetric?: bool,
/// If specified, will also revolve in the opposite direction to 'angle' to the specified angle. If 'symmetric' is true, this value is ignored.
bidirectionalAngle?: number(deg),
/// A named tag for the face at the start of the revolve, i.e. the original sketch. /// A named tag for the face at the start of the revolve, i.e. the original sketch.
tagStart?: tag, tagStart?: tag,
/// A named tag for the face at the end of the revolve. /// A named tag for the face at the end of the revolve.

View File

@ -213,7 +213,8 @@ description: Artifact commands angled_line.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.0, "distance": 4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -196,7 +196,8 @@ description: Artifact commands artifact_graph_example_code1.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -10.0, "distance": -10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -432,7 +433,8 @@ description: Artifact commands artifact_graph_example_code1.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 6.0, "distance": 6.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -383,7 +384,8 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -587,7 +589,8 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.0, "distance": 4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -791,7 +794,8 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -212,7 +212,8 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -494,7 +495,8 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands basic_fillet_cube_close_opposite.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands basic_fillet_cube_end.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands basic_fillet_cube_next_adjacent.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands basic_fillet_cube_previous_adjacent.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands basic_fillet_cube_start.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -162,7 +162,8 @@ description: Artifact commands big_number_angle_to_match_length_x.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -162,7 +162,8 @@ description: Artifact commands big_number_angle_to_match_length_y.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -153,7 +153,8 @@ description: Artifact commands circle_three_point.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands circular_pattern3d_a_pattern.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands crazy_multi_profile.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 20.0, "distance": 20.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -743,7 +744,8 @@ description: Artifact commands crazy_multi_profile.kcl
"unit": "degrees", "unit": "degrees",
"value": 45.0 "value": 45.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -842,7 +844,8 @@ description: Artifact commands crazy_multi_profile.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.0, "distance": 4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1453,7 +1456,8 @@ description: Artifact commands crazy_multi_profile.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.5, "distance": 2.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1571,7 +1575,8 @@ description: Artifact commands crazy_multi_profile.kcl
"unit": "degrees", "unit": "degrees",
"value": 45.0 "value": 45.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {

View File

@ -196,7 +196,8 @@ description: Artifact commands cube.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 40.0, "distance": 40.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -196,7 +196,8 @@ description: Artifact commands cube_with_error.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 40.0, "distance": 40.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -306,7 +306,8 @@ description: Artifact commands fillet-and-shell.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 8.0, "distance": 8.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -714,7 +715,8 @@ description: Artifact commands fillet-and-shell.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.0, "distance": 4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1042,7 +1044,8 @@ description: Artifact commands fillet-and-shell.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.0, "distance": 4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1370,7 +1373,8 @@ description: Artifact commands fillet-and-shell.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.0, "distance": 4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1698,7 +1702,8 @@ description: Artifact commands fillet-and-shell.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.0, "distance": 4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -255,7 +255,8 @@ description: Artifact commands flush_batch_on_end.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.5, "distance": 1.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands function_sketch.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands function_sketch_with_position.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -153,7 +153,8 @@ description: Artifact commands helix_ccw.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -766,7 +766,8 @@ description: Artifact commands i_shape.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -169,7 +169,8 @@ description: Artifact commands import_whole.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands intersect_cubes.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -436,7 +437,8 @@ description: Artifact commands intersect_cubes.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -1478,7 +1478,8 @@ description: Artifact commands 80-20-rail.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 48.0, "distance": 48.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -269,7 +269,8 @@ description: Artifact commands ball-bearing.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.313, "distance": 0.313,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -458,7 +459,8 @@ description: Artifact commands ball-bearing.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -695,7 +697,8 @@ description: Artifact commands ball-bearing.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -938,7 +941,8 @@ description: Artifact commands ball-bearing.kcl
"unit": "degrees", "unit": "degrees",
"value": 36.0 "value": 36.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -1231,7 +1235,8 @@ description: Artifact commands ball-bearing.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.313, "distance": 0.313,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -476,7 +476,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.0, "distance": 2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1342,7 +1343,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2248,7 +2250,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.0, "distance": 2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3089,7 +3092,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3995,7 +3999,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.0, "distance": 2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4836,7 +4841,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5547,7 +5553,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 56.0, "distance": 56.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5913,7 +5920,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 56.0, "distance": 56.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6344,7 +6352,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 60.0, "distance": 60.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6514,7 +6523,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 60.0, "distance": 60.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6684,7 +6694,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 60.0, "distance": 60.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7086,7 +7097,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 60.0, "distance": 60.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7256,7 +7268,8 @@ description: Artifact commands bench.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 60.0, "distance": 60.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -230,7 +230,8 @@ description: Artifact commands bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 6.0, "distance": 6.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -700,7 +701,8 @@ description: Artifact commands bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.361324026261472, "distance": -0.361324026261472,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -766,7 +768,8 @@ description: Artifact commands bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.361324026261472, "distance": -0.361324026261472,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -832,7 +835,8 @@ description: Artifact commands bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.361324026261472, "distance": -0.361324026261472,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -898,7 +902,8 @@ description: Artifact commands bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.361324026261472, "distance": -0.361324026261472,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1076,7 +1081,8 @@ description: Artifact commands bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.45132402626147194, "distance": -0.45132402626147194,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1142,7 +1148,8 @@ description: Artifact commands bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.45132402626147194, "distance": -0.45132402626147194,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -169,7 +169,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.25, "distance": 0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -324,7 +325,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -483,7 +485,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.75, "distance": -0.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -549,7 +552,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.75, "distance": -0.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -615,7 +619,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.75, "distance": -0.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -681,7 +686,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.75, "distance": -0.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -747,7 +753,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.75, "distance": -0.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -970,7 +977,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1108,7 +1116,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.25, "distance": 0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1267,7 +1276,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.25, "distance": -0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1333,7 +1343,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.25, "distance": -0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1399,7 +1410,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.25, "distance": -0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1465,7 +1477,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.25, "distance": -0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1531,7 +1544,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.25, "distance": -0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1690,7 +1704,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1756,7 +1771,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1822,7 +1838,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1888,7 +1905,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1954,7 +1972,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2020,7 +2039,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2086,7 +2106,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2152,7 +2173,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2218,7 +2240,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2284,7 +2307,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2350,7 +2374,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2416,7 +2441,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2482,7 +2508,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2548,7 +2575,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2614,7 +2642,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2680,7 +2709,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2882,7 +2912,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3008,7 +3039,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3134,7 +3166,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3260,7 +3293,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3386,7 +3420,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3648,7 +3683,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3774,7 +3810,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3900,7 +3937,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4026,7 +4064,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4152,7 +4191,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4690,7 +4730,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.475, "distance": 0.475,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4938,7 +4979,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.95, "distance": 0.95,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5117,7 +5159,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.95, "distance": -0.95,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5183,7 +5226,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.95, "distance": -0.95,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5249,7 +5293,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.95, "distance": -0.95,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5315,7 +5360,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.95, "distance": -0.95,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5381,7 +5427,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.95, "distance": -0.95,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5540,7 +5587,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.475, "distance": -0.475,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5606,7 +5654,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.475, "distance": -0.475,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5672,7 +5721,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.475, "distance": -0.475,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5738,7 +5788,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.475, "distance": -0.475,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5804,7 +5855,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.475, "distance": -0.475,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6111,7 +6163,8 @@ description: Artifact commands car-wheel-assembly.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -6403,7 +6456,8 @@ description: Artifact commands car-wheel-assembly.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -6707,7 +6761,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.95, "distance": 0.95,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7124,7 +7179,8 @@ description: Artifact commands car-wheel-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.95, "distance": -0.95,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7842,7 +7898,8 @@ description: Artifact commands car-wheel-assembly.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -8617,7 +8674,8 @@ description: Artifact commands car-wheel-assembly.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -9233,7 +9291,8 @@ description: Artifact commands car-wheel-assembly.kcl
"unit": "degrees", "unit": "degrees",
"value": -70.0 "value": -70.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -9958,7 +10017,8 @@ description: Artifact commands car-wheel-assembly.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {

View File

@ -413,7 +413,8 @@ description: Artifact commands color-cube.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -679,7 +680,8 @@ description: Artifact commands color-cube.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -945,7 +947,8 @@ description: Artifact commands color-cube.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1211,7 +1214,8 @@ description: Artifact commands color-cube.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1477,7 +1481,8 @@ description: Artifact commands color-cube.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1743,7 +1748,8 @@ description: Artifact commands color-cube.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -382,7 +382,8 @@ description: Artifact commands dodecahedron.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -532,7 +533,8 @@ description: Artifact commands dodecahedron.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -462,7 +462,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 834.5, "distance": 834.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -592,7 +593,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 834.5, "distance": 834.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -722,7 +724,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 834.5, "distance": 834.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -852,7 +855,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 834.5, "distance": 834.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -982,7 +986,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 834.5, "distance": 834.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1112,7 +1117,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 834.5, "distance": 834.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1242,7 +1248,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 834.5, "distance": 834.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1372,7 +1379,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 834.5, "distance": 834.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1849,7 +1857,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 13.0, "distance": 13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1979,7 +1988,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 13.0, "distance": 13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2109,7 +2119,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 13.0, "distance": 13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2239,7 +2250,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 13.0, "distance": 13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2369,7 +2381,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 13.0, "distance": 13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2499,7 +2512,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 13.0, "distance": 13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2788,7 +2802,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 13.0, "distance": 13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2918,7 +2933,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 13.0, "distance": 13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3395,7 +3411,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 671.5, "distance": 671.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3525,7 +3542,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 671.5, "distance": 671.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3655,7 +3673,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 671.5, "distance": 671.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3785,7 +3804,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 671.5, "distance": 671.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3915,7 +3935,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 671.5, "distance": 671.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4045,7 +4066,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 671.5, "distance": 671.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4373,7 +4395,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -13.0, "distance": -13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4503,7 +4526,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -13.0, "distance": -13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4792,7 +4816,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -13.0, "distance": -13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4922,7 +4947,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -13.0, "distance": -13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5210,7 +5236,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5491,7 +5518,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 200.0, "distance": 200.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5617,7 +5645,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 200.0, "distance": 200.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5898,7 +5927,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -200.0, "distance": -200.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6024,7 +6054,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -200.0, "distance": -200.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6468,7 +6499,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 667.5, "distance": 667.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6598,7 +6630,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 667.5, "distance": 667.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6728,7 +6761,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 667.5, "distance": 667.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6858,7 +6892,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 667.5, "distance": 667.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6988,7 +7023,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 667.5, "distance": 667.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7118,7 +7154,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 667.5, "distance": 667.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7407,7 +7444,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 667.5, "distance": 667.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7537,7 +7575,8 @@ description: Artifact commands dual-basin-utility-sink.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 667.5, "distance": 667.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -204,7 +204,8 @@ description: Artifact commands enclosure.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 70.0, "distance": 70.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -630,7 +631,8 @@ description: Artifact commands enclosure.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 67.0, "distance": 67.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -915,7 +917,8 @@ description: Artifact commands enclosure.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 67.0, "distance": 67.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1200,7 +1203,8 @@ description: Artifact commands enclosure.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 67.0, "distance": 67.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1485,7 +1489,8 @@ description: Artifact commands enclosure.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 67.0, "distance": 67.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2095,7 +2100,8 @@ description: Artifact commands enclosure.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2864,7 +2870,8 @@ description: Artifact commands enclosure.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -2728,7 +2728,8 @@ description: Artifact commands exhaust-manifold.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.125, "distance": 0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -355,7 +355,8 @@ description: Artifact commands flange.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.625, "distance": 0.625,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -573,7 +574,8 @@ description: Artifact commands flange.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1279999999999999, "distance": 0.1279999999999999,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -711,7 +713,8 @@ description: Artifact commands flange.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.06, "distance": 0.06,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -849,7 +852,8 @@ description: Artifact commands flange.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.813, "distance": -0.813,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -255,7 +255,8 @@ description: Artifact commands focusrite-scarlett-mounting-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 88.0, "distance": 88.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -726,7 +727,8 @@ description: Artifact commands focusrite-scarlett-mounting-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -4.0, "distance": -4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1181,7 +1183,8 @@ description: Artifact commands focusrite-scarlett-mounting-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -4.0, "distance": -4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1525,7 +1528,8 @@ description: Artifact commands focusrite-scarlett-mounting-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 104.0, "distance": 104.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1762,7 +1766,8 @@ description: Artifact commands focusrite-scarlett-mounting-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 104.0, "distance": 104.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -620,7 +620,8 @@ description: Artifact commands food-service-spatula.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.5, "distance": 3.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1222,7 +1223,8 @@ description: Artifact commands food-service-spatula.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 15.0, "distance": 15.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1676,7 +1678,8 @@ description: Artifact commands food-service-spatula.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -150.0, "distance": -150.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1996,7 +1999,8 @@ description: Artifact commands food-service-spatula.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -30.0, "distance": -30.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -202,7 +202,8 @@ description: Artifact commands french-press.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -721,7 +722,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.75, "distance": 0.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1227,7 +1229,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.05, "distance": 0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1420,7 +1423,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1526,7 +1530,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1632,7 +1637,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1918,7 +1924,8 @@ description: Artifact commands french-press.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -2273,7 +2280,8 @@ description: Artifact commands french-press.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -2665,7 +2673,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.05, "distance": 0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2844,7 +2853,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2910,7 +2920,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2976,7 +2987,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3042,7 +3054,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3108,7 +3121,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3174,7 +3188,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3240,7 +3255,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3306,7 +3322,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3465,7 +3482,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3531,7 +3549,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3597,7 +3616,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3663,7 +3683,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.05, "distance": -0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3834,7 +3855,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 7.32, "distance": 7.32,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4120,7 +4142,8 @@ description: Artifact commands french-press.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -4597,7 +4620,8 @@ description: Artifact commands french-press.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.65, "distance": -0.65,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -187,7 +187,8 @@ description: Artifact commands gear-rack.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -512,7 +513,8 @@ description: Artifact commands gear-rack.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2658,7 +2660,8 @@ description: Artifact commands gear-rack.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2915,7 +2918,8 @@ description: Artifact commands gear-rack.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -161,7 +161,8 @@ description: Artifact commands gear.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3766,7 +3767,8 @@ description: Artifact commands gear.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3981,7 +3983,8 @@ description: Artifact commands gear.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -3.0, "distance": -3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -218,7 +218,8 @@ description: Artifact commands gridfinity-baseplate-magnets.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 34.0, "distance": 34.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -545,7 +546,8 @@ description: Artifact commands gridfinity-baseplate-magnets.kcl
"unit": "degrees", "unit": "degrees",
"value": -90.0 "value": -90.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -2852,7 +2854,8 @@ description: Artifact commands gridfinity-baseplate-magnets.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.4, "distance": -2.4,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3936,7 +3939,8 @@ description: Artifact commands gridfinity-baseplate-magnets.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.4, "distance": -2.4,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -218,7 +218,8 @@ description: Artifact commands gridfinity-baseplate.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 34.0, "distance": 34.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -545,7 +546,8 @@ description: Artifact commands gridfinity-baseplate.kcl
"unit": "degrees", "unit": "degrees",
"value": -90.0 "value": -90.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {

View File

@ -235,7 +235,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 34.0, "distance": 34.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -579,7 +580,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"unit": "degrees", "unit": "degrees",
"value": -90.0 "value": -90.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -870,7 +872,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.75, "distance": 4.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1177,7 +1180,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.4, "distance": -2.4,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1243,7 +1247,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.4, "distance": -2.4,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1309,7 +1314,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.4, "distance": -2.4,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1375,7 +1381,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.4, "distance": -2.4,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3188,7 +3195,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 7.0, "distance": 7.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3622,7 +3630,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 76.5, "distance": 76.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4035,7 +4044,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 118.5, "distance": 118.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4488,7 +4498,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"unit": "degrees", "unit": "degrees",
"value": -90.0 "value": -90.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -4892,7 +4903,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl
"unit": "degrees", "unit": "degrees",
"value": 90.0 "value": 90.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {

View File

@ -235,7 +235,8 @@ description: Artifact commands gridfinity-bins.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 34.0, "distance": 34.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -579,7 +580,8 @@ description: Artifact commands gridfinity-bins.kcl
"unit": "degrees", "unit": "degrees",
"value": -90.0 "value": -90.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -870,7 +872,8 @@ description: Artifact commands gridfinity-bins.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.75, "distance": 4.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1177,7 +1180,8 @@ description: Artifact commands gridfinity-bins.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.4, "distance": -2.4,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1243,7 +1247,8 @@ description: Artifact commands gridfinity-bins.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.4, "distance": -2.4,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1309,7 +1314,8 @@ description: Artifact commands gridfinity-bins.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.4, "distance": -2.4,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1375,7 +1381,8 @@ description: Artifact commands gridfinity-bins.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.4, "distance": -2.4,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3188,7 +3195,8 @@ description: Artifact commands gridfinity-bins.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 14.0, "distance": 14.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -315,7 +315,8 @@ description: Artifact commands hex-nut.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.266, "distance": 0.266,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -268,7 +268,8 @@ description: Artifact commands i-beam.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 72.0, "distance": 72.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -204,7 +204,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 13.6, "distance": 13.6,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -703,7 +704,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -769,7 +771,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -835,7 +838,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -901,7 +905,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1188,7 +1193,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1642,7 +1648,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2155,7 +2162,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2609,7 +2617,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3063,7 +3072,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3517,7 +3527,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3971,7 +3982,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4425,7 +4437,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4879,7 +4892,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5595,7 +5609,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6049,7 +6064,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6503,7 +6519,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7248,7 +7265,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7702,7 +7720,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -8156,7 +8175,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -8930,7 +8950,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -9384,7 +9405,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -10187,7 +10209,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -10641,7 +10664,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -11095,7 +11119,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -11869,7 +11894,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.1, "distance": 0.1,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -12437,7 +12463,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.03, "distance": -0.03,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -12967,7 +12994,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.03, "distance": -0.03,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -13257,7 +13285,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.03, "distance": -0.03,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -13547,7 +13576,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.03, "distance": -0.03,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -13837,7 +13867,8 @@ description: Artifact commands keyboard.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.03, "distance": -0.03,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -196,7 +196,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 18.0, "distance": 18.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -437,7 +438,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -814,7 +816,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1215,7 +1218,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1456,7 +1460,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1697,7 +1702,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1938,7 +1944,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2315,7 +2322,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2716,7 +2724,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2957,7 +2966,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3198,7 +3208,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3439,7 +3450,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3680,7 +3692,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3921,7 +3934,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4162,7 +4176,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4403,7 +4418,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4644,7 +4660,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4885,7 +4902,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.0, "distance": 4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5126,7 +5144,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5367,7 +5386,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5608,7 +5628,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5882,7 +5903,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6123,7 +6145,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6397,7 +6420,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6638,7 +6662,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6879,7 +6904,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.0, "distance": 2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7120,7 +7146,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.0, "distance": 2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7361,7 +7388,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.0, "distance": 2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7602,7 +7630,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.0, "distance": 2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -7843,7 +7872,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.0, "distance": 2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -8084,7 +8114,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.0, "distance": 2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -8325,7 +8356,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.0, "distance": 2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -8566,7 +8598,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.0, "distance": 2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -8807,7 +8840,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -9048,7 +9082,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -9289,7 +9324,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -9530,7 +9566,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -9771,7 +9808,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -10012,7 +10050,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -10253,7 +10292,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -10494,7 +10534,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -10735,7 +10776,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -10976,7 +11018,8 @@ description: Artifact commands kitt.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.0, "distance": -2.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -187,7 +187,8 @@ description: Artifact commands lego.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.2, "distance": 3.2,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -411,7 +412,8 @@ description: Artifact commands lego.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -1.7000000000000002, "distance": -1.7000000000000002,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -787,7 +789,8 @@ description: Artifact commands lego.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.8, "distance": 1.8,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -853,7 +856,8 @@ description: Artifact commands lego.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.8, "distance": 1.8,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -919,7 +923,8 @@ description: Artifact commands lego.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.8, "distance": 1.8,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -985,7 +990,8 @@ description: Artifact commands lego.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.8, "distance": 1.8,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1051,7 +1057,8 @@ description: Artifact commands lego.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.8, "distance": 1.8,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1117,7 +1124,8 @@ description: Artifact commands lego.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.8, "distance": 1.8,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1305,7 +1313,8 @@ description: Artifact commands lego.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.8, "distance": 1.8,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1371,7 +1380,8 @@ description: Artifact commands lego.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.8, "distance": 1.8,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -175,7 +175,8 @@ description: Artifact commands makeup-mirror.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 24.0, "distance": 24.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -360,7 +361,8 @@ description: Artifact commands makeup-mirror.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 24.0, "distance": 24.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -545,7 +547,8 @@ description: Artifact commands makeup-mirror.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 24.0, "distance": 24.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -730,7 +733,8 @@ description: Artifact commands makeup-mirror.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 24.0, "distance": 24.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -915,7 +919,8 @@ description: Artifact commands makeup-mirror.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 24.0, "distance": 24.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1100,7 +1105,8 @@ description: Artifact commands makeup-mirror.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 24.0, "distance": 24.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1285,7 +1291,8 @@ description: Artifact commands makeup-mirror.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 24.0, "distance": 24.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1456,7 +1463,8 @@ description: Artifact commands makeup-mirror.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 170.0, "distance": 170.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1627,7 +1635,8 @@ description: Artifact commands makeup-mirror.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 170.0, "distance": 170.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1812,7 +1821,8 @@ description: Artifact commands makeup-mirror.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2011,7 +2021,8 @@ description: Artifact commands makeup-mirror.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -657,7 +657,8 @@ description: Artifact commands mounting-plate.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -212,7 +212,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.5, "distance": 0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -498,7 +499,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 3.0, "distance": 3.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -658,7 +660,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -817,7 +820,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.5, "distance": -0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -883,7 +887,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.5, "distance": -0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -949,7 +954,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.5, "distance": -0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1015,7 +1021,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.5, "distance": -0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1174,7 +1181,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.5, "distance": -0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1240,7 +1248,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.5, "distance": -0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1306,7 +1315,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.5, "distance": -0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1372,7 +1382,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.5, "distance": -0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1619,7 +1630,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.4, "distance": 1.4,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1868,7 +1880,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2066,7 +2079,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.5, "distance": 1.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2247,7 +2261,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.2, "distance": 0.2,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2313,7 +2328,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.2, "distance": 0.2,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2379,7 +2395,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.2, "distance": 0.2,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2445,7 +2462,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.2, "distance": 0.2,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2583,7 +2601,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2781,7 +2800,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -1.0, "distance": -1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3070,7 +3090,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -2.5, "distance": -2.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3268,7 +3289,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3428,7 +3450,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3609,7 +3632,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3675,7 +3699,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3741,7 +3766,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3807,7 +3833,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3873,7 +3900,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3939,7 +3967,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4005,7 +4034,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4071,7 +4101,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4230,7 +4261,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4296,7 +4328,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4362,7 +4395,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4428,7 +4462,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4566,7 +4601,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4830,7 +4866,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.5, "distance": 2.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5028,7 +5065,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5209,7 +5247,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5275,7 +5314,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5341,7 +5381,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5407,7 +5448,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5473,7 +5515,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5539,7 +5582,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5605,7 +5649,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5671,7 +5716,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.15, "distance": 0.15,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5809,7 +5855,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.5, "distance": -0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -5947,7 +5994,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.5, "distance": -0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6085,7 +6133,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.01, "distance": -0.01,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6325,7 +6374,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -1.5, "distance": -1.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -6685,7 +6735,8 @@ description: Artifact commands multi-axis-robot.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -1.5, "distance": -1.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -187,7 +187,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -505,7 +506,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.25, "distance": -0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -571,7 +573,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.25, "distance": -0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -637,7 +640,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.25, "distance": -0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -703,7 +707,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.25, "distance": -0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -961,7 +966,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.75, "distance": -0.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1027,7 +1033,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.75, "distance": -0.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1093,7 +1100,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.75, "distance": -0.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1159,7 +1167,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.75, "distance": -0.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1297,7 +1306,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -1.0, "distance": -1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -355,7 +355,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.69, "distance": 0.69,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -573,7 +574,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.06, "distance": 0.06,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -711,7 +713,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.25, "distance": 0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -849,7 +852,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -1.0, "distance": -1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1231,7 +1235,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.69, "distance": 0.69,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1449,7 +1454,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.06, "distance": 0.06,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1587,7 +1593,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.25, "distance": 0.25,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1725,7 +1732,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -1.0, "distance": -1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1970,7 +1978,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.031, "distance": 0.031,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2108,7 +2117,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.031, "distance": -0.031,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2320,7 +2330,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.032, "distance": 0.032,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2458,7 +2469,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.032, "distance": -0.032,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2851,7 +2863,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.625, "distance": -0.625,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3083,7 +3096,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.46875, "distance": -0.46875,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3321,7 +3335,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.5, "distance": 2.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3638,7 +3653,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.546875, "distance": 0.546875,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -3876,7 +3892,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.546875, "distance": -0.546875,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4109,7 +4126,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 6.0, "distance": 6.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4247,7 +4265,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -6.0, "distance": -6.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4483,7 +4502,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 6.0, "distance": 6.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -4621,7 +4641,8 @@ description: Artifact commands pipe-flange-assembly.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -6.0, "distance": -6.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -253,7 +253,8 @@ description: Artifact commands pipe-with-bend.kcl
"unit": "degrees", "unit": "degrees",
"value": 90.0 "value": 90.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {

View File

@ -161,7 +161,8 @@ description: Artifact commands pipe.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 6.0, "distance": 6.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -299,7 +300,8 @@ description: Artifact commands pipe.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -6.0, "distance": -6.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -338,7 +338,8 @@ description: Artifact commands poopy-shoe.kcl
"unit": "degrees", "unit": "degrees",
"value": 90.0 "value": 90.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -921,7 +922,8 @@ description: Artifact commands poopy-shoe.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.875, "distance": 0.875,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1340,7 +1342,8 @@ description: Artifact commands poopy-shoe.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.125, "distance": 0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1680,7 +1683,8 @@ description: Artifact commands poopy-shoe.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.125, "distance": 0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2131,7 +2135,8 @@ description: Artifact commands poopy-shoe.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.125, "distance": 0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2395,7 +2400,8 @@ description: Artifact commands poopy-shoe.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.125, "distance": 0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2619,7 +2625,8 @@ description: Artifact commands poopy-shoe.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.75, "distance": 2.75,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2876,7 +2883,8 @@ description: Artifact commands poopy-shoe.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -492,7 +492,8 @@ description: Artifact commands router-template-cross-bar.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1033,7 +1034,8 @@ description: Artifact commands router-template-cross-bar.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 13.0, "distance": 13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1274,7 +1276,8 @@ description: Artifact commands router-template-cross-bar.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 13.0, "distance": 13.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1515,7 +1518,8 @@ description: Artifact commands router-template-cross-bar.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.0, "distance": 4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -356,7 +356,8 @@ description: Artifact commands router-template-slate.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -737,7 +738,8 @@ description: Artifact commands router-template-slate.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 7.5, "distance": 7.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -978,7 +980,8 @@ description: Artifact commands router-template-slate.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 7.5, "distance": 7.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -502,7 +502,8 @@ description: Artifact commands sheet-metal-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.5, "distance": 5.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1128,7 +1129,8 @@ description: Artifact commands sheet-metal-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1194,7 +1196,8 @@ description: Artifact commands sheet-metal-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1372,7 +1375,8 @@ description: Artifact commands sheet-metal-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1438,7 +1442,8 @@ description: Artifact commands sheet-metal-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1696,7 +1701,8 @@ description: Artifact commands sheet-metal-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1762,7 +1768,8 @@ description: Artifact commands sheet-metal-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1828,7 +1835,8 @@ description: Artifact commands sheet-metal-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1894,7 +1902,8 @@ description: Artifact commands sheet-metal-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -2032,7 +2041,8 @@ description: Artifact commands sheet-metal-bracket.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.125, "distance": -0.125,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -161,7 +161,8 @@ description: Artifact commands socket-head-cap-screw.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.19, "distance": -0.19,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -393,7 +394,8 @@ description: Artifact commands socket-head-cap-screw.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.14250000000000002, "distance": -0.14250000000000002,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -631,7 +633,8 @@ description: Artifact commands socket-head-cap-screw.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -195,7 +195,8 @@ description: Artifact commands walkie-talkie.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -575,7 +576,8 @@ description: Artifact commands walkie-talkie.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.0625, "distance": -0.0625,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -896,7 +898,8 @@ description: Artifact commands walkie-talkie.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.0625, "distance": -0.0625,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -1120,7 +1123,8 @@ description: Artifact commands walkie-talkie.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.5, "distance": -0.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -10036,7 +10040,8 @@ description: Artifact commands walkie-talkie.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.0625, "distance": -0.0625,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -22582,7 +22587,8 @@ description: Artifact commands walkie-talkie.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.05, "distance": 0.05,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -22999,7 +23005,8 @@ description: Artifact commands walkie-talkie.kcl
"unit": "degrees", "unit": "degrees",
"value": 360.0 "value": 360.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -23310,7 +23317,8 @@ description: Artifact commands walkie-talkie.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.04, "distance": 0.04,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -23652,7 +23660,8 @@ description: Artifact commands walkie-talkie.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.04, "distance": 0.04,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -23994,7 +24003,8 @@ description: Artifact commands walkie-talkie.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.04, "distance": 0.04,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -24360,7 +24370,8 @@ description: Artifact commands walkie-talkie.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.04, "distance": 0.04,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -255,7 +255,8 @@ description: Artifact commands washer.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 0.032, "distance": 0.032,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -4905,7 +4905,8 @@ description: Artifact commands kittycad_svg.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands linear_pattern3d_a_pattern.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -17128,7 +17128,8 @@ description: Artifact commands mike_stress_test.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 5.0, "distance": 5.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -239,7 +239,8 @@ description: Artifact commands multi_transform.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 4.0, "distance": 4.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -162,7 +162,8 @@ description: Artifact commands neg_xz_plane.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 12.0, "distance": 12.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -306,7 +306,8 @@ description: Artifact commands out_of_band_sketches.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.14, "distance": 10.14,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -436,7 +437,8 @@ description: Artifact commands out_of_band_sketches.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.14, "distance": 10.14,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -213,7 +213,8 @@ description: Artifact commands parametric.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 9.0, "distance": 9.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -245,7 +245,8 @@ description: Artifact commands parametric_with_tan_arc.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 11.0, "distance": 11.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -200,7 +200,8 @@ description: Artifact commands pattern_circular_in_module.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -330,7 +331,8 @@ description: Artifact commands pattern_circular_in_module.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -460,7 +462,8 @@ description: Artifact commands pattern_circular_in_module.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -590,7 +593,8 @@ description: Artifact commands pattern_circular_in_module.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -338,7 +338,8 @@ description: Artifact commands pattern_linear_in_module.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -408,7 +409,8 @@ description: Artifact commands pattern_linear_in_module.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -478,7 +480,8 @@ description: Artifact commands pattern_linear_in_module.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -548,7 +551,8 @@ description: Artifact commands pattern_linear_in_module.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -618,7 +622,8 @@ description: Artifact commands pattern_linear_in_module.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -688,7 +693,8 @@ description: Artifact commands pattern_linear_in_module.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -758,7 +764,8 @@ description: Artifact commands pattern_linear_in_module.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -171,7 +171,8 @@ description: Artifact commands pentagon_fillet_sugar.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 200.0, "distance": 200.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -349,7 +350,8 @@ description: Artifact commands pentagon_fillet_sugar.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 100.0, "distance": 100.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -521,7 +523,8 @@ description: Artifact commands pentagon_fillet_sugar.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 100.0, "distance": 100.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -196,7 +196,8 @@ description: Artifact commands pipe_as_arg.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 400.0, "distance": 400.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -330,7 +330,8 @@ description: Artifact commands poop_chute.kcl
"unit": "degrees", "unit": "degrees",
"value": 90.0 "value": 90.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {
@ -913,7 +914,8 @@ description: Artifact commands poop_chute.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.5, "distance": 1.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -226,7 +226,8 @@ description: Artifact commands revolve_about_edge.kcl
"unit": "degrees", "unit": "degrees",
"value": 90.0 "value": 90.0
}, },
"tolerance": 0.0000001 "tolerance": 0.0000001,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands riddle_small.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 1.0, "distance": 1.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -153,7 +153,8 @@ description: Artifact commands rotate_after_fillet.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.625, "distance": -0.625,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -385,7 +386,8 @@ description: Artifact commands rotate_after_fillet.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.46875, "distance": -0.46875,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -623,7 +625,8 @@ description: Artifact commands rotate_after_fillet.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.5, "distance": 2.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -153,7 +153,8 @@ description: Artifact commands scale_after_fillet.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.625, "distance": -0.625,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -385,7 +386,8 @@ description: Artifact commands scale_after_fillet.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -0.46875, "distance": -0.46875,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -623,7 +625,8 @@ description: Artifact commands scale_after_fillet.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 2.5, "distance": 2.5,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -196,7 +196,8 @@ description: Artifact commands sketch-on-chamfer-two-times-different-order.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 100.0, "distance": 100.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -598,7 +599,8 @@ description: Artifact commands sketch-on-chamfer-two-times-different-order.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 50.0, "distance": 50.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -196,7 +196,8 @@ description: Artifact commands sketch-on-chamfer-two-times.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 100.0, "distance": 100.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -598,7 +599,8 @@ description: Artifact commands sketch-on-chamfer-two-times.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 50.0, "distance": 50.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

View File

@ -179,7 +179,8 @@ description: Artifact commands sketch_in_object.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": -10.0, "distance": -10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {
@ -436,7 +437,8 @@ description: Artifact commands sketch_in_object.kcl
"type": "extrude", "type": "extrude",
"target": "[uuid]", "target": "[uuid]",
"distance": 10.0, "distance": 10.0,
"faces": null "faces": null,
"opposite": "None"
} }
}, },
{ {

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