Parallelize the artifact graph only time suck (#6482)

* parallelize the artifact only time suck

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

updates

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

make wasm safe

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

updates

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

* artifact graph things

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

* updates

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

* updates

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

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
Jess Frazelle
2025-04-26 21:21:26 -07:00
committed by GitHub
parent d0b0365f75
commit 24465cf463
253 changed files with 73547 additions and 55353 deletions

View File

@ -15,8 +15,12 @@ name: cargo test
jobs: jobs:
cargotest: cargotest:
name: cargo test name: cargo test
runs-on: ubuntu-latest-8-cores runs-on:
- runs-on=${{ github.run_id }}
- runner=32cpu-linux-x64
- extras=s3-cache
steps: steps:
- uses: runs-on/action@v1
- uses: actions/create-github-app-token@v1 - uses: actions/create-github-app-token@v1
id: app-token id: app-token
with: with:
@ -81,7 +85,7 @@ jobs:
run: | run: |
set -euo pipefail set -euo pipefail
cd rust cd rust
cargo nextest run --workspace --retries=2 --no-fail-fast --profile ci simulation_tests::kcl_samples 2>&1 | tee /tmp/github-actions.log cargo nextest run --workspace --features artifact-graph --retries=2 --no-fail-fast --profile ci simulation_tests::kcl_samples 2>&1 | tee /tmp/github-actions.log
env: env:
KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}} KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}}
RUST_BACKTRACE: full RUST_BACKTRACE: full
@ -124,7 +128,7 @@ jobs:
shell: bash shell: bash
run: |- run: |-
cd rust cd rust
cargo llvm-cov nextest --workspace --lcov --output-path lcov.info --retries=2 --no-fail-fast -P ci 2>&1 | tee /tmp/github-actions.log cargo llvm-cov nextest --workspace --features artifact-graph --lcov --output-path lcov.info --retries=2 --no-fail-fast -P ci 2>&1 | tee /tmp/github-actions.log
env: env:
KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}} KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}}
RUST_MIN_STACK: 10485760000 RUST_MIN_STACK: 10485760000

View File

@ -289,7 +289,7 @@ unit of measurement is millimeters. Alternatively you may specify the unit
by using an attribute. Likewise, you can also specify a coordinate system. E.g., by using an attribute. Likewise, you can also specify a coordinate system. E.g.,
```kcl ```kcl
@(unitLength = ft, coords = opengl) @(lengthUnit = ft, coords = opengl)
import "tests/inputs/cube.obj" import "tests/inputs/cube.obj"
``` ```

View File

@ -6,7 +6,7 @@ layout: manual
Start a new 2-dimensional sketch on a specific plane or face. Start a new 2-dimensional sketch on a specific plane or face.
### Sketch on Face Behavior ## Sketch on Face Behavior
There are some important behaviors to understand when sketching on a face: There are some important behaviors to understand when sketching on a face:

View File

@ -292719,7 +292719,7 @@
{ {
"name": "startSketchOn", "name": "startSketchOn",
"summary": "Start a new 2-dimensional sketch on a specific plane or face.", "summary": "Start a new 2-dimensional sketch on a specific plane or face.",
"description": "### Sketch on Face Behavior\n\nThere are some important behaviors to understand when sketching on a face:\n\nThe resulting sketch will _include_ the face and thus Solid that was sketched on. So say you were to export the resulting Sketch / Solid from a sketch on a face, you would get both the artifact of the sketch on the face and the parent face / Solid itself.\n\nThis is important to understand because if you were to then sketch on the resulting Solid, it would again include the face and parent Solid that was sketched on. This could go on indefinitely.\n\nThe point is if you want to export the result of a sketch on a face, you only need to export the final Solid that was created from the sketch on the face, since it will include all the parent faces and Solids.", "description": "## Sketch on Face Behavior\n\nThere are some important behaviors to understand when sketching on a face:\n\nThe resulting sketch will _include_ the face and thus Solid that was sketched on. So say you were to export the resulting Sketch / Solid from a sketch on a face, you would get both the artifact of the sketch on the face and the parent face / Solid itself.\n\nThis is important to understand because if you were to then sketch on the resulting Solid, it would again include the face and parent Solid that was sketched on. This could go on indefinitely.\n\nThe point is if you want to export the result of a sketch on a face, you only need to export the final Solid that was created from the sketch on the face, since it will include all the parent faces and Solids.",
"tags": [], "tags": [],
"keywordArguments": true, "keywordArguments": true,
"args": [ "args": [

View File

@ -20,6 +20,12 @@
targets = ["wasm32-unknown-unknown"]; targets = ["wasm32-unknown-unknown"];
extensions = ["rustfmt" "llvm-tools-preview" "rust-src"]; extensions = ["rustfmt" "llvm-tools-preview" "rust-src"];
}; };
# stand-alone nightly formatter so we get the fancy unstable flags
nightlyRustfmt = super.rust-bin.selectLatestNightlyWith (toolchain:
toolchain.default.override {
extensions = ["rustfmt"]; # just the formatter
});
}) })
]; ];
@ -44,6 +50,7 @@
packages = packages =
(with pkgs; [ (with pkgs; [
rustToolchain rustToolchain
nightlyRustfmt
cargo-criterion cargo-criterion
cargo-nextest cargo-nextest
cargo-sort cargo-sort
@ -69,7 +76,7 @@
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${pkgs.playwright-driver.browsers}/chromium-1091/chrome-linux/chrome"; PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${pkgs.playwright-driver.browsers}/chromium-1091/chrome-linux/chrome";
PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}"; PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}";
NODE_ENV = "development"; NODE_ENV = "development";
RUSTFMT = "${pkgs.rust-bin.stable.latest.rustfmt}/bin/rustfmt"; RUSTFMT = "${pkgs.nightlyRustfmt}/bin/rustfmt";
}; };
}); });

View File

@ -9,7 +9,7 @@ after-engine = { max-threads = 12 }
slow-timeout = { period = "180s", terminate-after = 1 } slow-timeout = { period = "180s", terminate-after = 1 }
[profile.ci] [profile.ci]
slow-timeout = { period = "50s", terminate-after = 5 } slow-timeout = { period = "280s", terminate-after = 5 }
[[profile.default.overrides]] [[profile.default.overrides]]
# If a test starts with kcl_test_, then it uses the engine. So, limit its parallelism. # If a test starts with kcl_test_, then it uses the engine. So, limit its parallelism.

View File

@ -1,21 +1,24 @@
cnr := "cargo nextest run" cnr := "cargo nextest run"
cita := "cargo insta test --accept" cita := "cargo insta test --accept"
kcl_lib_flags := "-p kcl-lib --feature artifact-graph --no-fail-fast"
# Run the same lint checks we run in CI. # Run the same lint checks we run in CI.
lint: lint:
cargo clippy --workspace --all-targets --tests --all-features --examples --benches -- -D warnings cargo clippy --workspace --all-targets --tests --all-features --examples --benches -- -D warnings
# Ensure we can build without extra feature flags.
cargo clippy -p kcl-lib --tests --examples --benches -- -D warnings
# Run the stdlib docs generation # Run the stdlib docs generation
redo-kcl-stdlib-docs-no-imgs: redo-kcl-stdlib-docs-no-imgs:
EXPECTORATE=overwrite {{cnr}} -p kcl-lib docs::gen_std_tests::test_generate_stdlib EXPECTORATE=overwrite {{cnr}} {{kcl_lib_flags}} docs::gen_std_tests::test_generate_stdlib
# Generate the stdlib image artifacts # Generate the stdlib image artifacts
# 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}} {{kcl_lib_flags}} -- kcl_test_example
TWENTY_TWENTY=overwrite {{cnr}} --workspace --no-fail-fast docs::kcl_doc::test::kcl_test_examples TWENTY_TWENTY=overwrite {{cnr}} {{kcl_lib_flags}} docs::kcl_doc::test::kcl_test_examples
EXPECTORATE=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- docs::gen_std_tests::test_generate_stdlib EXPECTORATE=overwrite {{cnr}} {{kcl_lib_flags}} -- docs::gen_std_tests::test_generate_stdlib
EXPECTORATE=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- generate_settings_docs EXPECTORATE=overwrite {{cnr}} {{kcl_lib_flags}} -- generate_settings_docs
# 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.
copy-exec-test-into-sim-test test_name: copy-exec-test-into-sim-test test_name:
@ -33,23 +36,23 @@ new-sim-test test_name render_to_png="true":
# Run a KCL deterministic simulation test case and accept output. # Run a KCL deterministic simulation test case and accept output.
overwrite-sim-test-sample test_name: overwrite-sim-test-sample test_name:
EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::kcl_samples::parse_{{test_name}} EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} {{kcl_lib_flags}} --no-quiet -- simulation_tests::kcl_samples::parse_{{test_name}}
EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::kcl_samples::unparse_{{test_name}} EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} {{kcl_lib_flags}} --no-quiet -- simulation_tests::kcl_samples::unparse_{{test_name}}
EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::kcl_samples::kcl_test_execute_{{test_name}} EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} {{kcl_lib_flags}} --no-quiet -- simulation_tests::kcl_samples::kcl_test_execute_{{test_name}}
EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::kcl_samples::test_after_engine_generate_manifest EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} {{kcl_lib_flags}} --no-quiet -- simulation_tests::kcl_samples::test_after_engine_generate_manifest
overwrite-sim-test test_name: overwrite-sim-test test_name:
EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::{{test_name}}::parse EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} {{kcl_lib_flags}} --no-quiet -- simulation_tests::{{test_name}}::parse
EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::{{test_name}}::unparse EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} {{kcl_lib_flags}} --no-quiet -- simulation_tests::{{test_name}}::unparse
EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::{{test_name}}::kcl_test_execute EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} {{kcl_lib_flags}} --no-quiet -- simulation_tests::{{test_name}}::kcl_test_execute
[ {{test_name}} != "kcl_samples" ] || EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::{{test_name}}::test_after_engine_generate_manifest [ {{test_name}} != "kcl_samples" ] || EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} {{kcl_lib_flags}} --no-quiet -- simulation_tests::{{test_name}}::test_after_engine_generate_manifest
# Regenerate all the simulation test output. # Regenerate all the simulation test output.
redo-sim-tests: redo-sim-tests:
EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} {{kcl_lib_flags}} --no-quiet -- simulation_tests
test: test:
export RUST_BRACKTRACE="full" && {{cnr}} --workspace --no-fail-fast export RUST_BRACKTRACE="full" && {{cnr}} --workspace --features artifact-graph --no-fail-fast
bump-kcl-crate-versions bump='patch': bump-kcl-crate-versions bump='patch':
# First build the kcl-bumper tool. # First build the kcl-bumper tool.

View File

@ -108,6 +108,7 @@ tower-lsp = { workspace = true, features = ["proposed", "default"] }
[features] [features]
default = ["cli", "engine"] default = ["cli", "engine"]
artifact-graph = []
benchmark-execution = [] benchmark-execution = []
cli = ["dep:clap", "kittycad/clap"] cli = ["dep:clap", "kittycad/clap"]
dhat-heap = ["dep:dhat"] dhat-heap = ["dep:dhat"]

View File

@ -251,6 +251,7 @@ extrude(profile001, length = 100)"#
result.last().unwrap(); result.last().unwrap();
} }
#[cfg(feature = "artifact-graph")]
#[tokio::test(flavor = "multi_thread")] #[tokio::test(flavor = "multi_thread")]
async fn kcl_test_cache_add_line_preserves_artifact_commands() { async fn kcl_test_cache_add_line_preserves_artifact_commands() {
let code = r#"sketch001 = startSketchOn('XY') let code = r#"sketch001 = startSketchOn('XY')

View File

@ -0,0 +1,9 @@
#[cfg(not(target_arch = "wasm32"))]
pub mod tasks;
#[cfg(target_arch = "wasm32")]
pub mod tasks_wasm;
#[cfg(not(target_arch = "wasm32"))]
pub use tasks::AsyncTasks;
#[cfg(target_arch = "wasm32")]
pub use tasks_wasm::AsyncTasks;

View File

@ -0,0 +1,51 @@
//! This module contains the `AsyncTasks` struct, which is used to manage a set of asynchronous
//! tasks.
use std::sync::Arc;
use tokio::sync::RwLock;
use crate::errors::KclError;
#[derive(Debug, Clone)]
pub struct AsyncTasks {
pub tasks: Arc<RwLock<tokio::task::JoinSet<anyhow::Result<(), KclError>>>>,
}
impl AsyncTasks {
pub fn new() -> Self {
Self {
tasks: Arc::new(RwLock::new(tokio::task::JoinSet::new())),
}
}
pub async fn spawn<F>(&mut self, task: F)
where
F: std::future::Future<Output = anyhow::Result<(), KclError>>,
F: Send + 'static,
{
self.tasks.write().await.spawn(task);
}
// Wait for all tasks to finish.
// Return an error if any of them failed.
pub async fn join_all(&mut self) -> anyhow::Result<(), KclError> {
let tasks = std::mem::take(&mut *self.tasks.write().await);
let results = tasks.join_all().await;
for result in results {
result?;
}
Ok(())
}
pub async fn clear(&mut self) {
*self.tasks.write().await = tokio::task::JoinSet::new();
}
}
impl Default for AsyncTasks {
fn default() -> Self {
Self::new()
}
}

View File

@ -0,0 +1,89 @@
//! This module contains the `AsyncTasks` struct, which is used to manage a set of asynchronous
//! tasks.
use std::{ops::AddAssign, sync::Arc};
use tokio::sync::RwLock;
use crate::errors::KclError;
#[derive(Debug, Clone)]
pub struct AsyncTasks {
pub sender: Arc<RwLock<tokio::sync::mpsc::Sender<Result<(), KclError>>>>,
pub receiver: Arc<RwLock<tokio::sync::mpsc::Receiver<Result<(), KclError>>>>,
pub sent: Arc<RwLock<usize>>,
}
impl AsyncTasks {
pub fn new() -> Self {
let (results_tx, results_rx) = tokio::sync::mpsc::channel(1);
Self {
sender: Arc::new(RwLock::new(results_tx)),
receiver: Arc::new(RwLock::new(results_rx)),
sent: Arc::new(RwLock::new(0)),
}
}
pub async fn spawn<F>(&mut self, task: F)
where
F: std::future::Future<Output = anyhow::Result<(), KclError>>,
F: Send + 'static,
{
// Add one to the sent counter.
self.sent.write().await.add_assign(1);
// Spawn the task and send the result to the channel.
let sender_clone = self.sender.clone();
wasm_bindgen_futures::spawn_local(async move {
let result = task.await;
let sender = sender_clone.read().await;
if let Err(_) = sender.send(result).await {
web_sys::console::error_1(&"Failed to send result".into());
}
});
}
// Wait for all tasks to finish.
// Return an error if any of them failed.
pub async fn join_all(&mut self) -> anyhow::Result<(), KclError> {
if *self.sent.read().await == 0 {
return Ok(());
}
let mut results = Vec::new();
let mut receiver = self.receiver.write().await;
// Wait for all tasks to finish.
while let Some(result) = receiver.recv().await {
results.push(result);
// Check if all tasks have finished.
if results.len() == *self.sent.read().await {
break;
}
}
// Check if any of the tasks failed.
for result in results {
result?;
}
Ok(())
}
pub async fn clear(&mut self) {
// Clear the sent counter.
*self.sent.write().await = 0;
// Clear the channel.
let (results_tx, results_rx) = tokio::sync::mpsc::channel(1);
*self.sender.write().await = results_tx;
*self.receiver.write().await = results_rx;
}
}
impl Default for AsyncTasks {
fn default() -> Self {
Self::new()
}
}

View File

@ -18,11 +18,12 @@ use tokio::sync::{mpsc, oneshot, RwLock};
use tokio_tungstenite::tungstenite::Message as WsMsg; use tokio_tungstenite::tungstenite::Message as WsMsg;
use uuid::Uuid; use uuid::Uuid;
use super::EngineStats; #[cfg(feature = "artifact-graph")]
use crate::execution::ArtifactCommand;
use crate::{ use crate::{
engine::EngineManager, engine::{AsyncTasks, EngineManager, EngineStats},
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{ArtifactCommand, DefaultPlanes, IdGenerator}, execution::{DefaultPlanes, IdGenerator},
SourceRange, SourceRange,
}; };
@ -37,13 +38,14 @@ type WebSocketTcpWrite = futures::stream::SplitSink<tokio_tungstenite::WebSocket
pub struct EngineConnection { pub struct EngineConnection {
engine_req_tx: mpsc::Sender<ToEngineReq>, engine_req_tx: mpsc::Sender<ToEngineReq>,
shutdown_tx: mpsc::Sender<()>, shutdown_tx: mpsc::Sender<()>,
responses: Arc<RwLock<IndexMap<uuid::Uuid, WebSocketResponse>>>, responses: ResponseInformation,
pending_errors: Arc<RwLock<Vec<String>>>, pending_errors: Arc<RwLock<Vec<String>>>,
#[allow(dead_code)] #[allow(dead_code)]
tcp_read_handle: Arc<TcpReadHandle>, tcp_read_handle: Arc<TcpReadHandle>,
socket_health: Arc<RwLock<SocketHealth>>, socket_health: Arc<RwLock<SocketHealth>>,
batch: Arc<RwLock<Vec<(WebSocketRequest, SourceRange)>>>, batch: Arc<RwLock<Vec<(WebSocketRequest, SourceRange)>>>,
batch_end: Arc<RwLock<IndexMap<uuid::Uuid, (WebSocketRequest, SourceRange)>>>, batch_end: Arc<RwLock<IndexMap<uuid::Uuid, (WebSocketRequest, SourceRange)>>>,
#[cfg(feature = "artifact-graph")]
artifact_commands: Arc<RwLock<Vec<ArtifactCommand>>>, artifact_commands: Arc<RwLock<Vec<ArtifactCommand>>>,
ids_of_async_commands: Arc<RwLock<IndexMap<Uuid, SourceRange>>>, ids_of_async_commands: Arc<RwLock<IndexMap<Uuid, SourceRange>>>,
@ -53,6 +55,8 @@ pub struct EngineConnection {
session_data: Arc<RwLock<Option<ModelingSessionData>>>, session_data: Arc<RwLock<Option<ModelingSessionData>>>,
stats: EngineStats, stats: EngineStats,
async_tasks: AsyncTasks,
} }
pub struct TcpRead { pub struct TcpRead {
@ -116,12 +120,14 @@ impl Drop for TcpReadHandle {
} }
} }
struct ResponsesInformation { /// Information about the responses from the engine.
#[derive(Clone, Debug)]
struct ResponseInformation {
/// The responses from the engine. /// The responses from the engine.
responses: Arc<RwLock<IndexMap<uuid::Uuid, WebSocketResponse>>>, responses: Arc<RwLock<IndexMap<uuid::Uuid, WebSocketResponse>>>,
} }
impl ResponsesInformation { impl ResponseInformation {
pub async fn add(&self, id: Uuid, response: WebSocketResponse) { pub async fn add(&self, id: Uuid, response: WebSocketResponse) {
self.responses.write().await.insert(id, response); self.responses.write().await.insert(id, response);
} }
@ -238,14 +244,14 @@ impl EngineConnection {
let session_data: Arc<RwLock<Option<ModelingSessionData>>> = Arc::new(RwLock::new(None)); let session_data: Arc<RwLock<Option<ModelingSessionData>>> = Arc::new(RwLock::new(None));
let session_data2 = session_data.clone(); let session_data2 = session_data.clone();
let responses: Arc<RwLock<IndexMap<uuid::Uuid, WebSocketResponse>>> = Arc::new(RwLock::new(IndexMap::new()));
let ids_of_async_commands: Arc<RwLock<IndexMap<Uuid, SourceRange>>> = Arc::new(RwLock::new(IndexMap::new())); let ids_of_async_commands: Arc<RwLock<IndexMap<Uuid, SourceRange>>> = Arc::new(RwLock::new(IndexMap::new()));
let socket_health = Arc::new(RwLock::new(SocketHealth::Active)); let socket_health = Arc::new(RwLock::new(SocketHealth::Active));
let pending_errors = Arc::new(RwLock::new(Vec::new())); let pending_errors = Arc::new(RwLock::new(Vec::new()));
let pending_errors_clone = pending_errors.clone(); let pending_errors_clone = pending_errors.clone();
let responses_information = ResponsesInformation { let response_information = ResponseInformation {
responses: responses.clone(), responses: Arc::new(RwLock::new(IndexMap::new())),
}; };
let response_information_cloned = response_information.clone();
let socket_health_tcp_read = socket_health.clone(); let socket_health_tcp_read = socket_health.clone();
let tcp_read_handle = tokio::spawn(async move { let tcp_read_handle = tokio::spawn(async move {
@ -270,7 +276,7 @@ impl EngineConnection {
BatchResponse::Success { response } => { BatchResponse::Success { response } => {
// If the id is in our ids of async commands, remove // If the id is in our ids of async commands, remove
// it. // it.
responses_information response_information_cloned
.add( .add(
id, id,
WebSocketResponse::Success(SuccessWebSocketResponse { WebSocketResponse::Success(SuccessWebSocketResponse {
@ -284,7 +290,7 @@ impl EngineConnection {
.await; .await;
} }
BatchResponse::Failure { errors } => { BatchResponse::Failure { errors } => {
responses_information response_information_cloned
.add( .add(
id, id,
WebSocketResponse::Failure(FailureWebSocketResponse { WebSocketResponse::Failure(FailureWebSocketResponse {
@ -311,7 +317,7 @@ impl EngineConnection {
errors, errors,
}) => { }) => {
if let Some(id) = request_id { if let Some(id) = request_id {
responses_information response_information_cloned
.add( .add(
*id, *id,
WebSocketResponse::Failure(FailureWebSocketResponse { WebSocketResponse::Failure(FailureWebSocketResponse {
@ -336,7 +342,7 @@ impl EngineConnection {
} }
if let Some(id) = id { if let Some(id) = id {
responses_information.add(id, ws_resp.clone()).await; response_information_cloned.add(id, ws_resp.clone()).await;
} }
} }
Err(e) => { Err(e) => {
@ -357,16 +363,18 @@ impl EngineConnection {
tcp_read_handle: Arc::new(TcpReadHandle { tcp_read_handle: Arc::new(TcpReadHandle {
handle: Arc::new(tcp_read_handle), handle: Arc::new(tcp_read_handle),
}), }),
responses, responses: response_information,
pending_errors, pending_errors,
socket_health, socket_health,
batch: Arc::new(RwLock::new(Vec::new())), batch: Arc::new(RwLock::new(Vec::new())),
batch_end: Arc::new(RwLock::new(IndexMap::new())), batch_end: Arc::new(RwLock::new(IndexMap::new())),
#[cfg(feature = "artifact-graph")]
artifact_commands: Arc::new(RwLock::new(Vec::new())), artifact_commands: Arc::new(RwLock::new(Vec::new())),
ids_of_async_commands, ids_of_async_commands,
default_planes: Default::default(), default_planes: Default::default(),
session_data, session_data,
stats: Default::default(), stats: Default::default(),
async_tasks: AsyncTasks::new(),
}) })
} }
} }
@ -382,9 +390,10 @@ impl EngineManager for EngineConnection {
} }
fn responses(&self) -> Arc<RwLock<IndexMap<Uuid, WebSocketResponse>>> { fn responses(&self) -> Arc<RwLock<IndexMap<Uuid, WebSocketResponse>>> {
self.responses.clone() self.responses.responses.clone()
} }
#[cfg(feature = "artifact-graph")]
fn artifact_commands(&self) -> Arc<RwLock<Vec<ArtifactCommand>>> { fn artifact_commands(&self) -> Arc<RwLock<Vec<ArtifactCommand>>> {
self.artifact_commands.clone() self.artifact_commands.clone()
} }
@ -393,6 +402,10 @@ impl EngineManager for EngineConnection {
self.ids_of_async_commands.clone() self.ids_of_async_commands.clone()
} }
fn async_tasks(&self) -> AsyncTasks {
self.async_tasks.clone()
}
fn stats(&self) -> &EngineStats { fn stats(&self) -> &EngineStats {
&self.stats &self.stats
} }
@ -483,9 +496,19 @@ impl EngineManager for EngineConnection {
})); }));
} }
} }
// We pop off the responses to cleanup our mappings.
if let Some(resp) = self.responses.write().await.shift_remove(&id) { #[cfg(feature = "artifact-graph")]
return Ok(resp); {
// We cannot pop here or it will break the artifact graph.
if let Some(resp) = self.responses.responses.read().await.get(&id) {
return Ok(resp.clone());
}
}
#[cfg(not(feature = "artifact-graph"))]
{
if let Some(resp) = self.responses.responses.write().await.shift_remove(&id) {
return Ok(resp);
}
} }
} }

View File

@ -16,11 +16,13 @@ use kittycad_modeling_cmds::{self as kcmc, websocket::ModelingCmdReq, ImportFile
use tokio::sync::RwLock; use tokio::sync::RwLock;
use uuid::Uuid; use uuid::Uuid;
use super::EngineStats; #[cfg(feature = "artifact-graph")]
use crate::execution::ArtifactCommand;
use crate::{ use crate::{
engine::{AsyncTasks, EngineStats},
errors::KclError, errors::KclError,
exec::DefaultPlanes, exec::DefaultPlanes,
execution::{ArtifactCommand, IdGenerator}, execution::IdGenerator,
SourceRange, SourceRange,
}; };
@ -28,12 +30,14 @@ use crate::{
pub struct EngineConnection { pub struct EngineConnection {
batch: Arc<RwLock<Vec<(WebSocketRequest, SourceRange)>>>, batch: Arc<RwLock<Vec<(WebSocketRequest, SourceRange)>>>,
batch_end: Arc<RwLock<IndexMap<uuid::Uuid, (WebSocketRequest, SourceRange)>>>, batch_end: Arc<RwLock<IndexMap<uuid::Uuid, (WebSocketRequest, SourceRange)>>>,
#[cfg(feature = "artifact-graph")]
artifact_commands: Arc<RwLock<Vec<ArtifactCommand>>>, artifact_commands: Arc<RwLock<Vec<ArtifactCommand>>>,
ids_of_async_commands: Arc<RwLock<IndexMap<Uuid, SourceRange>>>, ids_of_async_commands: Arc<RwLock<IndexMap<Uuid, SourceRange>>>,
responses: Arc<RwLock<IndexMap<Uuid, WebSocketResponse>>>, responses: Arc<RwLock<IndexMap<Uuid, WebSocketResponse>>>,
/// The default planes for the scene. /// The default planes for the scene.
default_planes: Arc<RwLock<Option<DefaultPlanes>>>, default_planes: Arc<RwLock<Option<DefaultPlanes>>>,
stats: EngineStats, stats: EngineStats,
async_tasks: AsyncTasks,
} }
impl EngineConnection { impl EngineConnection {
@ -41,11 +45,13 @@ impl EngineConnection {
Ok(EngineConnection { Ok(EngineConnection {
batch: Arc::new(RwLock::new(Vec::new())), batch: Arc::new(RwLock::new(Vec::new())),
batch_end: Arc::new(RwLock::new(IndexMap::new())), batch_end: Arc::new(RwLock::new(IndexMap::new())),
#[cfg(feature = "artifact-graph")]
artifact_commands: Arc::new(RwLock::new(Vec::new())), artifact_commands: Arc::new(RwLock::new(Vec::new())),
ids_of_async_commands: Arc::new(RwLock::new(IndexMap::new())), ids_of_async_commands: Arc::new(RwLock::new(IndexMap::new())),
responses: Arc::new(RwLock::new(IndexMap::new())), responses: Arc::new(RwLock::new(IndexMap::new())),
default_planes: Default::default(), default_planes: Default::default(),
stats: Default::default(), stats: Default::default(),
async_tasks: AsyncTasks::new(),
}) })
} }
} }
@ -68,6 +74,7 @@ impl crate::engine::EngineManager for EngineConnection {
&self.stats &self.stats
} }
#[cfg(feature = "artifact-graph")]
fn artifact_commands(&self) -> Arc<RwLock<Vec<ArtifactCommand>>> { fn artifact_commands(&self) -> Arc<RwLock<Vec<ArtifactCommand>>> {
self.artifact_commands.clone() self.artifact_commands.clone()
} }
@ -76,6 +83,10 @@ impl crate::engine::EngineManager for EngineConnection {
self.ids_of_async_commands.clone() self.ids_of_async_commands.clone()
} }
fn async_tasks(&self) -> AsyncTasks {
self.async_tasks.clone()
}
fn get_default_planes(&self) -> Arc<RwLock<Option<DefaultPlanes>>> { fn get_default_planes(&self) -> Arc<RwLock<Option<DefaultPlanes>>> {
self.default_planes.clone() self.default_planes.clone()
} }

View File

@ -11,7 +11,7 @@ use uuid::Uuid;
use wasm_bindgen::prelude::*; use wasm_bindgen::prelude::*;
use crate::{ use crate::{
engine::EngineStats, engine::{AsyncTasks, EngineStats},
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{ArtifactCommand, DefaultPlanes, IdGenerator}, execution::{ArtifactCommand, DefaultPlanes, IdGenerator},
SourceRange, SourceRange,
@ -55,6 +55,7 @@ pub struct EngineConnection {
/// The default planes for the scene. /// The default planes for the scene.
default_planes: Arc<RwLock<Option<DefaultPlanes>>>, default_planes: Arc<RwLock<Option<DefaultPlanes>>>,
stats: EngineStats, stats: EngineStats,
async_tasks: AsyncTasks,
} }
#[wasm_bindgen] #[wasm_bindgen]
@ -128,6 +129,7 @@ impl EngineConnection {
ids_of_async_commands: Arc::new(RwLock::new(IndexMap::new())), ids_of_async_commands: Arc::new(RwLock::new(IndexMap::new())),
default_planes: Default::default(), default_planes: Default::default(),
stats: Default::default(), stats: Default::default(),
async_tasks: AsyncTasks::new(),
}) })
} }
@ -270,6 +272,10 @@ impl crate::engine::EngineManager for EngineConnection {
self.ids_of_async_commands.clone() self.ids_of_async_commands.clone()
} }
fn async_tasks(&self) -> AsyncTasks {
self.async_tasks.clone()
}
fn get_default_planes(&self) -> Arc<RwLock<Option<DefaultPlanes>>> { fn get_default_planes(&self) -> Arc<RwLock<Option<DefaultPlanes>>> {
self.default_planes.clone() self.default_planes.clone()
} }

View File

@ -1,5 +1,6 @@
//! Functions for managing engine communications. //! Functions for managing engine communications.
pub mod async_tasks;
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
#[cfg(feature = "engine")] #[cfg(feature = "engine")]
pub mod conn; pub mod conn;
@ -16,10 +17,12 @@ use std::{
}, },
}; };
pub use async_tasks::AsyncTasks;
use indexmap::IndexMap; use indexmap::IndexMap;
#[cfg(feature = "artifact-graph")]
use kcmc::id::ModelingCmdId;
use kcmc::{ use kcmc::{
each_cmd as mcmd, each_cmd as mcmd,
id::ModelingCmdId,
length_unit::LengthUnit, length_unit::LengthUnit,
ok_response::OkModelingCmdResponse, ok_response::OkModelingCmdResponse,
shared::Color, shared::Color,
@ -35,9 +38,11 @@ use serde::{Deserialize, Serialize};
use tokio::sync::RwLock; use tokio::sync::RwLock;
use uuid::Uuid; use uuid::Uuid;
#[cfg(feature = "artifact-graph")]
use crate::execution::ArtifactCommand;
use crate::{ use crate::{
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{types::UnitLen, ArtifactCommand, DefaultPlanes, IdGenerator, Point3d}, execution::{types::UnitLen, DefaultPlanes, IdGenerator, Point3d},
SourceRange, SourceRange,
}; };
@ -74,11 +79,15 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static {
fn responses(&self) -> Arc<RwLock<IndexMap<Uuid, WebSocketResponse>>>; fn responses(&self) -> Arc<RwLock<IndexMap<Uuid, WebSocketResponse>>>;
/// Get the artifact commands that have accumulated so far. /// Get the artifact commands that have accumulated so far.
#[cfg(feature = "artifact-graph")]
fn artifact_commands(&self) -> Arc<RwLock<Vec<ArtifactCommand>>>; fn artifact_commands(&self) -> Arc<RwLock<Vec<ArtifactCommand>>>;
/// Get the ids of the async commands we are waiting for. /// Get the ids of the async commands we are waiting for.
fn ids_of_async_commands(&self) -> Arc<RwLock<IndexMap<Uuid, SourceRange>>>; fn ids_of_async_commands(&self) -> Arc<RwLock<IndexMap<Uuid, SourceRange>>>;
/// Get the async tasks we are waiting for.
fn async_tasks(&self) -> AsyncTasks;
/// Take the batch of commands that have accumulated so far and clear them. /// Take the batch of commands that have accumulated so far and clear them.
async fn take_batch(&self) -> Vec<(WebSocketRequest, SourceRange)> { async fn take_batch(&self) -> Vec<(WebSocketRequest, SourceRange)> {
std::mem::take(&mut *self.batch().write().await) std::mem::take(&mut *self.batch().write().await)
@ -90,11 +99,13 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static {
} }
/// Clear all artifact commands that have accumulated so far. /// Clear all artifact commands that have accumulated so far.
#[cfg(feature = "artifact-graph")]
async fn clear_artifact_commands(&self) { async fn clear_artifact_commands(&self) {
self.artifact_commands().write().await.clear(); self.artifact_commands().write().await.clear();
} }
/// Take the artifact commands that have accumulated so far and clear them. /// Take the artifact commands that have accumulated so far and clear them.
#[cfg(feature = "artifact-graph")]
async fn take_artifact_commands(&self) -> Vec<ArtifactCommand> { async fn take_artifact_commands(&self) -> Vec<ArtifactCommand> {
std::mem::take(&mut *self.artifact_commands().write().await) std::mem::take(&mut *self.artifact_commands().write().await)
} }
@ -145,6 +156,7 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static {
self.batch().write().await.clear(); self.batch().write().await.clear();
self.batch_end().write().await.clear(); self.batch_end().write().await.clear();
self.ids_of_async_commands().write().await.clear(); self.ids_of_async_commands().write().await.clear();
self.async_tasks().clear().await;
} }
/// Send a modeling command and do not wait for the response message. /// Send a modeling command and do not wait for the response message.
@ -186,6 +198,7 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static {
// Ensure artifact commands are cleared so that we don't accumulate them // Ensure artifact commands are cleared so that we don't accumulate them
// across runs. // across runs.
#[cfg(feature = "artifact-graph")]
self.clear_artifact_commands().await; self.clear_artifact_commands().await;
// Do the after clear scene hook. // Do the after clear scene hook.
@ -253,6 +266,18 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static {
self.ensure_async_command_completed(id, Some(source_range)).await?; self.ensure_async_command_completed(id, Some(source_range)).await?;
} }
// Make sure we check for all async tasks as well.
// The reason why we ignore the error here is that, if a model fillets an edge
// we previously called something on, it might no longer exist. In which case,
// the artifact graph won't care either if its gone since you can't select it
// anymore anyways.
if let Err(err) = self.async_tasks().join_all().await {
crate::log::logln!("Error waiting for async tasks (this is typically fine and just means that an edge became something else): {:?}", err);
}
// Flush the batch to make sure nothing remains.
self.flush_batch(true, SourceRange::default()).await?;
Ok(()) Ok(())
} }
@ -273,6 +298,7 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static {
Ok(()) Ok(())
} }
#[cfg(feature = "artifact-graph")]
async fn handle_artifact_command( async fn handle_artifact_command(
&self, &self,
cmd: &ModelingCmd, cmd: &ModelingCmd,
@ -413,6 +439,7 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static {
self.ids_of_async_commands().write().await.insert(id, source_range); self.ids_of_async_commands().write().await.insert(id, source_range);
// Add to artifact commands. // Add to artifact commands.
#[cfg(feature = "artifact-graph")]
self.handle_artifact_command(cmd, id.into(), &HashMap::from([(id, source_range)])) self.handle_artifact_command(cmd, id.into(), &HashMap::from([(id, source_range)]))
.await?; .await?;
@ -486,6 +513,7 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static {
} }
// Do the artifact commands. // Do the artifact commands.
#[cfg(feature = "artifact-graph")]
for (req, _) in orig_requests.iter() { for (req, _) in orig_requests.iter() {
match &req { match &req {
WebSocketRequest::ModelingCmdBatchReq(ModelingBatch { requests, .. }) => { WebSocketRequest::ModelingCmdBatchReq(ModelingBatch { requests, .. }) => {

View File

@ -3,8 +3,10 @@ use serde::{Deserialize, Serialize};
use thiserror::Error; use thiserror::Error;
use tower_lsp::lsp_types::{Diagnostic, DiagnosticSeverity}; use tower_lsp::lsp_types::{Diagnostic, DiagnosticSeverity};
#[cfg(feature = "artifact-graph")]
use crate::execution::{ArtifactCommand, ArtifactGraph, Operation};
use crate::{ use crate::{
execution::{ArtifactCommand, ArtifactGraph, DefaultPlanes, Operation}, execution::DefaultPlanes,
lsp::IntoDiagnostic, lsp::IntoDiagnostic,
modules::{ModulePath, ModuleSource}, modules::{ModulePath, ModuleSource},
source_range::SourceRange, source_range::SourceRange,
@ -126,8 +128,11 @@ impl From<KclErrorWithOutputs> for KclError {
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct KclErrorWithOutputs { pub struct KclErrorWithOutputs {
pub error: KclError, pub error: KclError,
#[cfg(feature = "artifact-graph")]
pub operations: Vec<Operation>, pub operations: Vec<Operation>,
#[cfg(feature = "artifact-graph")]
pub artifact_commands: Vec<ArtifactCommand>, pub artifact_commands: Vec<ArtifactCommand>,
#[cfg(feature = "artifact-graph")]
pub artifact_graph: ArtifactGraph, pub artifact_graph: ArtifactGraph,
pub filenames: IndexMap<ModuleId, ModulePath>, pub filenames: IndexMap<ModuleId, ModulePath>,
pub source_files: IndexMap<ModuleId, ModuleSource>, pub source_files: IndexMap<ModuleId, ModuleSource>,
@ -137,17 +142,20 @@ pub struct KclErrorWithOutputs {
impl KclErrorWithOutputs { impl KclErrorWithOutputs {
pub fn new( pub fn new(
error: KclError, error: KclError,
operations: Vec<Operation>, #[cfg(feature = "artifact-graph")] operations: Vec<Operation>,
artifact_commands: Vec<ArtifactCommand>, #[cfg(feature = "artifact-graph")] artifact_commands: Vec<ArtifactCommand>,
artifact_graph: ArtifactGraph, #[cfg(feature = "artifact-graph")] artifact_graph: ArtifactGraph,
filenames: IndexMap<ModuleId, ModulePath>, filenames: IndexMap<ModuleId, ModulePath>,
source_files: IndexMap<ModuleId, ModuleSource>, source_files: IndexMap<ModuleId, ModuleSource>,
default_planes: Option<DefaultPlanes>, default_planes: Option<DefaultPlanes>,
) -> Self { ) -> Self {
Self { Self {
error, error,
#[cfg(feature = "artifact-graph")]
operations, operations,
#[cfg(feature = "artifact-graph")]
artifact_commands, artifact_commands,
#[cfg(feature = "artifact-graph")]
artifact_graph, artifact_graph,
filenames, filenames,
source_files, source_files,
@ -157,8 +165,11 @@ impl KclErrorWithOutputs {
pub fn no_outputs(error: KclError) -> Self { pub fn no_outputs(error: KclError) -> Self {
Self { Self {
error, error,
#[cfg(feature = "artifact-graph")]
operations: Default::default(), operations: Default::default(),
#[cfg(feature = "artifact-graph")]
artifact_commands: Default::default(), artifact_commands: Default::default(),
#[cfg(feature = "artifact-graph")]
artifact_graph: Default::default(), artifact_graph: Default::default(),
filenames: Default::default(), filenames: Default::default(),
source_files: Default::default(), source_files: Default::default(),

View File

@ -3,23 +3,21 @@ use std::collections::HashMap;
use async_recursion::async_recursion; use async_recursion::async_recursion;
use indexmap::IndexMap; use indexmap::IndexMap;
use super::{cad_op::Group, kcl_value::TypeDef, types::PrimitiveType};
use crate::{ use crate::{
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{ execution::{
annotations, annotations,
cad_op::{OpArg, OpKclValue, Operation}, kcl_value::{FunctionSource, TypeDef},
kcl_value::FunctionSource,
memory, memory,
state::ModuleState, state::ModuleState,
types::{NumericType, RuntimeType}, types::{NumericType, PrimitiveType, RuntimeType},
BodyType, EnvironmentRef, ExecState, ExecutorContext, KclValue, Metadata, PlaneType, TagEngineInfo, BodyType, EnvironmentRef, ExecState, ExecutorContext, KclValue, Metadata, PlaneType, TagEngineInfo,
TagIdentifier, TagIdentifier,
}, },
modules::{ModuleId, ModulePath, ModuleRepr}, modules::{ModuleId, ModulePath, ModuleRepr},
parsing::ast::types::{ parsing::ast::types::{
Annotation, ArrayExpression, ArrayRangeExpression, BinaryExpression, BinaryOperator, BinaryPart, BodyItem, Annotation, ArrayExpression, ArrayRangeExpression, BinaryExpression, BinaryOperator, BinaryPart, BodyItem,
BoxNode, CallExpression, CallExpressionKw, Expr, FunctionExpression, IfExpression, ImportPath, ImportSelector, CallExpression, CallExpressionKw, Expr, FunctionExpression, IfExpression, ImportPath, ImportSelector,
ItemVisibility, LiteralIdentifier, LiteralValue, MemberExpression, MemberObject, Name, Node, NodeRef, ItemVisibility, LiteralIdentifier, LiteralValue, MemberExpression, MemberObject, Name, Node, NodeRef,
ObjectExpression, PipeExpression, Program, TagDeclarator, Type, UnaryExpression, UnaryOperator, ObjectExpression, PipeExpression, Program, TagDeclarator, Type, UnaryExpression, UnaryOperator,
}, },
@ -30,6 +28,11 @@ use crate::{
}, },
CompilationError, CompilationError,
}; };
#[cfg(feature = "artifact-graph")]
use crate::{
execution::cad_op::{Group, OpArg, OpKclValue, Operation},
parsing::ast::types::BoxNode,
};
enum StatementKind<'a> { enum StatementKind<'a> {
Declaration { name: &'a str }, Declaration { name: &'a str },
@ -516,10 +519,11 @@ impl ExecutorContext {
async fn exec_module_for_result( async fn exec_module_for_result(
&self, &self,
module_id: ModuleId, module_id: ModuleId,
module_name: &BoxNode<Name>, #[cfg(feature = "artifact-graph")] module_name: &BoxNode<Name>,
exec_state: &mut ExecState, exec_state: &mut ExecState,
source_range: SourceRange, source_range: SourceRange,
) -> Result<Option<KclValue>, KclError> { ) -> Result<Option<KclValue>, KclError> {
#[cfg(feature = "artifact-graph")]
exec_state.global.operations.push(Operation::GroupBegin { exec_state.global.operations.push(Operation::GroupBegin {
group: Group::ModuleInstance { group: Group::ModuleInstance {
name: module_name.to_string(), name: module_name.to_string(),
@ -566,6 +570,7 @@ impl ExecutorContext {
exec_state.global.module_infos[&module_id].restore_repr(repr); exec_state.global.module_infos[&module_id].restore_repr(repr);
#[cfg(feature = "artifact-graph")]
exec_state.global.operations.push(Operation::GroupEnd); exec_state.global.operations.push(Operation::GroupEnd);
result result
@ -619,8 +624,12 @@ impl ExecutorContext {
Expr::Name(name) => { Expr::Name(name) => {
let value = name.get_result(exec_state, self).await?.clone(); let value = name.get_result(exec_state, self).await?.clone();
if let KclValue::Module { value: module_id, meta } = value { if let KclValue::Module { value: module_id, meta } = value {
self.exec_module_for_result(module_id, name, exec_state, metadata.source_range) self.exec_module_for_result(
.await? module_id,
#[cfg(feature = "artifact-graph")] name,
exec_state,
metadata.source_range
).await?
.unwrap_or_else(|| { .unwrap_or_else(|| {
exec_state.warn(CompilationError::err( exec_state.warn(CompilationError::err(
metadata.source_range, metadata.source_range,
@ -1340,6 +1349,7 @@ impl Node<CallExpressionKw> {
)); ));
} }
#[cfg(feature = "artifact-graph")]
let op = if func.feature_tree_operation() { let op = if func.feature_tree_operation() {
let op_labeled_args = args let op_labeled_args = args
.kw_args .kw_args
@ -1389,6 +1399,7 @@ impl Node<CallExpressionKw> {
let result = func.std_lib_fn()(exec_state, args).await; let result = func.std_lib_fn()(exec_state, args).await;
exec_state.mut_stack().pop_env(); exec_state.mut_stack().pop_env();
#[cfg(feature = "artifact-graph")]
if let Some(mut op) = op { if let Some(mut op) = op {
op.set_std_lib_call_is_error(result.is_err()); op.set_std_lib_call_is_error(result.is_err());
// Track call operation. We do this after the call // Track call operation. We do this after the call
@ -1398,6 +1409,7 @@ impl Node<CallExpressionKw> {
// so we need to build the op before the call. // so we need to build the op before the call.
exec_state.global.operations.push(op); exec_state.global.operations.push(op);
} }
result result
}?; }?;
@ -1426,6 +1438,7 @@ impl Node<CallExpressionKw> {
e.add_source_ranges(vec![callsite]) e.add_source_ranges(vec![callsite])
})?; })?;
#[cfg(feature = "artifact-graph")]
if matches!(fn_src, FunctionSource::User { .. }) { if matches!(fn_src, FunctionSource::User { .. }) {
// Track return operation. // Track return operation.
exec_state.global.operations.push(Operation::GroupEnd); exec_state.global.operations.push(Operation::GroupEnd);
@ -1478,6 +1491,7 @@ impl Node<CallExpression> {
)); ));
} }
#[cfg(feature = "artifact-graph")]
let op = if func.feature_tree_operation() { let op = if func.feature_tree_operation() {
let op_labeled_args = func let op_labeled_args = func
.args(false) .args(false)
@ -1514,6 +1528,7 @@ impl Node<CallExpression> {
let result = func.std_lib_fn()(exec_state, args).await; let result = func.std_lib_fn()(exec_state, args).await;
exec_state.mut_stack().pop_env(); exec_state.mut_stack().pop_env();
#[cfg(feature = "artifact-graph")]
if let Some(mut op) = op { if let Some(mut op) = op {
op.set_std_lib_call_is_error(result.is_err()); op.set_std_lib_call_is_error(result.is_err());
// Track call operation. We do this after the call // Track call operation. We do this after the call
@ -1537,6 +1552,7 @@ impl Node<CallExpression> {
let func = fn_name.get_result(exec_state, ctx).await?.clone(); let func = fn_name.get_result(exec_state, ctx).await?.clone();
// Track call operation. // Track call operation.
#[cfg(feature = "artifact-graph")]
exec_state.global.operations.push(Operation::GroupBegin { exec_state.global.operations.push(Operation::GroupBegin {
group: Group::FunctionCall { group: Group::FunctionCall {
name: Some(fn_name.to_string()), name: Some(fn_name.to_string()),
@ -1576,6 +1592,7 @@ impl Node<CallExpression> {
})?; })?;
// Track return operation. // Track return operation.
#[cfg(feature = "artifact-graph")]
exec_state.global.operations.push(Operation::GroupEnd); exec_state.global.operations.push(Operation::GroupEnd);
Ok(result) Ok(result)
@ -1671,7 +1688,7 @@ fn update_memory_for_tags_of_geometry(result: &mut KclValue, exec_state: &mut Ex
let sketches_to_update: Vec<_> = exec_state let sketches_to_update: Vec<_> = exec_state
.stack() .stack()
.find_keys_in_current_env(|v| match v { .find_keys_in_current_env(|v| match v {
KclValue::Sketch { value: sk } => sk.artifact_id == value.sketch.artifact_id, KclValue::Sketch { value: sk } => sk.original_id == value.sketch.original_id,
_ => false, _ => false,
}) })
.cloned() .cloned()
@ -2391,6 +2408,7 @@ impl FunctionSource {
} }
} }
#[cfg(feature = "artifact-graph")]
let op = if props.include_in_feature_tree { let op = if props.include_in_feature_tree {
let op_labeled_args = args let op_labeled_args = args
.kw_args .kw_args
@ -2418,6 +2436,7 @@ impl FunctionSource {
let result = func(exec_state, args).await; let result = func(exec_state, args).await;
exec_state.mut_stack().pop_env(); exec_state.mut_stack().pop_env();
#[cfg(feature = "artifact-graph")]
if let Some(mut op) = op { if let Some(mut op) = op {
op.set_std_lib_call_is_error(result.is_err()); op.set_std_lib_call_is_error(result.is_err());
// Track call operation. We do this after the call // Track call operation. We do this after the call
@ -2436,25 +2455,28 @@ impl FunctionSource {
} }
FunctionSource::User { ast, memory, .. } => { FunctionSource::User { ast, memory, .. } => {
// Track call operation. // Track call operation.
let op_labeled_args = args #[cfg(feature = "artifact-graph")]
.kw_args {
.labeled let op_labeled_args = args
.iter() .kw_args
.map(|(k, arg)| (k.clone(), OpArg::new(OpKclValue::from(&arg.value), arg.source_range))) .labeled
.collect(); .iter()
exec_state.global.operations.push(Operation::GroupBegin { .map(|(k, arg)| (k.clone(), OpArg::new(OpKclValue::from(&arg.value), arg.source_range)))
group: Group::FunctionCall { .collect();
name: fn_name.clone(), exec_state.global.operations.push(Operation::GroupBegin {
function_source_range: ast.as_source_range(), group: Group::FunctionCall {
unlabeled_arg: args name: fn_name.clone(),
.kw_args function_source_range: ast.as_source_range(),
.unlabeled unlabeled_arg: args
.as_ref() .kw_args
.map(|arg| OpArg::new(OpKclValue::from(&arg.value), arg.source_range)), .unlabeled
labeled_args: op_labeled_args, .as_ref()
}, .map(|arg| OpArg::new(OpKclValue::from(&arg.value), arg.source_range)),
source_range: callsite, labeled_args: op_labeled_args,
}); },
source_range: callsite,
});
}
call_user_defined_function_kw(fn_name.as_deref(), args.kw_args, *memory, ast, exec_state, ctx).await call_user_defined_function_kw(fn_name.as_deref(), args.kw_args, *memory, ast, exec_state, ctx).await
} }

View File

@ -8,11 +8,11 @@ use parse_display::{Display, FromStr};
use schemars::JsonSchema; use schemars::JsonSchema;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "artifact-graph")]
use crate::execution::ArtifactId;
use crate::{ use crate::{
errors::KclError, errors::KclError,
execution::{ execution::{types::NumericType, ExecState, ExecutorContext, Metadata, TagEngineInfo, TagIdentifier, UnitLen},
types::NumericType, ArtifactId, ExecState, ExecutorContext, Metadata, TagEngineInfo, TagIdentifier, UnitLen,
},
parsing::ast::types::{Node, NodeRef, TagDeclarator, TagNode}, parsing::ast::types::{Node, NodeRef, TagDeclarator, TagNode},
std::{args::TyF64, sketch::PlaneData}, std::{args::TyF64, sketch::PlaneData},
}; };
@ -255,6 +255,7 @@ pub struct Helix {
/// The id of the helix. /// The id of the helix.
pub value: uuid::Uuid, pub value: uuid::Uuid,
/// The artifact ID. /// The artifact ID.
#[cfg(feature = "artifact-graph")]
pub artifact_id: ArtifactId, pub artifact_id: ArtifactId,
/// Number of revolutions. /// Number of revolutions.
pub revolutions: f64, pub revolutions: f64,
@ -276,6 +277,7 @@ pub struct Plane {
/// The id of the plane. /// The id of the plane.
pub id: uuid::Uuid, pub id: uuid::Uuid,
/// The artifact ID. /// The artifact ID.
#[cfg(feature = "artifact-graph")]
pub artifact_id: ArtifactId, pub artifact_id: ArtifactId,
// The code for the plane either a string or custom. // The code for the plane either a string or custom.
pub value: PlaneType, pub value: PlaneType,
@ -455,6 +457,7 @@ impl Plane {
match value { match value {
PlaneData::XY => Plane { PlaneData::XY => Plane {
id, id,
#[cfg(feature = "artifact-graph")]
artifact_id: id.into(), artifact_id: id.into(),
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Mm), x_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Mm),
@ -464,6 +467,7 @@ impl Plane {
}, },
PlaneData::NegXY => Plane { PlaneData::NegXY => Plane {
id, id,
#[cfg(feature = "artifact-graph")]
artifact_id: id.into(), artifact_id: id.into(),
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(-1.0, 0.0, 0.0, UnitLen::Mm), x_axis: Point3d::new(-1.0, 0.0, 0.0, UnitLen::Mm),
@ -473,6 +477,7 @@ impl Plane {
}, },
PlaneData::XZ => Plane { PlaneData::XZ => Plane {
id, id,
#[cfg(feature = "artifact-graph")]
artifact_id: id.into(), artifact_id: id.into(),
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Mm), x_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Mm),
@ -482,6 +487,7 @@ impl Plane {
}, },
PlaneData::NegXZ => Plane { PlaneData::NegXZ => Plane {
id, id,
#[cfg(feature = "artifact-graph")]
artifact_id: id.into(), artifact_id: id.into(),
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(-1.0, 0.0, 0.0, UnitLen::Mm), x_axis: Point3d::new(-1.0, 0.0, 0.0, UnitLen::Mm),
@ -491,6 +497,7 @@ impl Plane {
}, },
PlaneData::YZ => Plane { PlaneData::YZ => Plane {
id, id,
#[cfg(feature = "artifact-graph")]
artifact_id: id.into(), artifact_id: id.into(),
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Mm), x_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Mm),
@ -500,6 +507,7 @@ impl Plane {
}, },
PlaneData::NegYZ => Plane { PlaneData::NegYZ => Plane {
id, id,
#[cfg(feature = "artifact-graph")]
artifact_id: id.into(), artifact_id: id.into(),
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(0.0, -1.0, 0.0, UnitLen::Mm), x_axis: Point3d::new(0.0, -1.0, 0.0, UnitLen::Mm),
@ -511,6 +519,7 @@ impl Plane {
let id = exec_state.next_uuid(); let id = exec_state.next_uuid();
Plane { Plane {
id, id,
#[cfg(feature = "artifact-graph")]
artifact_id: id.into(), artifact_id: id.into(),
origin, origin,
x_axis, x_axis,
@ -536,6 +545,7 @@ pub struct Face {
/// The id of the face. /// The id of the face.
pub id: uuid::Uuid, pub id: uuid::Uuid,
/// The artifact ID. /// The artifact ID.
#[cfg(feature = "artifact-graph")]
pub artifact_id: ArtifactId, pub artifact_id: ArtifactId,
/// The tag of the face. /// The tag of the face.
pub value: String, pub value: String,
@ -589,6 +599,7 @@ pub struct Sketch {
pub tags: IndexMap<String, TagIdentifier>, pub tags: IndexMap<String, TagIdentifier>,
/// The original id of the sketch. This stays the same even if the sketch is /// The original id of the sketch. This stays the same even if the sketch is
/// is sketched on face etc. /// is sketched on face etc.
#[cfg(feature = "artifact-graph")]
pub artifact_id: ArtifactId, pub artifact_id: ArtifactId,
#[ts(skip)] #[ts(skip)]
pub original_id: uuid::Uuid, pub original_id: uuid::Uuid,
@ -752,6 +763,7 @@ pub struct Solid {
/// The id of the solid. /// The id of the solid.
pub id: uuid::Uuid, pub id: uuid::Uuid,
/// The artifact ID of the solid. Unlike `id`, this doesn't change. /// The artifact ID of the solid. Unlike `id`, this doesn't change.
#[cfg(feature = "artifact-graph")]
pub artifact_id: ArtifactId, pub artifact_id: ArtifactId,
/// The extrude surfaces. /// The extrude surfaces.
pub value: Vec<ExtrudeSurface>, pub value: Vec<ExtrudeSurface>,

View File

@ -262,6 +262,7 @@ impl KclValue {
} }
} }
#[cfg(feature = "artifact-graph")]
pub(crate) fn function_def_source_range(&self) -> Option<SourceRange> { pub(crate) fn function_def_source_range(&self) -> Option<SourceRange> {
let KclValue::Function { let KclValue::Function {
value: FunctionSource::User { ast, .. }, value: FunctionSource::User { ast, .. },

View File

@ -3,11 +3,13 @@
use std::{path::PathBuf, sync::Arc}; use std::{path::PathBuf, sync::Arc};
use anyhow::Result; use anyhow::Result;
#[cfg(feature = "artifact-graph")]
pub use artifact::{ pub use artifact::{
Artifact, ArtifactCommand, ArtifactGraph, ArtifactId, CodeRef, StartSketchOnFace, StartSketchOnPlane, Artifact, ArtifactCommand, ArtifactGraph, ArtifactId, CodeRef, StartSketchOnFace, StartSketchOnPlane,
}; };
use cache::OldAstState; use cache::OldAstState;
pub use cache::{bust_cache, clear_mem_cache}; pub use cache::{bust_cache, clear_mem_cache};
#[cfg(feature = "artifact-graph")]
pub use cad_op::Operation; pub use cad_op::Operation;
pub use geometry::*; pub use geometry::*;
pub use id_generator::IdGenerator; pub use id_generator::IdGenerator;
@ -26,11 +28,12 @@ use schemars::JsonSchema;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
pub use state::{ExecState, MetaSettings}; pub use state::{ExecState, MetaSettings};
#[cfg(feature = "artifact-graph")]
use crate::execution::artifact::build_artifact_graph;
use crate::{ use crate::{
engine::EngineManager, engine::EngineManager,
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{ execution::{
artifact::build_artifact_graph,
cache::{CacheInformation, CacheResult}, cache::{CacheInformation, CacheResult},
types::{UnitAngle, UnitLen}, types::{UnitAngle, UnitLen},
}, },
@ -43,8 +46,10 @@ use crate::{
}; };
pub(crate) mod annotations; pub(crate) mod annotations;
#[cfg(feature = "artifact-graph")]
mod artifact; mod artifact;
pub(crate) mod cache; pub(crate) mod cache;
#[cfg(feature = "artifact-graph")]
mod cad_op; mod cad_op;
mod exec_ast; mod exec_ast;
mod geometry; mod geometry;
@ -64,10 +69,13 @@ pub struct ExecOutcome {
pub variables: IndexMap<String, KclValue>, pub variables: IndexMap<String, KclValue>,
/// Operations that have been performed in execution order, for display in /// Operations that have been performed in execution order, for display in
/// the Feature Tree. /// the Feature Tree.
#[cfg(feature = "artifact-graph")]
pub operations: Vec<Operation>, pub operations: Vec<Operation>,
/// Output commands to allow building the artifact graph by the caller. /// Output commands to allow building the artifact graph by the caller.
#[cfg(feature = "artifact-graph")]
pub artifact_commands: Vec<ArtifactCommand>, pub artifact_commands: Vec<ArtifactCommand>,
/// Output artifact graph. /// Output artifact graph.
#[cfg(feature = "artifact-graph")]
pub artifact_graph: ArtifactGraph, pub artifact_graph: ArtifactGraph,
/// Non-fatal errors and warnings. /// Non-fatal errors and warnings.
pub errors: Vec<CompilationError>, pub errors: Vec<CompilationError>,
@ -567,7 +575,7 @@ impl ExecutorContext {
let mut mem = exec_state.stack().clone(); let mut mem = exec_state.stack().clone();
let module_infos = exec_state.global.module_infos.clone(); let module_infos = exec_state.global.module_infos.clone();
let outcome = exec_state.to_mock_wasm_outcome(result.0).await; let outcome = exec_state.to_mock_exec_outcome(result.0).await;
mem.squash_env(result.0); mem.squash_env(result.0);
cache::write_old_memory((mem, module_infos)).await; cache::write_old_memory((mem, module_infos)).await;
@ -635,13 +643,13 @@ impl ExecutorContext {
}) })
.await; .await;
let outcome = old_state.to_wasm_outcome(result_env).await; let outcome = old_state.to_exec_outcome(result_env).await;
return Ok(outcome); return Ok(outcome);
} }
(true, program) (true, program)
} }
CacheResult::NoAction(false) => { CacheResult::NoAction(false) => {
let outcome = old_state.to_wasm_outcome(result_env).await; let outcome = old_state.to_exec_outcome(result_env).await;
return Ok(outcome); return Ok(outcome);
} }
}; };
@ -691,7 +699,7 @@ impl ExecutorContext {
}) })
.await; .await;
let outcome = exec_state.to_wasm_outcome(result.0).await; let outcome = exec_state.to_exec_outcome(result.0).await;
Ok(outcome) Ok(outcome)
} }
@ -721,6 +729,12 @@ impl ExecutorContext {
exec_state: &mut ExecState, exec_state: &mut ExecState,
) -> Result<(EnvironmentRef, Option<ModelingSessionData>), KclErrorWithOutputs> { ) -> Result<(EnvironmentRef, Option<ModelingSessionData>), KclErrorWithOutputs> {
exec_state.add_root_module_contents(program); exec_state.add_root_module_contents(program);
#[cfg(test)]
{
exec_state.single_threaded = true;
}
self.eval_prelude(exec_state, SourceRange::synthetic()) self.eval_prelude(exec_state, SourceRange::synthetic())
.await .await
.map_err(KclErrorWithOutputs::no_outputs)?; .map_err(KclErrorWithOutputs::no_outputs)?;
@ -760,6 +774,7 @@ impl ExecutorContext {
) )
.await .await
.map_err(|err| { .map_err(|err| {
println!("Error: {err:?}");
let module_id_to_module_path: IndexMap<ModuleId, ModulePath> = exec_state let module_id_to_module_path: IndexMap<ModuleId, ModulePath> = exec_state
.global .global
.path_to_source_id .path_to_source_id
@ -769,8 +784,11 @@ impl ExecutorContext {
KclErrorWithOutputs::new( KclErrorWithOutputs::new(
err, err,
#[cfg(feature = "artifact-graph")]
exec_state.global.operations.clone(), exec_state.global.operations.clone(),
#[cfg(feature = "artifact-graph")]
exec_state.global.artifact_commands.clone(), exec_state.global.artifact_commands.clone(),
#[cfg(feature = "artifact-graph")]
exec_state.global.artifact_graph.clone(), exec_state.global.artifact_graph.clone(),
module_id_to_module_path, module_id_to_module_path,
exec_state.global.id_to_source.clone(), exec_state.global.id_to_source.clone(),
@ -789,8 +807,11 @@ impl ExecutorContext {
KclErrorWithOutputs::new( KclErrorWithOutputs::new(
err, err,
#[cfg(feature = "artifact-graph")]
exec_state.global.operations.clone(), exec_state.global.operations.clone(),
#[cfg(feature = "artifact-graph")]
exec_state.global.artifact_commands.clone(), exec_state.global.artifact_commands.clone(),
#[cfg(feature = "artifact-graph")]
exec_state.global.artifact_graph.clone(), exec_state.global.artifact_graph.clone(),
module_id_to_module_path, module_id_to_module_path,
exec_state.global.id_to_source.clone(), exec_state.global.id_to_source.clone(),
@ -934,8 +955,11 @@ impl ExecutorContext {
return Err(KclErrorWithOutputs::new( return Err(KclErrorWithOutputs::new(
e, e,
#[cfg(feature = "artifact-graph")]
exec_state.global.operations.clone(), exec_state.global.operations.clone(),
#[cfg(feature = "artifact-graph")]
exec_state.global.artifact_commands.clone(), exec_state.global.artifact_commands.clone(),
#[cfg(feature = "artifact-graph")]
exec_state.global.artifact_graph.clone(), exec_state.global.artifact_graph.clone(),
module_id_to_module_path, module_id_to_module_path,
exec_state.global.id_to_source.clone(), exec_state.global.id_to_source.clone(),
@ -986,8 +1010,11 @@ impl ExecutorContext {
KclErrorWithOutputs::new( KclErrorWithOutputs::new(
e, e,
#[cfg(feature = "artifact-graph")]
exec_state.global.operations.clone(), exec_state.global.operations.clone(),
#[cfg(feature = "artifact-graph")]
exec_state.global.artifact_commands.clone(), exec_state.global.artifact_commands.clone(),
#[cfg(feature = "artifact-graph")]
exec_state.global.artifact_graph.clone(), exec_state.global.artifact_graph.clone(),
module_id_to_module_path, module_id_to_module_path,
exec_state.global.id_to_source.clone(), exec_state.global.id_to_source.clone(),
@ -1036,32 +1063,39 @@ impl ExecutorContext {
// and should be dropped. // and should be dropped.
self.engine.clear_queues().await; self.engine.clear_queues().await;
// Move the artifact commands and responses to simplify cache management #[cfg(feature = "artifact-graph")]
// and error creation. {
exec_state // Move the artifact commands and responses to simplify cache management
.global // and error creation.
.artifact_commands exec_state
.extend(self.engine.take_artifact_commands().await); .global
exec_state .artifact_commands
.global .extend(self.engine.take_artifact_commands().await);
.artifact_responses exec_state
.extend(self.engine.take_responses().await); .global
// Build the artifact graph. .artifact_responses
match build_artifact_graph( .extend(self.engine.take_responses().await);
&exec_state.global.artifact_commands, // Build the artifact graph.
&exec_state.global.artifact_responses, match build_artifact_graph(
program, &exec_state.global.artifact_commands,
&exec_state.global.artifacts, &exec_state.global.artifact_responses,
) { program,
Ok(artifact_graph) => { &exec_state.global.artifacts,
exec_state.global.artifact_graph = artifact_graph; ) {
exec_result.map(|(_, env_ref, _)| env_ref) Ok(artifact_graph) => {
} exec_state.global.artifact_graph = artifact_graph;
Err(err) => { exec_result.map(|(_, env_ref, _)| env_ref)
// Prefer the exec error. }
exec_result.and(Err(err)) Err(err) => {
// Prefer the exec error.
exec_result.and(Err(err))
}
} }
} }
#[cfg(not(feature = "artifact-graph"))]
{
exec_result.map(|(_, env_ref, _)| env_ref)
}
} }
/// 'Import' std::prelude as the outermost scope. /// 'Import' std::prelude as the outermost scope.

View File

@ -2,20 +2,23 @@ use std::sync::Arc;
use anyhow::Result; use anyhow::Result;
use indexmap::IndexMap; use indexmap::IndexMap;
#[cfg(feature = "artifact-graph")]
use kittycad_modeling_cmds::websocket::WebSocketResponse; use kittycad_modeling_cmds::websocket::WebSocketResponse;
use schemars::JsonSchema; use schemars::JsonSchema;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use uuid::Uuid; use uuid::Uuid;
use super::types::NumericType; #[cfg(feature = "artifact-graph")]
use crate::execution::{Artifact, ArtifactCommand, ArtifactGraph, ArtifactId, Operation};
use crate::{ use crate::{
errors::{KclError, KclErrorDetails, Severity}, errors::{KclError, KclErrorDetails, Severity},
execution::{ execution::{
annotations, annotations,
id_generator::IdGenerator, id_generator::IdGenerator,
memory::{ProgramMemory, Stack}, memory::{ProgramMemory, Stack},
types, Artifact, ArtifactCommand, ArtifactGraph, ArtifactId, EnvironmentRef, ExecOutcome, ExecutorSettings, types,
KclValue, Operation, UnitAngle, UnitLen, types::NumericType,
EnvironmentRef, ExecOutcome, ExecutorSettings, KclValue, UnitAngle, UnitLen,
}, },
modules::{ModuleId, ModuleInfo, ModuleLoader, ModulePath, ModuleRepr, ModuleSource}, modules::{ModuleId, ModuleInfo, ModuleLoader, ModulePath, ModuleRepr, ModuleSource},
parsing::ast::types::Annotation, parsing::ast::types::Annotation,
@ -29,6 +32,9 @@ pub struct ExecState {
pub(super) global: GlobalState, pub(super) global: GlobalState,
pub(super) mod_local: ModuleState, pub(super) mod_local: ModuleState,
pub(super) exec_context: Option<super::ExecutorContext>, pub(super) exec_context: Option<super::ExecutorContext>,
/// If we should not parallelize execution.
#[cfg(test)]
pub single_threaded: bool,
} }
pub type ModuleInfoMap = IndexMap<ModuleId, ModuleInfo>; pub type ModuleInfoMap = IndexMap<ModuleId, ModuleInfo>;
@ -42,20 +48,25 @@ pub(super) struct GlobalState {
/// Map from module ID to module info. /// Map from module ID to module info.
pub module_infos: ModuleInfoMap, pub module_infos: ModuleInfoMap,
/// Output map of UUIDs to artifacts. /// Output map of UUIDs to artifacts.
#[cfg(feature = "artifact-graph")]
pub artifacts: IndexMap<ArtifactId, Artifact>, pub artifacts: IndexMap<ArtifactId, Artifact>,
/// Output commands to allow building the artifact graph by the caller. /// Output commands to allow building the artifact graph by the caller.
/// These are accumulated in the [`ExecutorContext`] but moved here for /// These are accumulated in the [`ExecutorContext`] but moved here for
/// convenience of the execution cache. /// convenience of the execution cache.
#[cfg(feature = "artifact-graph")]
pub artifact_commands: Vec<ArtifactCommand>, pub artifact_commands: Vec<ArtifactCommand>,
/// Responses from the engine for `artifact_commands`. We need to cache /// Responses from the engine for `artifact_commands`. We need to cache
/// this so that we can build the artifact graph. These are accumulated in /// this so that we can build the artifact graph. These are accumulated in
/// the [`ExecutorContext`] but moved here for convenience of the execution /// the [`ExecutorContext`] but moved here for convenience of the execution
/// cache. /// cache.
#[cfg(feature = "artifact-graph")]
pub artifact_responses: IndexMap<Uuid, WebSocketResponse>, pub artifact_responses: IndexMap<Uuid, WebSocketResponse>,
/// Output artifact graph. /// Output artifact graph.
#[cfg(feature = "artifact-graph")]
pub artifact_graph: ArtifactGraph, pub artifact_graph: ArtifactGraph,
/// Operations that have been performed in execution order, for display in /// Operations that have been performed in execution order, for display in
/// the Feature Tree. /// the Feature Tree.
#[cfg(feature = "artifact-graph")]
pub operations: Vec<Operation>, pub operations: Vec<Operation>,
/// Module loader. /// Module loader.
pub mod_loader: ModuleLoader, pub mod_loader: ModuleLoader,
@ -85,6 +96,8 @@ impl ExecState {
global: GlobalState::new(&exec_context.settings), global: GlobalState::new(&exec_context.settings),
mod_local: ModuleState::new(None, ProgramMemory::new(), Default::default()), mod_local: ModuleState::new(None, ProgramMemory::new(), Default::default()),
exec_context: Some(exec_context.clone()), exec_context: Some(exec_context.clone()),
#[cfg(test)]
single_threaded: false,
} }
} }
@ -95,6 +108,8 @@ impl ExecState {
global, global,
mod_local: ModuleState::new(None, ProgramMemory::new(), Default::default()), mod_local: ModuleState::new(None, ProgramMemory::new(), Default::default()),
exec_context: Some(exec_context.clone()), exec_context: Some(exec_context.clone()),
#[cfg(test)]
single_threaded: false,
}; };
} }
@ -116,7 +131,7 @@ impl ExecState {
/// Convert to execution outcome when running in WebAssembly. We want to /// Convert to execution outcome when running in WebAssembly. We want to
/// reduce the amount of data that crosses the WASM boundary as much as /// reduce the amount of data that crosses the WASM boundary as much as
/// possible. /// possible.
pub async fn to_wasm_outcome(self, main_ref: EnvironmentRef) -> ExecOutcome { pub async fn to_exec_outcome(self, main_ref: EnvironmentRef) -> ExecOutcome {
// Fields are opt-in so that we don't accidentally leak private internal // Fields are opt-in so that we don't accidentally leak private internal
// state when we add more to ExecState. // state when we add more to ExecState.
ExecOutcome { ExecOutcome {
@ -125,8 +140,11 @@ impl ExecState {
.find_all_in_env(main_ref) .find_all_in_env(main_ref)
.map(|(k, v)| (k.clone(), v.clone())) .map(|(k, v)| (k.clone(), v.clone()))
.collect(), .collect(),
#[cfg(feature = "artifact-graph")]
operations: self.global.operations, operations: self.global.operations,
#[cfg(feature = "artifact-graph")]
artifact_commands: self.global.artifact_commands, artifact_commands: self.global.artifact_commands,
#[cfg(feature = "artifact-graph")]
artifact_graph: self.global.artifact_graph, artifact_graph: self.global.artifact_graph,
errors: self.global.errors, errors: self.global.errors,
filenames: self filenames: self
@ -143,7 +161,7 @@ impl ExecState {
} }
} }
pub async fn to_mock_wasm_outcome(self, main_ref: EnvironmentRef) -> ExecOutcome { pub async fn to_mock_exec_outcome(self, main_ref: EnvironmentRef) -> ExecOutcome {
// Fields are opt-in so that we don't accidentally leak private internal // Fields are opt-in so that we don't accidentally leak private internal
// state when we add more to ExecState. // state when we add more to ExecState.
ExecOutcome { ExecOutcome {
@ -152,8 +170,11 @@ impl ExecState {
.find_all_in_env(main_ref) .find_all_in_env(main_ref)
.map(|(k, v)| (k.clone(), v.clone())) .map(|(k, v)| (k.clone(), v.clone()))
.collect(), .collect(),
#[cfg(feature = "artifact-graph")]
operations: Default::default(), operations: Default::default(),
#[cfg(feature = "artifact-graph")]
artifact_commands: Default::default(), artifact_commands: Default::default(),
#[cfg(feature = "artifact-graph")]
artifact_graph: Default::default(), artifact_graph: Default::default(),
errors: self.global.errors, errors: self.global.errors,
filenames: Default::default(), filenames: Default::default(),
@ -181,6 +202,7 @@ impl ExecState {
&mut self.mod_local.id_generator &mut self.mod_local.id_generator
} }
#[cfg(feature = "artifact-graph")]
pub(crate) fn add_artifact(&mut self, artifact: Artifact) { pub(crate) fn add_artifact(&mut self, artifact: Artifact) {
let id = artifact.id(); let id = artifact.id();
self.global.artifacts.insert(id, artifact); self.global.artifacts.insert(id, artifact);
@ -271,10 +293,15 @@ impl GlobalState {
let mut global = GlobalState { let mut global = GlobalState {
path_to_source_id: Default::default(), path_to_source_id: Default::default(),
module_infos: Default::default(), module_infos: Default::default(),
#[cfg(feature = "artifact-graph")]
artifacts: Default::default(), artifacts: Default::default(),
#[cfg(feature = "artifact-graph")]
artifact_commands: Default::default(), artifact_commands: Default::default(),
#[cfg(feature = "artifact-graph")]
artifact_responses: Default::default(), artifact_responses: Default::default(),
#[cfg(feature = "artifact-graph")]
artifact_graph: Default::default(), artifact_graph: Default::default(),
#[cfg(feature = "artifact-graph")]
operations: Default::default(), operations: Default::default(),
mod_loader: Default::default(), mod_loader: Default::default(),
errors: Default::default(), errors: Default::default(),

View File

@ -1051,6 +1051,7 @@ impl KclValue {
let id = exec_state.mod_local.id_generator.next_uuid(); let id = exec_state.mod_local.id_generator.next_uuid();
let plane = Plane { let plane = Plane {
id, id,
#[cfg(feature = "artifact-graph")]
artifact_id: id.into(), artifact_id: id.into(),
origin, origin,
x_axis, x_axis,

View File

@ -81,7 +81,7 @@ pub mod walk;
mod wasm; mod wasm;
pub use coredump::CoreDump; pub use coredump::CoreDump;
pub use engine::{EngineManager, EngineStats}; pub use engine::{AsyncTasks, EngineManager, EngineStats};
pub use errors::{ pub use errors::{
CompilationError, ConnectionError, ExecError, KclError, KclErrorWithOutputs, Report, ReportWithOutputs, CompilationError, ConnectionError, ExecError, KclError, KclErrorWithOutputs, Report, ReportWithOutputs,
}; };
@ -102,7 +102,9 @@ pub use unparser::{recast_dir, walk_dir};
// Rather than make executor public and make lots of it pub(crate), just re-export into a new module. // Rather than make executor public and make lots of it pub(crate), just re-export into a new module.
// Ideally we wouldn't export these things at all, they should only be used for testing. // Ideally we wouldn't export these things at all, they should only be used for testing.
pub mod exec { pub mod exec {
pub use crate::execution::{ArtifactCommand, DefaultPlanes, IdGenerator, KclValue, PlaneType, Sketch}; #[cfg(feature = "artifact-graph")]
pub use crate::execution::ArtifactCommand;
pub use crate::execution::{DefaultPlanes, IdGenerator, KclValue, PlaneType, Sketch};
} }
#[cfg(target_arch = "wasm32")] #[cfg(target_arch = "wasm32")]

View File

@ -1,16 +1,17 @@
#[cfg(feature = "artifact-graph")]
use std::collections::HashMap;
use std::{ use std::{
collections::HashMap,
panic::{catch_unwind, AssertUnwindSafe}, panic::{catch_unwind, AssertUnwindSafe},
path::{Path, PathBuf}, path::{Path, PathBuf},
}; };
use insta::rounded_redaction; use insta::rounded_redaction;
use crate::{errors::KclError, ModuleId};
#[cfg(feature = "artifact-graph")]
use crate::{ use crate::{
errors::KclError,
exec::ArtifactCommand, exec::ArtifactCommand,
execution::{ArtifactGraph, Operation}, execution::{ArtifactGraph, Operation},
ModuleId,
}; };
mod kcl_samples; mod kcl_samples;
@ -156,9 +157,12 @@ async fn execute_test(test: &Test, render_to_png: bool, export_step: bool) {
let ast = crate::Program::parse_no_errs(&input).unwrap(); let ast = crate::Program::parse_no_errs(&input).unwrap();
// Run the program. // Run the program.
let exec_res = let exec_res = crate::test_server::execute_and_snapshot_ast_single_threaded(
crate::test_server::execute_and_snapshot_ast(ast, Some(test.input_dir.join(&test.entry_point)), export_step) ast,
.await; Some(test.input_dir.join(&test.entry_point)),
export_step,
)
.await;
match exec_res { match exec_res {
Ok((exec_state, env_ref, png, step)) => { Ok((exec_state, env_ref, png, step)) => {
let fail_path = test.output_dir.join("execution_error.snap"); let fail_path = test.output_dir.join("execution_error.snap");
@ -178,7 +182,7 @@ async fn execute_test(test: &Test, render_to_png: bool, export_step: bool) {
panic!("Step data was empty"); panic!("Step data was empty");
} }
} }
let outcome = exec_state.to_wasm_outcome(env_ref).await; let outcome = exec_state.to_exec_outcome(env_ref).await;
let mem_result = catch_unwind(AssertUnwindSafe(|| { let mem_result = catch_unwind(AssertUnwindSafe(|| {
assert_snapshot(test, "Variables in memory after executing", || { assert_snapshot(test, "Variables in memory after executing", || {
@ -196,6 +200,7 @@ async fn execute_test(test: &Test, render_to_png: bool, export_step: bool) {
}) })
})); }));
#[cfg(feature = "artifact-graph")]
assert_common_snapshots( assert_common_snapshots(
test, test,
outcome.operations, outcome.operations,
@ -230,6 +235,7 @@ async fn execute_test(test: &Test, render_to_png: bool, export_step: bool) {
}) })
})); }));
#[cfg(feature = "artifact-graph")]
assert_common_snapshots(test, error.operations, error.artifact_commands, error.artifact_graph); assert_common_snapshots(test, error.operations, error.artifact_commands, error.artifact_graph);
err_result.unwrap(); err_result.unwrap();
} }
@ -246,6 +252,7 @@ async fn execute_test(test: &Test, render_to_png: bool, export_step: bool) {
/// Assert snapshots that should happen both when KCL execution succeeds and /// Assert snapshots that should happen both when KCL execution succeeds and
/// when it results in an error. /// when it results in an error.
#[cfg(feature = "artifact-graph")]
fn assert_common_snapshots( fn assert_common_snapshots(
test: &Test, test: &Test,
operations: Vec<Operation>, operations: Vec<Operation>,
@ -1560,6 +1567,7 @@ mod mike_stress_test {
/// Test that KCL is executed correctly. /// Test that KCL is executed correctly.
#[tokio::test(flavor = "multi_thread")] #[tokio::test(flavor = "multi_thread")]
#[ignore = "when kurt made the artifact graph lots of commands, this became super slow and sometimes the engine will just die, turn this back on when we can parallelize the simulation tests with snapshots deterministically"]
async fn kcl_test_execute() { async fn kcl_test_execute() {
super::execute(TEST_NAME, true).await super::execute(TEST_NAME, true).await
} }

View File

@ -9,14 +9,13 @@ use rgba_simple::Hex;
use schemars::JsonSchema; use schemars::JsonSchema;
use serde::Serialize; use serde::Serialize;
use super::args::TyF64;
use crate::{ use crate::{
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{types::RuntimeType, ExecState, KclValue, SolidOrImportedGeometry}, execution::{types::RuntimeType, ExecState, KclValue, SolidOrImportedGeometry},
std::Args, std::Args,
}; };
use super::args::TyF64;
lazy_static::lazy_static! { lazy_static::lazy_static! {
static ref HEX_REGEX: Regex = Regex::new(r"^#[0-9a-fA-F]{6}$").unwrap(); static ref HEX_REGEX: Regex = Regex::new(r"^#[0-9a-fA-F]{6}$").unwrap();
} }

View File

@ -3,14 +3,13 @@
use anyhow::Result; use anyhow::Result;
use kcl_derive_docs::stdlib; use kcl_derive_docs::stdlib;
use super::args::TyF64;
use crate::{ use crate::{
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{ExecState, KclValue}, execution::{ExecState, KclValue},
std::Args, std::Args,
}; };
use super::args::TyF64;
async fn _assert(value: bool, message: &str, args: &Args) -> Result<(), KclError> { async fn _assert(value: bool, message: &str, args: &Args) -> Result<(), KclError> {
if !value { if !value {
return Err(KclError::Type(KclErrorDetails { return Err(KclError::Type(KclErrorDetails {

View File

@ -1,8 +1,7 @@
//! Types for referencing an axis or edge. //! Types for referencing an axis or edge.
use crate::std::fillet::EdgeReference;
use super::args::TyF64; use super::args::TyF64;
use crate::std::fillet::EdgeReference;
/// A 2D axis or tagged edge. /// A 2D axis or tagged edge.
#[derive(Debug, Clone, PartialEq)] #[derive(Debug, Clone, PartialEq)]

View File

@ -5,6 +5,7 @@ use kcl_derive_docs::stdlib;
use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, shared::CutType, ModelingCmd}; use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, shared::CutType, ModelingCmd};
use kittycad_modeling_cmds as kcmc; use kittycad_modeling_cmds as kcmc;
use super::args::TyF64;
use crate::{ use crate::{
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{ execution::{
@ -15,8 +16,6 @@ use crate::{
std::{fillet::EdgeReference, Args}, std::{fillet::EdgeReference, Args},
}; };
use super::args::TyF64;
pub(crate) const DEFAULT_TOLERANCE: f64 = 0.0000001; pub(crate) const DEFAULT_TOLERANCE: f64 = 0.0000001;
/// Create chamfers on tagged paths. /// Create chamfers on tagged paths.

View File

@ -293,14 +293,20 @@ async fn inner_clone(
let mut new_sketch = sketch.clone(); let mut new_sketch = sketch.clone();
new_sketch.id = new_id; new_sketch.id = new_id;
new_sketch.original_id = new_id; new_sketch.original_id = new_id;
new_sketch.artifact_id = new_id.into(); #[cfg(feature = "artifact-graph")]
{
new_sketch.artifact_id = new_id.into();
}
GeometryWithImportedGeometry::Sketch(new_sketch) GeometryWithImportedGeometry::Sketch(new_sketch)
} }
GeometryWithImportedGeometry::Solid(solid) => { GeometryWithImportedGeometry::Solid(solid) => {
let mut new_solid = solid.clone(); let mut new_solid = solid.clone();
new_solid.id = new_id; new_solid.id = new_id;
new_solid.sketch.original_id = new_id; new_solid.sketch.original_id = new_id;
new_solid.artifact_id = new_id.into(); #[cfg(feature = "artifact-graph")]
{
new_solid.artifact_id = new_id.into();
}
GeometryWithImportedGeometry::Solid(new_solid) GeometryWithImportedGeometry::Solid(new_solid)
} }
}; };
@ -343,7 +349,10 @@ async fn fix_tags_and_references(
// Make the sketch id the new geometry id. // Make the sketch id the new geometry id.
solid.sketch.id = new_geometry_id; solid.sketch.id = new_geometry_id;
solid.sketch.original_id = new_geometry_id; solid.sketch.original_id = new_geometry_id;
solid.sketch.artifact_id = new_geometry_id.into(); #[cfg(feature = "artifact-graph")]
{
solid.sketch.artifact_id = new_geometry_id.into();
}
fix_sketch_tags_and_references(&mut solid.sketch, &entity_id_map, exec_state).await?; fix_sketch_tags_and_references(&mut solid.sketch, &entity_id_map, exec_state).await?;
@ -368,6 +377,7 @@ async fn fix_tags_and_references(
// information. // information.
let new_solid = do_post_extrude( let new_solid = do_post_extrude(
&solid.sketch, &solid.sketch,
#[cfg(feature = "artifact-graph")]
new_geometry_id.into(), new_geometry_id.into(),
crate::std::args::TyF64::new( crate::std::args::TyF64::new(
solid.height, solid.height,
@ -547,8 +557,10 @@ clonedCube = clone(cube)
assert_ne!(cube.id, cloned_cube.id); assert_ne!(cube.id, cloned_cube.id);
assert_ne!(cube.original_id, cloned_cube.original_id); assert_ne!(cube.original_id, cloned_cube.original_id);
#[cfg(feature = "artifact-graph")]
assert_ne!(cube.artifact_id, cloned_cube.artifact_id); assert_ne!(cube.artifact_id, cloned_cube.artifact_id);
#[cfg(feature = "artifact-graph")]
assert_eq!(cloned_cube.artifact_id, cloned_cube.id.into()); assert_eq!(cloned_cube.artifact_id, cloned_cube.id.into());
assert_eq!(cloned_cube.original_id, cloned_cube.id); assert_eq!(cloned_cube.original_id, cloned_cube.id);
@ -597,9 +609,12 @@ clonedCube = clone(cube)
assert_ne!(cube.id, cloned_cube.id); assert_ne!(cube.id, cloned_cube.id);
assert_ne!(cube.sketch.id, cloned_cube.sketch.id); assert_ne!(cube.sketch.id, cloned_cube.sketch.id);
assert_ne!(cube.sketch.original_id, cloned_cube.sketch.original_id); assert_ne!(cube.sketch.original_id, cloned_cube.sketch.original_id);
#[cfg(feature = "artifact-graph")]
assert_ne!(cube.artifact_id, cloned_cube.artifact_id); assert_ne!(cube.artifact_id, cloned_cube.artifact_id);
#[cfg(feature = "artifact-graph")]
assert_ne!(cube.sketch.artifact_id, cloned_cube.sketch.artifact_id); assert_ne!(cube.sketch.artifact_id, cloned_cube.sketch.artifact_id);
#[cfg(feature = "artifact-graph")]
assert_eq!(cloned_cube.artifact_id, cloned_cube.id.into()); assert_eq!(cloned_cube.artifact_id, cloned_cube.id.into());
for (path, cloned_path) in cube.sketch.paths.iter().zip(cloned_cube.sketch.paths.iter()) { for (path, cloned_path) in cube.sketch.paths.iter().zip(cloned_cube.sketch.paths.iter()) {
@ -711,9 +726,12 @@ clonedCube = clone(cube)
assert_ne!(cube.id, cloned_cube.id); assert_ne!(cube.id, cloned_cube.id);
assert_ne!(cube.sketch.id, cloned_cube.sketch.id); assert_ne!(cube.sketch.id, cloned_cube.sketch.id);
assert_ne!(cube.sketch.original_id, cloned_cube.sketch.original_id); assert_ne!(cube.sketch.original_id, cloned_cube.sketch.original_id);
#[cfg(feature = "artifact-graph")]
assert_ne!(cube.artifact_id, cloned_cube.artifact_id); assert_ne!(cube.artifact_id, cloned_cube.artifact_id);
#[cfg(feature = "artifact-graph")]
assert_ne!(cube.sketch.artifact_id, cloned_cube.sketch.artifact_id); assert_ne!(cube.sketch.artifact_id, cloned_cube.sketch.artifact_id);
#[cfg(feature = "artifact-graph")]
assert_eq!(cloned_cube.artifact_id, cloned_cube.id.into()); assert_eq!(cloned_cube.artifact_id, cloned_cube.id.into());
for (path, cloned_path) in cube.sketch.paths.iter().zip(cloned_cube.sketch.paths.iter()) { for (path, cloned_path) in cube.sketch.paths.iter().zip(cloned_cube.sketch.paths.iter()) {
@ -783,9 +801,12 @@ clonedCube = clone(cube)
assert_ne!(cube.id, cloned_cube.id); assert_ne!(cube.id, cloned_cube.id);
assert_ne!(cube.sketch.id, cloned_cube.sketch.id); assert_ne!(cube.sketch.id, cloned_cube.sketch.id);
assert_ne!(cube.sketch.original_id, cloned_cube.sketch.original_id); assert_ne!(cube.sketch.original_id, cloned_cube.sketch.original_id);
#[cfg(feature = "artifact-graph")]
assert_ne!(cube.artifact_id, cloned_cube.artifact_id); assert_ne!(cube.artifact_id, cloned_cube.artifact_id);
#[cfg(feature = "artifact-graph")]
assert_ne!(cube.sketch.artifact_id, cloned_cube.sketch.artifact_id); assert_ne!(cube.sketch.artifact_id, cloned_cube.sketch.artifact_id);
#[cfg(feature = "artifact-graph")]
assert_eq!(cloned_cube.artifact_id, cloned_cube.id.into()); assert_eq!(cloned_cube.artifact_id, cloned_cube.id.into());
for (path, cloned_path) in cube.sketch.paths.iter().zip(cloned_cube.sketch.paths.iter()) { for (path, cloned_path) in cube.sketch.paths.iter().zip(cloned_cube.sketch.paths.iter()) {
@ -883,9 +904,12 @@ clonedCube = clone(cube)
assert_ne!(cube.id, cloned_cube.id); assert_ne!(cube.id, cloned_cube.id);
assert_ne!(cube.sketch.id, cloned_cube.sketch.id); assert_ne!(cube.sketch.id, cloned_cube.sketch.id);
assert_ne!(cube.sketch.original_id, cloned_cube.sketch.original_id); assert_ne!(cube.sketch.original_id, cloned_cube.sketch.original_id);
#[cfg(feature = "artifact-graph")]
assert_ne!(cube.artifact_id, cloned_cube.artifact_id); assert_ne!(cube.artifact_id, cloned_cube.artifact_id);
#[cfg(feature = "artifact-graph")]
assert_ne!(cube.sketch.artifact_id, cloned_cube.sketch.artifact_id); assert_ne!(cube.sketch.artifact_id, cloned_cube.sketch.artifact_id);
#[cfg(feature = "artifact-graph")]
assert_eq!(cloned_cube.artifact_id, cloned_cube.id.into()); assert_eq!(cloned_cube.artifact_id, cloned_cube.id.into());
for (path, cloned_path) in cube.sketch.paths.iter().zip(cloned_cube.sketch.paths.iter()) { for (path, cloned_path) in cube.sketch.paths.iter().zip(cloned_cube.sketch.paths.iter()) {

View File

@ -10,14 +10,13 @@ use kittycad_modeling_cmds::{
websocket::OkWebSocketResponseData, websocket::OkWebSocketResponseData,
}; };
use super::{args::TyF64, DEFAULT_TOLERANCE};
use crate::{ use crate::{
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{types::RuntimeType, ExecState, KclValue, Solid}, execution::{types::RuntimeType, ExecState, KclValue, Solid},
std::Args, std::Args,
}; };
use super::{args::TyF64, DEFAULT_TOLERANCE};
/// Union two or more solids into a single solid. /// Union two or more solids into a single solid.
pub async fn union(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn union(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let solids: Vec<Solid> = let solids: Vec<Solid> =

View File

@ -16,18 +16,16 @@ use kcmc::{
use kittycad_modeling_cmds::{self as kcmc}; use kittycad_modeling_cmds::{self as kcmc};
use uuid::Uuid; use uuid::Uuid;
use super::args::TyF64;
#[cfg(feature = "artifact-graph")]
use crate::execution::ArtifactId;
use crate::{ use crate::{
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{ execution::{types::RuntimeType, ExecState, ExtrudeSurface, GeoMeta, KclValue, Path, Sketch, SketchSurface, Solid},
types::RuntimeType, ArtifactId, ExecState, ExtrudeSurface, GeoMeta, KclValue, Path, Sketch, SketchSurface,
Solid,
},
parsing::ast::types::TagNode, parsing::ast::types::TagNode,
std::Args, std::Args,
}; };
use super::args::TyF64;
/// Extrudes by a given amount. /// Extrudes by a given amount.
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)?;
@ -212,6 +210,7 @@ async fn inner_extrude(
solids.push( solids.push(
do_post_extrude( do_post_extrude(
sketch, sketch,
#[cfg(feature = "artifact-graph")]
id.into(), id.into(),
length.clone(), length.clone(),
false, false,
@ -237,7 +236,7 @@ pub(crate) struct NamedCapTags<'a> {
pub(crate) async fn do_post_extrude<'a>( pub(crate) async fn do_post_extrude<'a>(
sketch: &Sketch, sketch: &Sketch,
solid_id: ArtifactId, #[cfg(feature = "artifact-graph")] solid_id: ArtifactId,
length: TyF64, length: TyF64,
sectional: bool, sectional: bool,
named_cap_tags: &'a NamedCapTags<'a>, named_cap_tags: &'a NamedCapTags<'a>,
@ -297,6 +296,7 @@ pub(crate) async fn do_post_extrude<'a>(
// are the ones that work with GetOppositeEdge and GetNextAdjacentEdge, aka the n sides in the sweep. // are the ones that work with GetOppositeEdge and GetNextAdjacentEdge, aka the n sides in the sweep.
// So here we're figuring out that n number as yielded_sides_count here, // So here we're figuring out that n number as yielded_sides_count here,
// making sure that circle() calls count but close() don't (no length) // making sure that circle() calls count but close() don't (no length)
#[cfg(feature = "artifact-graph")]
let count_of_first_set_of_faces_if_sectional = if sectional { let count_of_first_set_of_faces_if_sectional = if sectional {
sketch sketch
.paths .paths
@ -311,6 +311,8 @@ pub(crate) async fn do_post_extrude<'a>(
usize::MAX usize::MAX
}; };
// Only do this if we need the artifact graph.
#[cfg(feature = "artifact-graph")]
for (curve_id, face_id) in face_infos for (curve_id, face_id) in face_infos
.iter() .iter()
.filter(|face_info| face_info.cap == ExtrusionFaceCapType::None) .filter(|face_info| face_info.cap == ExtrusionFaceCapType::None)
@ -327,28 +329,21 @@ pub(crate) async fn do_post_extrude<'a>(
// So, there's no need to await them. // So, there's no need to await them.
// Instead, the Typescript codebases (which handles WebSocket sends when compiled via Wasm) // Instead, the Typescript codebases (which handles WebSocket sends when compiled via Wasm)
// uses this to build the artifact graph, which the UI needs. // uses this to build the artifact graph, which the UI needs.
let opposite_edge_id = args //
.send_modeling_cmd( // Spawn this in the background, because we don't care about the result.
exec_state.next_uuid(), // Only the artifact graph needs at the end.
ModelingCmd::from(mcmd::Solid3dGetOppositeEdge { let args_cloned = args.clone();
edge_id: curve_id, let opposite_edge_uuid = exec_state.next_uuid();
object_id: sketch.id, let next_adjacent_edge_uuid = exec_state.next_uuid();
face_id, let get_all_edge_faces_opposite_uuid = exec_state.next_uuid();
}), let get_all_edge_faces_next_uuid = exec_state.next_uuid();
) #[cfg(test)]
.await?; let single_threaded = exec_state.single_threaded;
let next_adjacent_edge_id = args #[cfg(not(test))]
.send_modeling_cmd( let single_threaded = false;
exec_state.next_uuid(),
ModelingCmd::from(mcmd::Solid3dGetNextAdjacentEdge {
edge_id: curve_id,
object_id: sketch.id,
face_id,
}),
)
.await?;
// Get faces for original edge // Get faces for original edge
// Since this one is batched we can just run it.
args.batch_modeling_cmd( args.batch_modeling_cmd(
exec_state.next_uuid(), exec_state.next_uuid(),
ModelingCmd::from(mcmd::Solid3dGetAllEdgeFaces { ModelingCmd::from(mcmd::Solid3dGetAllEdgeFaces {
@ -358,36 +353,56 @@ pub(crate) async fn do_post_extrude<'a>(
) )
.await?; .await?;
// Get faces for opposite edge if !single_threaded {
if let OkWebSocketResponseData::Modeling { args.ctx
modeling_response: OkModelingCmdResponse::Solid3dGetOppositeEdge(opposite_edge), .engine
} = opposite_edge_id .async_tasks()
{ .spawn(get_bg_edge_info_opposite(
args.batch_modeling_cmd( args_cloned.clone(),
exec_state.next_uuid(), curve_id,
ModelingCmd::from(mcmd::Solid3dGetAllEdgeFaces { sketch.id,
edge_id: opposite_edge.edge, face_id,
object_id: sketch.id, opposite_edge_uuid,
}), get_all_edge_faces_opposite_uuid,
single_threaded,
))
.await;
args.ctx
.engine
.async_tasks()
.spawn(get_bg_edge_info_next(
args_cloned,
curve_id,
sketch.id,
face_id,
next_adjacent_edge_uuid,
get_all_edge_faces_next_uuid,
single_threaded,
))
.await;
} else {
get_bg_edge_info_opposite(
args_cloned.clone(),
curve_id,
sketch.id,
face_id,
opposite_edge_uuid,
get_all_edge_faces_opposite_uuid,
single_threaded,
) )
.await?; .await?;
}
// Get faces for next adjacent edge get_bg_edge_info_next(
if let OkWebSocketResponseData::Modeling { args_cloned,
modeling_response: OkModelingCmdResponse::Solid3dGetNextAdjacentEdge(next_adjacent_edge), curve_id,
} = next_adjacent_edge_id sketch.id,
{ face_id,
if let Some(edge_id) = next_adjacent_edge.edge { next_adjacent_edge_uuid,
args.batch_modeling_cmd( get_all_edge_faces_next_uuid,
exec_state.next_uuid(), single_threaded,
ModelingCmd::from(mcmd::Solid3dGetAllEdgeFaces { )
edge_id, .await?;
object_id: sketch.id,
}),
)
.await?;
}
} }
} }
@ -509,6 +524,7 @@ pub(crate) async fn do_post_extrude<'a>(
// that we passed in to the function, but it's actually the id of the // that we passed in to the function, but it's actually the id of the
// sketch. // sketch.
id: sketch.id, id: sketch.id,
#[cfg(feature = "artifact-graph")]
artifact_id: solid_id, artifact_id: solid_id,
value: new_value, value: new_value,
meta: sketch.meta.clone(), meta: sketch.meta.clone(),
@ -559,3 +575,101 @@ async fn analyze_faces(exec_state: &mut ExecState, args: &Args, face_infos: Vec<
} }
faces faces
} }
#[cfg(feature = "artifact-graph")]
async fn send_fn(args: &Args, id: uuid::Uuid, cmd: ModelingCmd, single_threaded: bool) -> Result<(), KclError> {
if single_threaded {
// In single threaded mode, we can safely batch the command.
args.batch_modeling_cmd(id, cmd).await
} else {
// We cannot batch this call, because otherwise it might batch after say
// a shell that makes this edge no longer relevant.
args.send_modeling_cmd(id, cmd).await.map(|_| ())
}
}
#[cfg(feature = "artifact-graph")]
#[allow(clippy::too_many_arguments)]
async fn get_bg_edge_info_next(
args: Args,
curve_id: uuid::Uuid,
sketch_id: uuid::Uuid,
face_id: uuid::Uuid,
edge_uuid: uuid::Uuid,
get_all_edge_faces_uuid: uuid::Uuid,
single_threaded: bool,
) -> Result<(), KclError> {
let next_adjacent_edge_id = args
.send_modeling_cmd(
edge_uuid,
ModelingCmd::from(mcmd::Solid3dGetNextAdjacentEdge {
edge_id: curve_id,
object_id: sketch_id,
face_id,
}),
)
.await?;
// Get faces for next adjacent edge
if let OkWebSocketResponseData::Modeling {
modeling_response: OkModelingCmdResponse::Solid3dGetNextAdjacentEdge(next_adjacent_edge),
} = next_adjacent_edge_id
{
if let Some(edge_id) = next_adjacent_edge.edge {
send_fn(
&args,
get_all_edge_faces_uuid,
ModelingCmd::from(mcmd::Solid3dGetAllEdgeFaces {
edge_id,
object_id: sketch_id,
}),
single_threaded,
)
.await?;
}
}
Ok(())
}
#[cfg(feature = "artifact-graph")]
#[allow(clippy::too_many_arguments)]
async fn get_bg_edge_info_opposite(
args: Args,
curve_id: uuid::Uuid,
sketch_id: uuid::Uuid,
face_id: uuid::Uuid,
edge_uuid: uuid::Uuid,
get_all_edge_faces_uuid: uuid::Uuid,
single_threaded: bool,
) -> Result<(), KclError> {
let opposite_edge_id = args
.send_modeling_cmd(
edge_uuid,
ModelingCmd::from(mcmd::Solid3dGetOppositeEdge {
edge_id: curve_id,
object_id: sketch_id,
face_id,
}),
)
.await?;
// Get faces for opposite edge
if let OkWebSocketResponseData::Modeling {
modeling_response: OkModelingCmdResponse::Solid3dGetOppositeEdge(opposite_edge),
} = opposite_edge_id
{
send_fn(
&args,
get_all_edge_faces_uuid,
ModelingCmd::from(mcmd::Solid3dGetAllEdgeFaces {
edge_id: opposite_edge.edge,
object_id: sketch_id,
}),
single_threaded,
)
.await?;
}
Ok(())
}

View File

@ -4,6 +4,7 @@ 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, ModelingCmd};
use kittycad_modeling_cmds::{self as kcmc, shared::Point3d}; use kittycad_modeling_cmds::{self as kcmc, shared::Point3d};
use super::args::TyF64;
use crate::{ use crate::{
errors::KclError, errors::KclError,
execution::{ execution::{
@ -13,8 +14,6 @@ use crate::{
std::{axis_or_reference::Axis3dOrEdgeReference, Args}, std::{axis_or_reference::Axis3dOrEdgeReference, Args},
}; };
use super::args::TyF64;
/// Create a helix. /// Create a helix.
pub async fn helix(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn helix(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let angle_start: TyF64 = args.get_kw_arg_typed("angleStart", &RuntimeType::degrees(), exec_state)?; let angle_start: TyF64 = args.get_kw_arg_typed("angleStart", &RuntimeType::degrees(), exec_state)?;
@ -111,6 +110,7 @@ async fn inner_helix(
let helix_result = Box::new(HelixValue { let helix_result = Box::new(HelixValue {
value: id, value: id,
#[cfg(feature = "artifact-graph")]
artifact_id: id.into(), artifact_id: id.into(),
revolutions, revolutions,
angle_start, angle_start,

View File

@ -176,6 +176,7 @@ async fn inner_loft(
Ok(Box::new( Ok(Box::new(
do_post_extrude( do_post_extrude(
&sketch, &sketch,
#[cfg(feature = "artifact-graph")]
id.into(), id.into(),
TyF64::new(0.0, NumericType::mm()), TyF64::new(0.0, NumericType::mm()),
false, false,

View File

@ -175,6 +175,7 @@ async fn inner_revolve(
solids.push( solids.push(
do_post_extrude( do_post_extrude(
sketch, sketch,
#[cfg(feature = "artifact-graph")]
id.into(), id.into(),
TyF64::new(0.0, NumericType::mm()), TyF64::new(0.0, NumericType::mm()),
false, false,

View File

@ -5,14 +5,13 @@ use kcl_derive_docs::stdlib;
use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, ModelingCmd}; use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, ModelingCmd};
use kittycad_modeling_cmds as kcmc; use kittycad_modeling_cmds as kcmc;
use super::args::TyF64;
use crate::{ use crate::{
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{types::RuntimeType, ExecState, KclValue, Solid}, execution::{types::RuntimeType, ExecState, KclValue, Solid},
std::{sketch::FaceTag, Args}, std::{sketch::FaceTag, Args},
}; };
use super::args::TyF64;
/// Create a shell. /// Create a shell.
pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let solids = args.get_unlabeled_kw_arg_typed("solids", &RuntimeType::solids(), exec_state)?; let solids = args.get_unlabeled_kw_arg_typed("solids", &RuntimeType::solids(), exec_state)?;

View File

@ -12,21 +12,22 @@ use parse_display::{Display, FromStr};
use schemars::JsonSchema; use schemars::JsonSchema;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use super::utils::{point_to_len_unit, point_to_mm, untype_point, untyped_point_to_mm}; #[cfg(feature = "artifact-graph")]
use crate::execution::types::ArrayLen; use crate::execution::{Artifact, ArtifactId, CodeRef, StartSketchOnFace, StartSketchOnPlane};
use crate::{ use crate::{
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{ execution::{
types::{NumericType, PrimitiveType, RuntimeType, UnitLen}, types::{ArrayLen, NumericType, PrimitiveType, RuntimeType, UnitLen},
Artifact, ArtifactId, BasePath, CodeRef, ExecState, Face, GeoMeta, KclValue, Path, Plane, Point2d, Point3d, BasePath, ExecState, Face, GeoMeta, KclValue, Path, Plane, Point2d, Point3d, Sketch, SketchSurface, Solid,
Sketch, SketchSurface, Solid, StartSketchOnFace, StartSketchOnPlane, TagEngineInfo, TagIdentifier, TagEngineInfo, TagIdentifier,
}, },
parsing::ast::types::TagNode, parsing::ast::types::TagNode,
std::{ std::{
args::{Args, TyF64}, args::{Args, TyF64},
utils::{ utils::{
arc_center_and_end, get_tangential_arc_to_info, get_x_component, get_y_component, arc_center_and_end, get_tangential_arc_to_info, get_x_component, get_y_component,
intersection_with_parallel_line, TangentialArcInfoInput, intersection_with_parallel_line, point_to_len_unit, point_to_mm, untype_point, untyped_point_to_mm,
TangentialArcInfoInput,
}, },
}, },
}; };
@ -981,7 +982,7 @@ pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result<K
/// Start a new 2-dimensional sketch on a specific plane or face. /// Start a new 2-dimensional sketch on a specific plane or face.
/// ///
/// ### Sketch on Face Behavior /// ## Sketch on Face Behavior
/// ///
/// There are some important behaviors to understand when sketching on a face: /// There are some important behaviors to understand when sketching on a face:
/// ///
@ -1180,12 +1181,15 @@ async fn inner_start_sketch_on(
Ok(SketchSurface::Plane(plane)) Ok(SketchSurface::Plane(plane))
} else { } else {
// Create artifact used only by the UI, not the engine. // Create artifact used only by the UI, not the engine.
let id = exec_state.next_uuid(); #[cfg(feature = "artifact-graph")]
exec_state.add_artifact(Artifact::StartSketchOnPlane(StartSketchOnPlane { {
id: ArtifactId::from(id), let id = exec_state.next_uuid();
plane_id: plane.artifact_id, exec_state.add_artifact(Artifact::StartSketchOnPlane(StartSketchOnPlane {
code_ref: CodeRef::placeholder(args.source_range), id: ArtifactId::from(id),
})); plane_id: plane.artifact_id,
code_ref: CodeRef::placeholder(args.source_range),
}));
}
Ok(SketchSurface::Plane(plane)) Ok(SketchSurface::Plane(plane))
} }
@ -1199,13 +1203,16 @@ async fn inner_start_sketch_on(
}; };
let face = start_sketch_on_face(solid, tag, exec_state, args).await?; let face = start_sketch_on_face(solid, tag, exec_state, args).await?;
// Create artifact used only by the UI, not the engine. #[cfg(feature = "artifact-graph")]
let id = exec_state.next_uuid(); {
exec_state.add_artifact(Artifact::StartSketchOnFace(StartSketchOnFace { // Create artifact used only by the UI, not the engine.
id: ArtifactId::from(id), let id = exec_state.next_uuid();
face_id: face.artifact_id, exec_state.add_artifact(Artifact::StartSketchOnFace(StartSketchOnFace {
code_ref: CodeRef::placeholder(args.source_range), id: ArtifactId::from(id),
})); face_id: face.artifact_id,
code_ref: CodeRef::placeholder(args.source_range),
}));
}
Ok(SketchSurface::Face(face)) Ok(SketchSurface::Face(face))
} }
@ -1222,6 +1229,7 @@ async fn start_sketch_on_face(
Ok(Box::new(Face { Ok(Box::new(Face {
id: extrude_plane_id, id: extrude_plane_id,
#[cfg(feature = "artifact-graph")]
artifact_id: extrude_plane_id.into(), artifact_id: extrude_plane_id.into(),
value: tag.to_string(), value: tag.to_string(),
// TODO: get this from the extrude plane data. // TODO: get this from the extrude plane data.
@ -1401,6 +1409,7 @@ pub(crate) async fn inner_start_profile(
let sketch = Sketch { let sketch = Sketch {
id: path_id, id: path_id,
original_id: path_id, original_id: path_id,
#[cfg(feature = "artifact-graph")]
artifact_id: path_id.into(), artifact_id: path_id.into(),
on: sketch_surface.clone(), on: sketch_surface.clone(),
paths: vec![], paths: vec![],

View File

@ -195,6 +195,7 @@ async fn inner_sweep(
solids.push( solids.push(
do_post_extrude( do_post_extrude(
sketch, sketch,
#[cfg(feature = "artifact-graph")]
id.into(), id.into(),
TyF64::new(0.0, NumericType::mm()), TyF64::new(0.0, NumericType::mm()),
sectional.unwrap_or(false), sectional.unwrap_or(false),

View File

@ -11,14 +11,13 @@ use kcmc::{
}; };
use kittycad_modeling_cmds as kcmc; use kittycad_modeling_cmds as kcmc;
use super::args::TyF64;
use crate::{ use crate::{
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
execution::{types::RuntimeType, ExecState, KclValue, SolidOrSketchOrImportedGeometry}, execution::{types::RuntimeType, ExecState, KclValue, SolidOrSketchOrImportedGeometry},
std::Args, std::Args,
}; };
use super::args::TyF64;
/// Scale a solid or a sketch. /// Scale a solid or a sketch.
pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> { pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
let objects = args.get_unlabeled_kw_arg_typed( let objects = args.get_unlabeled_kw_arg_typed(

View File

@ -2,9 +2,8 @@ use std::f64::consts::PI;
use kittycad_modeling_cmds::shared::Angle; use kittycad_modeling_cmds::shared::Angle;
use crate::execution::types::{NumericType, UnitLen};
use super::args::TyF64; use super::args::TyF64;
use crate::execution::types::{NumericType, UnitLen};
pub(crate) fn untype_point(p: [TyF64; 2]) -> ([f64; 2], NumericType) { pub(crate) fn untype_point(p: [TyF64; 2]) -> ([f64; 2], NumericType) {
let (x, y, ty) = NumericType::combine_eq(p[0].clone(), p[1].clone()); let (x, y, ty) = NumericType::combine_eq(p[0].clone(), p[1].clone());
@ -236,9 +235,10 @@ pub fn calculate_circle_from_3_points(points: [Coords2d; 3]) -> CircleParams {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
// Here you can bring your functions into scope // Here you can bring your functions into scope
use std::f64::consts::TAU;
use approx::assert_relative_eq; use approx::assert_relative_eq;
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
use std::f64::consts::TAU;
use super::{calculate_circle_center, get_x_component, get_y_component, Angle}; use super::{calculate_circle_center, get_x_component, get_y_component, Angle};

View File

@ -21,7 +21,7 @@ pub struct RequestBody {
pub async fn execute_and_snapshot(code: &str, current_file: Option<PathBuf>) -> Result<image::DynamicImage, ExecError> { pub async fn execute_and_snapshot(code: &str, current_file: Option<PathBuf>) -> Result<image::DynamicImage, ExecError> {
let ctx = new_context(true, current_file).await?; let ctx = new_context(true, current_file).await?;
let program = Program::parse_no_errs(code).map_err(KclErrorWithOutputs::no_outputs)?; let program = Program::parse_no_errs(code).map_err(KclErrorWithOutputs::no_outputs)?;
let res = do_execute_and_snapshot(&ctx, program) let res = do_execute_and_snapshot(&ctx, program, false)
.await .await
.map(|(_, _, snap)| snap) .map(|(_, _, snap)| snap)
.map_err(|err| err.error); .map_err(|err| err.error);
@ -31,13 +31,14 @@ pub async fn execute_and_snapshot(code: &str, current_file: Option<PathBuf>) ->
/// Executes a kcl program and takes a snapshot of the result. /// Executes a kcl program and takes a snapshot of the result.
/// This returns the bytes of the snapshot. /// This returns the bytes of the snapshot.
pub async fn execute_and_snapshot_ast( #[cfg(test)]
pub async fn execute_and_snapshot_ast_single_threaded(
ast: Program, ast: Program,
current_file: Option<PathBuf>, current_file: Option<PathBuf>,
with_export_step: bool, with_export_step: bool,
) -> Result<(ExecState, EnvironmentRef, image::DynamicImage, Option<Vec<u8>>), ExecErrorWithState> { ) -> Result<(ExecState, EnvironmentRef, image::DynamicImage, Option<Vec<u8>>), ExecErrorWithState> {
let ctx = new_context(true, current_file).await?; let ctx = new_context(true, current_file).await?;
let (exec_state, env, img) = match do_execute_and_snapshot(&ctx, ast).await { let (exec_state, env, img) = match do_execute_and_snapshot(&ctx, ast, true).await {
Ok((exec_state, env_ref, img)) => (exec_state, env_ref, img), Ok((exec_state, env_ref, img)) => (exec_state, env_ref, img),
Err(err) => { Err(err) => {
// If there was an error executing the program, return it. // If there was an error executing the program, return it.
@ -72,7 +73,7 @@ pub async fn execute_and_snapshot_no_auth(
) -> Result<(image::DynamicImage, EnvironmentRef), ExecError> { ) -> Result<(image::DynamicImage, EnvironmentRef), ExecError> {
let ctx = new_context(false, current_file).await?; let ctx = new_context(false, current_file).await?;
let program = Program::parse_no_errs(code).map_err(KclErrorWithOutputs::no_outputs)?; let program = Program::parse_no_errs(code).map_err(KclErrorWithOutputs::no_outputs)?;
let res = do_execute_and_snapshot(&ctx, program) let res = do_execute_and_snapshot(&ctx, program, false)
.await .await
.map(|(_, env_ref, snap)| (snap, env_ref)) .map(|(_, env_ref, snap)| (snap, env_ref))
.map_err(|err| err.error); .map_err(|err| err.error);
@ -83,12 +84,15 @@ pub async fn execute_and_snapshot_no_auth(
async fn do_execute_and_snapshot( async fn do_execute_and_snapshot(
ctx: &ExecutorContext, ctx: &ExecutorContext,
program: Program, program: Program,
single_threaded: bool,
) -> Result<(ExecState, EnvironmentRef, image::DynamicImage), ExecErrorWithState> { ) -> Result<(ExecState, EnvironmentRef, image::DynamicImage), ExecErrorWithState> {
let mut exec_state = ExecState::new(ctx); let mut exec_state = ExecState::new(ctx);
let result = ctx let result = if single_threaded {
.run_single_threaded(&program, &mut exec_state) ctx.run_single_threaded(&program, &mut exec_state).await
.await } else {
.map_err(|err| ExecErrorWithState::new(err.into(), exec_state.clone()))?; ctx.run(&program, &mut exec_state).await
}
.map_err(|err| ExecErrorWithState::new(err.into(), exec_state.clone()))?;
for e in exec_state.errors() { for e in exec_state.errors() {
if e.severity.is_err() { if e.severity.is_err() {
return Err(ExecErrorWithState::new( return Err(ExecErrorWithState::new(

View File

@ -188,8 +188,10 @@ pub(crate) async fn import_universe(
continue; continue;
} }
let source_range = SourceRange::from(import_stmt.clone());
let attrs = &import_stmt.outer_attrs;
let module_id = ctx let module_id = ctx
.open_module(&import_stmt.path, &[], exec_state, Default::default()) .open_module(&import_stmt.path, attrs, exec_state, source_range)
.await?; .await?;
let repr = { let repr = {

View File

@ -241,6 +241,15 @@ description: Artifact commands angled_line.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -251,6 +260,15 @@ description: Artifact commands angled_line.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -283,19 +301,19 @@ description: Artifact commands angled_line.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -330,19 +348,19 @@ description: Artifact commands angled_line.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -377,19 +395,19 @@ description: Artifact commands angled_line.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -424,19 +442,19 @@ description: Artifact commands angled_line.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -467,15 +485,6 @@ description: Artifact commands angled_line.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -486,6 +495,15 @@ description: Artifact commands angled_line.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -496,24 +514,6 @@ description: Artifact commands angled_line.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -21,10 +21,17 @@ flowchart LR
17["Cap Start"] 17["Cap Start"]
18["Cap End"] 18["Cap End"]
19["SweepEdge Opposite"] 19["SweepEdge Opposite"]
20["SweepEdge Opposite"] 20["SweepEdge Adjacent"]
21["SweepEdge Opposite"] 21["SweepEdge Opposite"]
22["SweepEdge Opposite"] 22["SweepEdge Adjacent"]
23["SweepEdge Opposite"] 23["SweepEdge Opposite"]
24["SweepEdge Adjacent"]
25["SweepEdge Opposite"]
26["SweepEdge Adjacent"]
27["SweepEdge Opposite"]
28["SweepEdge Adjacent"]
29["SweepEdge Opposite"]
30["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -35,21 +42,28 @@ flowchart LR
2 ---- 10 2 ---- 10
2 --- 9 2 --- 9
3 --- 16 3 --- 16
3 --- 23 3 --- 29
3 --- 30
3 x--> 17 3 x--> 17
4 --- 15 4 --- 15
4 --- 22 4 --- 27
4 --- 28
4 x--> 17 4 x--> 17
5 --- 14 5 --- 14
5 --- 21 5 --- 25
5 --- 26
5 x--> 17 5 x--> 17
6 --- 13 6 --- 13
6 --- 20 6 --- 23
6 --- 24
6 x--> 17 6 x--> 17
7 --- 12 7 --- 12
7 --- 19 7 --- 21
7 --- 22
7 x--> 17 7 x--> 17
8 --- 11 8 --- 11
8 --- 19
8 --- 20
8 x--> 17 8 x--> 17
10 --- 11 10 --- 11
10 --- 12 10 --- 12
@ -64,14 +78,35 @@ flowchart LR
10 --- 21 10 --- 21
10 --- 22 10 --- 22
10 --- 23 10 --- 23
19 <--x 12 10 --- 24
10 --- 25
10 --- 26
10 --- 27
10 --- 28
10 --- 29
10 --- 30
19 <--x 11
19 <--x 18 19 <--x 18
20 <--x 13 20 <--x 11
20 <--x 18 20 <--x 16
21 <--x 14 21 <--x 12
21 <--x 18 21 <--x 18
22 <--x 15 22 <--x 11
22 <--x 18 22 <--x 12
23 <--x 16 23 <--x 13
23 <--x 18 23 <--x 18
24 <--x 12
24 <--x 13
25 <--x 14
25 <--x 18
26 <--x 13
26 <--x 14
27 <--x 15
27 <--x 18
28 <--x 14
28 <--x 15
29 <--x 16
29 <--x 18
30 <--x 15
30 <--x 16
``` ```

View File

@ -224,6 +224,15 @@ description: Artifact commands artifact_graph_example_code1.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -234,6 +243,15 @@ description: Artifact commands artifact_graph_example_code1.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -266,19 +284,19 @@ description: Artifact commands artifact_graph_example_code1.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -313,19 +331,19 @@ description: Artifact commands artifact_graph_example_code1.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -356,15 +374,6 @@ description: Artifact commands artifact_graph_example_code1.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -375,6 +384,15 @@ description: Artifact commands artifact_graph_example_code1.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -394,24 +412,6 @@ description: Artifact commands artifact_graph_example_code1.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -569,6 +569,15 @@ description: Artifact commands artifact_graph_example_code1.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -579,6 +588,15 @@ description: Artifact commands artifact_graph_example_code1.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -611,19 +629,19 @@ description: Artifact commands artifact_graph_example_code1.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -654,15 +672,6 @@ description: Artifact commands artifact_graph_example_code1.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -673,6 +682,15 @@ description: Artifact commands artifact_graph_example_code1.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -683,24 +701,6 @@ description: Artifact commands artifact_graph_example_code1.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -9,13 +9,13 @@ flowchart LR
7["Segment<br>[239, 246, 0]"] 7["Segment<br>[239, 246, 0]"]
8[Solid2d] 8[Solid2d]
end end
subgraph path20 [Path] subgraph path25 [Path]
20["Path<br>[390, 417, 0]"] 25["Path<br>[390, 417, 0]"]
21["Segment<br>[423, 441, 0]"] 26["Segment<br>[423, 441, 0]"]
22["Segment<br>[447, 466, 0]"] 27["Segment<br>[447, 466, 0]"]
23["Segment<br>[472, 528, 0]"] 28["Segment<br>[472, 528, 0]"]
24["Segment<br>[534, 541, 0]"] 29["Segment<br>[534, 541, 0]"]
25[Solid2d] 30[Solid2d]
end end
1["Plane<br>[12, 31, 0]"] 1["Plane<br>[12, 31, 0]"]
9["Sweep Extrusion<br>[260, 292, 0]"] 9["Sweep Extrusion<br>[260, 292, 0]"]
@ -26,17 +26,26 @@ flowchart LR
14["Cap Start"] 14["Cap Start"]
15["Cap End"] 15["Cap End"]
16["SweepEdge Opposite"] 16["SweepEdge Opposite"]
17["SweepEdge Opposite"] 17["SweepEdge Adjacent"]
18["SweepEdge Opposite"] 18["SweepEdge Opposite"]
19["EdgeCut Fillet<br>[298, 332, 0]"] 19["SweepEdge Adjacent"]
26["Sweep Extrusion<br>[555, 585, 0]"] 20["SweepEdge Opposite"]
27[Wall] 21["SweepEdge Adjacent"]
28[Wall] 22["SweepEdge Opposite"]
29[Wall] 23["SweepEdge Adjacent"]
30["Cap End"] 24["EdgeCut Fillet<br>[298, 332, 0]"]
31["SweepEdge Opposite"] 31["Sweep Extrusion<br>[555, 585, 0]"]
32["SweepEdge Opposite"] 32[Wall]
33["StartSketchOnFace<br>[345, 384, 0]"] 33[Wall]
34[Wall]
35["Cap End"]
36["SweepEdge Opposite"]
37["SweepEdge Adjacent"]
38["SweepEdge Opposite"]
39["SweepEdge Adjacent"]
40["SweepEdge Opposite"]
41["SweepEdge Adjacent"]
42["StartSketchOnFace<br>[345, 384, 0]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -46,16 +55,21 @@ flowchart LR
2 ---- 9 2 ---- 9
2 --- 8 2 --- 8
3 --- 13 3 --- 13
3 --- 18 3 --- 22
3 --- 23
3 x--> 15 3 x--> 15
4 --- 12 4 --- 12
4 --- 17 4 --- 20
4 --- 19 4 --- 21
4 --- 24
4 x--> 15 4 x--> 15
5 --- 11 5 --- 11
5 --- 16 5 --- 18
5 --- 19
5 x--> 15 5 x--> 15
6 --- 10 6 --- 10
6 --- 16
6 --- 17
6 x--> 15 6 x--> 15
9 --- 10 9 --- 10
9 --- 11 9 --- 11
@ -66,36 +80,67 @@ flowchart LR
9 --- 16 9 --- 16
9 --- 17 9 --- 17
9 --- 18 9 --- 18
11 --- 20 9 --- 19
16 <--x 11 9 --- 20
9 --- 21
9 --- 22
9 --- 23
11 --- 25
16 <--x 10
16 <--x 14 16 <--x 14
17 <--x 12 17 <--x 10
17 <--x 14 17 <--x 13
18 <--x 13 18 <--x 11
18 <--x 14 18 <--x 14
20 --- 21 19 <--x 10
20 --- 22 19 <--x 11
20 --- 23 20 <--x 12
20 --- 24 20 <--x 14
20 ---- 26
20 --- 25
21 --- 29
21 --- 32
21 <--x 11 21 <--x 11
22 --- 28 21 <--x 12
22 --- 31 22 <--x 13
22 <--x 11 22 <--x 14
23 --- 27 23 <--x 12
23 <--x 11 23 <--x 13
26 --- 27 25 --- 26
26 --- 28 25 --- 27
26 --- 29 25 --- 28
26 --- 30 25 --- 29
26 --- 31 25 ---- 31
26 --- 32 25 --- 30
31 <--x 28 26 --- 34
31 <--x 30 26 --- 40
32 <--x 29 26 --- 41
32 <--x 30 26 <--x 11
11 <--x 33 27 --- 33
27 --- 38
27 --- 39
27 <--x 11
28 --- 32
28 --- 36
28 --- 37
28 <--x 11
31 --- 32
31 --- 33
31 --- 34
31 --- 35
31 --- 36
31 --- 37
31 --- 38
31 --- 39
31 --- 40
31 --- 41
36 <--x 32
36 <--x 35
37 <--x 32
37 <--x 34
38 <--x 33
38 <--x 35
39 <--x 32
39 <--x 33
40 <--x 34
40 <--x 35
41 <--x 33
41 <--x 34
11 <--x 42
``` ```

View File

@ -207,6 +207,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -217,6 +226,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -249,19 +267,19 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -292,15 +310,6 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -311,6 +320,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -330,24 +348,6 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -493,6 +493,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -503,6 +512,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -535,19 +553,19 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -578,15 +596,6 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -597,6 +606,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -616,24 +634,6 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -779,6 +779,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -789,6 +798,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -821,19 +839,19 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -864,15 +882,6 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -883,6 +892,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -902,24 +920,6 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1065,6 +1065,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1075,6 +1084,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1107,19 +1125,19 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1150,15 +1168,6 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1169,6 +1178,15 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1179,24 +1197,6 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -8,29 +8,29 @@ flowchart LR
6["Segment<br>[191, 198, 0]"] 6["Segment<br>[191, 198, 0]"]
7[Solid2d] 7[Solid2d]
end end
subgraph path16 [Path] subgraph path20 [Path]
16["Path<br>[300, 330, 0]"] 20["Path<br>[300, 330, 0]"]
17["Segment<br>[336, 354, 0]"] 21["Segment<br>[336, 354, 0]"]
18["Segment<br>[360, 379, 0]"] 22["Segment<br>[360, 379, 0]"]
19["Segment<br>[385, 441, 0]"] 23["Segment<br>[385, 441, 0]"]
20["Segment<br>[447, 454, 0]"] 24["Segment<br>[447, 454, 0]"]
21[Solid2d] 25[Solid2d]
end end
subgraph path29 [Path] subgraph path37 [Path]
29["Path<br>[556, 583, 0]"] 37["Path<br>[556, 583, 0]"]
30["Segment<br>[589, 623, 0]"] 38["Segment<br>[589, 623, 0]"]
31["Segment<br>[629, 648, 0]"] 39["Segment<br>[629, 648, 0]"]
32["Segment<br>[654, 710, 0]"] 40["Segment<br>[654, 710, 0]"]
33["Segment<br>[716, 723, 0]"] 41["Segment<br>[716, 723, 0]"]
34[Solid2d] 42[Solid2d]
end end
subgraph path42 [Path] subgraph path54 [Path]
42["Path<br>[825, 852, 0]"] 54["Path<br>[825, 852, 0]"]
43["Segment<br>[858, 878, 0]"] 55["Segment<br>[858, 878, 0]"]
44["Segment<br>[884, 905, 0]"] 56["Segment<br>[884, 905, 0]"]
45["Segment<br>[911, 967, 0]"] 57["Segment<br>[911, 967, 0]"]
46["Segment<br>[973, 980, 0]"] 58["Segment<br>[973, 980, 0]"]
47[Solid2d] 59[Solid2d]
end end
1["Plane<br>[12, 29, 0]"] 1["Plane<br>[12, 29, 0]"]
8["Sweep Extrusion<br>[212, 242, 0]"] 8["Sweep Extrusion<br>[212, 242, 0]"]
@ -40,31 +40,47 @@ flowchart LR
12["Cap Start"] 12["Cap Start"]
13["Cap End"] 13["Cap End"]
14["SweepEdge Opposite"] 14["SweepEdge Opposite"]
15["SweepEdge Opposite"] 15["SweepEdge Adjacent"]
22["Sweep Extrusion<br>[468, 498, 0]"] 16["SweepEdge Opposite"]
23[Wall] 17["SweepEdge Adjacent"]
24[Wall] 18["SweepEdge Opposite"]
25[Wall] 19["SweepEdge Adjacent"]
26["Cap End"] 26["Sweep Extrusion<br>[468, 498, 0]"]
27["SweepEdge Opposite"] 27[Wall]
28["SweepEdge Opposite"] 28[Wall]
35["Sweep Extrusion<br>[737, 767, 0]"] 29[Wall]
36[Wall] 30["Cap End"]
37[Wall] 31["SweepEdge Opposite"]
38[Wall] 32["SweepEdge Adjacent"]
39["Cap End"] 33["SweepEdge Opposite"]
40["SweepEdge Opposite"] 34["SweepEdge Adjacent"]
41["SweepEdge Opposite"] 35["SweepEdge Opposite"]
48["Sweep Extrusion<br>[994, 1024, 0]"] 36["SweepEdge Adjacent"]
49[Wall] 43["Sweep Extrusion<br>[737, 767, 0]"]
50[Wall] 44[Wall]
51[Wall] 45[Wall]
52["Cap End"] 46[Wall]
53["SweepEdge Opposite"] 47["Cap End"]
54["SweepEdge Opposite"] 48["SweepEdge Opposite"]
55["StartSketchOnFace<br>[255, 294, 0]"] 49["SweepEdge Adjacent"]
56["StartSketchOnFace<br>[511, 550, 0]"] 50["SweepEdge Opposite"]
57["StartSketchOnFace<br>[780, 819, 0]"] 51["SweepEdge Adjacent"]
52["SweepEdge Opposite"]
53["SweepEdge Adjacent"]
60["Sweep Extrusion<br>[994, 1024, 0]"]
61[Wall]
62[Wall]
63[Wall]
64["Cap End"]
65["SweepEdge Opposite"]
66["SweepEdge Adjacent"]
67["SweepEdge Opposite"]
68["SweepEdge Adjacent"]
69["SweepEdge Opposite"]
70["SweepEdge Adjacent"]
71["StartSketchOnFace<br>[255, 294, 0]"]
72["StartSketchOnFace<br>[511, 550, 0]"]
73["StartSketchOnFace<br>[780, 819, 0]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -73,12 +89,16 @@ flowchart LR
2 ---- 8 2 ---- 8
2 --- 7 2 --- 7
3 --- 11 3 --- 11
3 --- 15 3 --- 18
3 --- 19
3 x--> 12 3 x--> 12
4 --- 10 4 --- 10
4 --- 14 4 --- 16
4 --- 17
4 x--> 12 4 x--> 12
5 --- 9 5 --- 9
5 --- 14
5 --- 15
5 x--> 12 5 x--> 12
8 --- 9 8 --- 9
8 --- 10 8 --- 10
@ -87,86 +107,146 @@ flowchart LR
8 --- 13 8 --- 13
8 --- 14 8 --- 14
8 --- 15 8 --- 15
10 --- 16 8 --- 16
14 <--x 10 8 --- 17
8 --- 18
8 --- 19
10 --- 20
14 <--x 9
14 <--x 13 14 <--x 13
15 <--x 9
15 <--x 11 15 <--x 11
15 <--x 13 16 <--x 10
16 --- 17 16 <--x 13
16 --- 18 17 <--x 9
16 --- 19
16 --- 20
16 ---- 22
16 --- 21
17 --- 25
17 --- 28
17 <--x 10 17 <--x 10
18 --- 24 18 <--x 11
18 --- 27 18 <--x 13
18 <--x 10
19 --- 23
19 <--x 10 19 <--x 10
22 --- 23 19 <--x 11
22 --- 24 20 --- 21
22 --- 25 20 --- 22
22 --- 26 20 --- 23
22 --- 27 20 --- 24
20 ---- 26
20 --- 25
21 --- 29
21 --- 35
21 --- 36
21 <--x 10
22 --- 28 22 --- 28
22 --- 33
22 --- 34
22 <--x 10
23 --- 27
23 --- 31
23 --- 32
23 <--x 10
26 --- 27
26 --- 28
26 --- 29 26 --- 29
27 <--x 24 26 --- 30
27 <--x 26 26 --- 31
28 <--x 25 26 --- 32
28 <--x 26 26 --- 33
29 --- 30 26 --- 34
29 --- 31 26 --- 35
29 --- 32 26 --- 36
29 --- 33 30 --- 37
29 ---- 35 31 <--x 27
29 --- 34 31 <--x 30
30 --- 38 32 <--x 27
30 --- 41 32 <--x 29
30 <--x 26 33 <--x 28
31 --- 37 33 <--x 30
31 --- 40 34 <--x 27
31 <--x 26 34 <--x 28
32 --- 36 35 <--x 29
32 <--x 26 35 <--x 30
35 --- 36 36 <--x 28
35 --- 37 36 <--x 29
35 --- 38 37 --- 38
35 --- 39 37 --- 39
35 --- 40 37 --- 40
35 --- 41 37 --- 41
38 --- 42 37 ---- 43
40 <--x 37 37 --- 42
40 <--x 39 38 --- 46
41 <--x 38 38 --- 52
41 <--x 39 38 --- 53
42 --- 43 38 <--x 30
42 --- 44 39 --- 45
42 --- 45 39 --- 50
42 --- 46 39 --- 51
42 ---- 48 39 <--x 30
42 --- 47 40 --- 44
40 --- 48
40 --- 49
40 <--x 30
43 --- 44
43 --- 45
43 --- 46
43 --- 47
43 --- 48
43 --- 49
43 --- 50
43 --- 51 43 --- 51
43 --- 54 43 --- 52
43 <--x 38 43 --- 53
44 --- 50 46 --- 54
44 --- 53 48 <--x 44
44 <--x 38 48 <--x 47
45 --- 49 49 <--x 44
45 <--x 38 49 <--x 46
48 --- 49 50 <--x 45
48 --- 50 50 <--x 47
48 --- 51 51 <--x 44
48 --- 52 51 <--x 45
48 --- 53 52 <--x 46
48 --- 54 52 <--x 47
53 <--x 50 53 <--x 45
53 <--x 52 53 <--x 46
54 <--x 51 54 --- 55
54 <--x 52 54 --- 56
10 <--x 55 54 --- 57
26 <--x 56 54 --- 58
38 <--x 57 54 ---- 60
54 --- 59
55 --- 63
55 --- 69
55 --- 70
55 <--x 46
56 --- 62
56 --- 67
56 --- 68
56 <--x 46
57 --- 61
57 --- 65
57 --- 66
57 <--x 46
60 --- 61
60 --- 62
60 --- 63
60 --- 64
60 --- 65
60 --- 66
60 --- 67
60 --- 68
60 --- 69
60 --- 70
65 <--x 61
65 <--x 64
66 <--x 61
66 <--x 63
67 <--x 62
67 <--x 64
68 <--x 61
68 <--x 62
69 <--x 63
69 <--x 64
70 <--x 62
70 <--x 63
10 <--x 71
30 <--x 72
46 <--x 73
``` ```

View File

@ -224,6 +224,15 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -234,6 +243,15 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -266,19 +284,19 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -313,19 +331,19 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -356,15 +374,6 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -375,6 +384,15 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -394,24 +412,6 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -607,6 +607,15 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -617,6 +626,15 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -649,19 +667,19 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -696,19 +714,19 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -739,15 +757,6 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -758,6 +767,15 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -768,24 +786,6 @@ description: Artifact commands assembly_mixed_units_cubes.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -9,14 +9,14 @@ flowchart LR
7["Segment<br>[255, 262, 6]"] 7["Segment<br>[255, 262, 6]"]
8[Solid2d] 8[Solid2d]
end end
subgraph path20 [Path] subgraph path25 [Path]
20["Path<br>[76, 114, 7]"] 25["Path<br>[76, 114, 7]"]
21["Segment<br>[120, 137, 7]"] 26["Segment<br>[120, 137, 7]"]
22["Segment<br>[143, 161, 7]"] 27["Segment<br>[143, 161, 7]"]
23["Segment<br>[167, 185, 7]"] 28["Segment<br>[167, 185, 7]"]
24["Segment<br>[191, 247, 7]"] 29["Segment<br>[191, 247, 7]"]
25["Segment<br>[253, 260, 7]"] 30["Segment<br>[253, 260, 7]"]
26[Solid2d] 31[Solid2d]
end end
1["Plane<br>[47, 66, 6]"] 1["Plane<br>[47, 66, 6]"]
9["Sweep Extrusion<br>[268, 290, 6]"] 9["Sweep Extrusion<br>[268, 290, 6]"]
@ -27,19 +27,29 @@ flowchart LR
14["Cap Start"] 14["Cap Start"]
15["Cap End"] 15["Cap End"]
16["SweepEdge Opposite"] 16["SweepEdge Opposite"]
17["SweepEdge Opposite"] 17["SweepEdge Adjacent"]
18["SweepEdge Opposite"] 18["SweepEdge Opposite"]
19["Plane<br>[47, 66, 7]"] 19["SweepEdge Adjacent"]
27["Sweep Extrusion<br>[266, 288, 7]"] 20["SweepEdge Opposite"]
28[Wall] 21["SweepEdge Adjacent"]
29[Wall] 22["SweepEdge Opposite"]
30[Wall] 23["SweepEdge Adjacent"]
31[Wall] 24["Plane<br>[47, 66, 7]"]
32["Cap Start"] 32["Sweep Extrusion<br>[266, 288, 7]"]
33["Cap End"] 33[Wall]
34["SweepEdge Opposite"] 34[Wall]
35["SweepEdge Opposite"] 35[Wall]
36["SweepEdge Opposite"] 36[Wall]
37["Cap Start"]
38["Cap End"]
39["SweepEdge Opposite"]
40["SweepEdge Adjacent"]
41["SweepEdge Opposite"]
42["SweepEdge Adjacent"]
43["SweepEdge Opposite"]
44["SweepEdge Adjacent"]
45["SweepEdge Opposite"]
46["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -49,15 +59,20 @@ flowchart LR
2 ---- 9 2 ---- 9
2 --- 8 2 --- 8
3 --- 13 3 --- 13
3 --- 18 3 --- 22
3 --- 23
3 x--> 14 3 x--> 14
4 --- 12 4 --- 12
4 --- 17 4 --- 20
4 --- 21
4 x--> 14 4 x--> 14
5 --- 11 5 --- 11
5 --- 16 5 --- 18
5 --- 19
5 x--> 14 5 x--> 14
6 --- 10 6 --- 10
6 --- 16
6 --- 17
6 x--> 14 6 x--> 14
9 --- 10 9 --- 10
9 --- 11 9 --- 11
@ -68,44 +83,79 @@ flowchart LR
9 --- 16 9 --- 16
9 --- 17 9 --- 17
9 --- 18 9 --- 18
16 <--x 11 9 --- 19
9 --- 20
9 --- 21
9 --- 22
9 --- 23
16 <--x 10
16 <--x 15 16 <--x 15
17 <--x 12 17 <--x 10
17 <--x 15 17 <--x 13
18 <--x 13 18 <--x 11
18 <--x 15 18 <--x 15
19 --- 20 19 <--x 10
20 --- 21 19 <--x 11
20 --- 22 20 <--x 12
20 --- 23 20 <--x 15
20 --- 24 21 <--x 11
20 --- 25 21 <--x 12
20 ---- 27 22 <--x 13
20 --- 26 22 <--x 15
21 --- 31 23 <--x 12
21 --- 36 23 <--x 13
21 x--> 32 24 --- 25
22 --- 30 25 --- 26
22 --- 35 25 --- 27
22 x--> 32 25 --- 28
23 --- 29 25 --- 29
23 --- 34 25 --- 30
23 x--> 32 25 ---- 32
24 --- 28 25 --- 31
24 x--> 32 26 --- 36
27 --- 28 26 --- 45
27 --- 29 26 --- 46
27 --- 30 26 x--> 37
27 --- 31
27 --- 32
27 --- 33
27 --- 34
27 --- 35 27 --- 35
27 --- 36 27 --- 43
34 <--x 29 27 --- 44
34 <--x 33 27 x--> 37
35 <--x 30 28 --- 34
35 <--x 33 28 --- 41
36 <--x 31 28 --- 42
36 <--x 33 28 x--> 37
29 --- 33
29 --- 39
29 --- 40
29 x--> 37
32 --- 33
32 --- 34
32 --- 35
32 --- 36
32 --- 37
32 --- 38
32 --- 39
32 --- 40
32 --- 41
32 --- 42
32 --- 43
32 --- 44
32 --- 45
32 --- 46
39 <--x 33
39 <--x 38
40 <--x 33
40 <--x 36
41 <--x 34
41 <--x 38
42 <--x 33
42 <--x 34
43 <--x 35
43 <--x 38
44 <--x 34
44 <--x 35
45 <--x 36
45 <--x 38
46 <--x 35
46 <--x 36
``` ```

View File

@ -207,6 +207,15 @@ description: Artifact commands basic_fillet_cube_close_opposite.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -217,6 +226,15 @@ description: Artifact commands basic_fillet_cube_close_opposite.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -249,19 +267,19 @@ description: Artifact commands basic_fillet_cube_close_opposite.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -296,19 +314,19 @@ description: Artifact commands basic_fillet_cube_close_opposite.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -339,15 +357,6 @@ description: Artifact commands basic_fillet_cube_close_opposite.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -358,6 +367,15 @@ description: Artifact commands basic_fillet_cube_close_opposite.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -377,24 +395,6 @@ description: Artifact commands basic_fillet_cube_close_opposite.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -17,11 +17,15 @@ flowchart LR
13["Cap Start"] 13["Cap Start"]
14["Cap End"] 14["Cap End"]
15["SweepEdge Opposite"] 15["SweepEdge Opposite"]
16["SweepEdge Opposite"] 16["SweepEdge Adjacent"]
17["SweepEdge Opposite"] 17["SweepEdge Opposite"]
18["SweepEdge Opposite"] 18["SweepEdge Adjacent"]
19["EdgeCut Fillet<br>[223, 283, 0]"] 19["SweepEdge Opposite"]
20["EdgeCut Fillet<br>[223, 283, 0]"] 20["SweepEdge Adjacent"]
21["SweepEdge Opposite"]
22["SweepEdge Adjacent"]
23["EdgeCut Fillet<br>[223, 283, 0]"]
24["EdgeCut Fillet<br>[223, 283, 0]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -30,17 +34,21 @@ flowchart LR
2 ---- 8 2 ---- 8
2 --- 7 2 --- 7
3 --- 12 3 --- 12
3 --- 17 3 --- 21
3 --- 22
3 x--> 13 3 x--> 13
4 --- 11 4 --- 11
4 --- 16 4 --- 19
4 --- 20
4 x--> 13 4 x--> 13
5 --- 10 5 --- 10
5 --- 15 5 --- 17
5 --- 18
5 x--> 13 5 x--> 13
6 --- 9 6 --- 9
6 --- 18 6 --- 15
6 --- 19 6 --- 16
6 --- 23
6 x--> 13 6 x--> 13
8 --- 9 8 --- 9
8 --- 10 8 --- 10
@ -52,11 +60,23 @@ flowchart LR
8 --- 16 8 --- 16
8 --- 17 8 --- 17
8 --- 18 8 --- 18
15 <--x 10 8 --- 19
15 <--x 14 8 --- 20
16 <--x 11 8 --- 21
16 <--x 14 8 --- 22
17 <--x 12 16 <--x 9
16 <--x 12
17 <--x 10
17 <--x 14 17 <--x 14
18 <--x 20 18 <--x 9
18 <--x 10
19 <--x 11
19 <--x 14
20 <--x 10
20 <--x 11
21 <--x 12
21 <--x 14
22 <--x 11
22 <--x 12
15 <--x 24
``` ```

View File

@ -207,6 +207,15 @@ description: Artifact commands basic_fillet_cube_end.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -217,6 +226,15 @@ description: Artifact commands basic_fillet_cube_end.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -249,19 +267,19 @@ description: Artifact commands basic_fillet_cube_end.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -296,19 +314,19 @@ description: Artifact commands basic_fillet_cube_end.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -339,15 +357,6 @@ description: Artifact commands basic_fillet_cube_end.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -358,6 +367,15 @@ description: Artifact commands basic_fillet_cube_end.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -377,24 +395,6 @@ description: Artifact commands basic_fillet_cube_end.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -17,10 +17,15 @@ flowchart LR
13["Cap Start"] 13["Cap Start"]
14["Cap End"] 14["Cap End"]
15["SweepEdge Opposite"] 15["SweepEdge Opposite"]
16["SweepEdge Opposite"] 16["SweepEdge Adjacent"]
17["SweepEdge Opposite"] 17["SweepEdge Opposite"]
18["EdgeCut Fillet<br>[211, 269, 0]"] 18["SweepEdge Adjacent"]
19["EdgeCut Fillet<br>[211, 269, 0]"] 19["SweepEdge Opposite"]
20["SweepEdge Adjacent"]
21["SweepEdge Opposite"]
22["SweepEdge Adjacent"]
23["EdgeCut Fillet<br>[211, 269, 0]"]
24["EdgeCut Fillet<br>[211, 269, 0]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -29,16 +34,21 @@ flowchart LR
2 ---- 8 2 ---- 8
2 --- 7 2 --- 7
3 --- 12 3 --- 12
3 --- 17 3 --- 21
3 --- 18 3 --- 22
3 --- 23
3 x--> 13 3 x--> 13
4 --- 11 4 --- 11
4 --- 16 4 --- 19
4 --- 20
4 x--> 13 4 x--> 13
5 --- 10 5 --- 10
5 --- 15 5 --- 17
5 --- 18
5 x--> 13 5 x--> 13
6 --- 9 6 --- 9
6 --- 15
6 --- 16
6 x--> 13 6 x--> 13
8 --- 9 8 --- 9
8 --- 10 8 --- 10
@ -49,9 +59,24 @@ flowchart LR
8 --- 15 8 --- 15
8 --- 16 8 --- 16
8 --- 17 8 --- 17
15 <--x 10 8 --- 18
8 --- 19
8 --- 20
8 --- 21
8 --- 22
15 <--x 9
15 <--x 14 15 <--x 14
16 <--x 11 16 <--x 9
16 <--x 14 16 <--x 12
17 <--x 19 17 <--x 10
17 <--x 14
18 <--x 9
18 <--x 10
19 <--x 11
19 <--x 14
20 <--x 10
20 <--x 11
22 <--x 11
22 <--x 12
21 <--x 24
``` ```

View File

@ -207,6 +207,15 @@ description: Artifact commands basic_fillet_cube_next_adjacent.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -217,6 +226,15 @@ description: Artifact commands basic_fillet_cube_next_adjacent.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -249,19 +267,19 @@ description: Artifact commands basic_fillet_cube_next_adjacent.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -296,19 +314,19 @@ description: Artifact commands basic_fillet_cube_next_adjacent.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -339,15 +357,6 @@ description: Artifact commands basic_fillet_cube_next_adjacent.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -358,6 +367,15 @@ description: Artifact commands basic_fillet_cube_next_adjacent.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -377,24 +395,6 @@ description: Artifact commands basic_fillet_cube_next_adjacent.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -17,9 +17,14 @@ flowchart LR
13["Cap Start"] 13["Cap Start"]
14["Cap End"] 14["Cap End"]
15["SweepEdge Opposite"] 15["SweepEdge Opposite"]
16["SweepEdge Opposite"] 16["SweepEdge Adjacent"]
17["SweepEdge Opposite"] 17["SweepEdge Opposite"]
18["SweepEdge Adjacent"] 18["SweepEdge Adjacent"]
19["SweepEdge Opposite"]
20["SweepEdge Adjacent"]
21["SweepEdge Opposite"]
22["SweepEdge Adjacent"]
23["EdgeCut Fillet<br>[238, 294, 0]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -28,16 +33,20 @@ flowchart LR
2 ---- 8 2 ---- 8
2 --- 7 2 --- 7
3 --- 12 3 --- 12
3 --- 17 3 --- 21
3 --- 22
3 x--> 13 3 x--> 13
4 --- 11 4 --- 11
4 --- 16 4 --- 19
4 --- 20
4 x--> 13 4 x--> 13
5 --- 10 5 --- 10
5 --- 15 5 --- 17
5 --- 18
5 x--> 13 5 x--> 13
6 --- 9 6 --- 9
6 --- 18 6 --- 15
6 --- 16
6 x--> 13 6 x--> 13
8 --- 9 8 --- 9
8 --- 10 8 --- 10
@ -49,10 +58,23 @@ flowchart LR
8 --- 16 8 --- 16
8 --- 17 8 --- 17
8 --- 18 8 --- 18
15 <--x 10 8 --- 19
8 --- 20
8 --- 21
8 --- 22
15 <--x 9
15 <--x 14 15 <--x 14
16 <--x 11 17 <--x 10
16 <--x 14
17 <--x 12
17 <--x 14 17 <--x 14
18 <--x 9
18 <--x 10
19 <--x 11
19 <--x 14
20 <--x 10
20 <--x 11
21 <--x 12
21 <--x 14
22 <--x 11
22 <--x 12
16 <--x 23
``` ```

View File

@ -207,6 +207,15 @@ description: Artifact commands basic_fillet_cube_previous_adjacent.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -217,6 +226,15 @@ description: Artifact commands basic_fillet_cube_previous_adjacent.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -249,19 +267,19 @@ description: Artifact commands basic_fillet_cube_previous_adjacent.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -296,19 +314,19 @@ description: Artifact commands basic_fillet_cube_previous_adjacent.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -339,15 +357,6 @@ description: Artifact commands basic_fillet_cube_previous_adjacent.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -358,6 +367,15 @@ description: Artifact commands basic_fillet_cube_previous_adjacent.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -377,24 +395,6 @@ description: Artifact commands basic_fillet_cube_previous_adjacent.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -17,8 +17,14 @@ flowchart LR
13["Cap Start"] 13["Cap Start"]
14["Cap End"] 14["Cap End"]
15["SweepEdge Opposite"] 15["SweepEdge Opposite"]
16["SweepEdge Opposite"] 16["SweepEdge Adjacent"]
17["SweepEdge Opposite"] 17["SweepEdge Opposite"]
18["SweepEdge Adjacent"]
19["SweepEdge Opposite"]
20["SweepEdge Adjacent"]
21["SweepEdge Opposite"]
22["SweepEdge Adjacent"]
23["EdgeCut Fillet<br>[238, 298, 0]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -27,15 +33,20 @@ flowchart LR
2 ---- 8 2 ---- 8
2 --- 7 2 --- 7
3 --- 12 3 --- 12
3 --- 17 3 --- 21
3 --- 22
3 x--> 13 3 x--> 13
4 --- 11 4 --- 11
4 --- 16 4 --- 19
4 --- 20
4 x--> 13 4 x--> 13
5 --- 10 5 --- 10
5 --- 15 5 --- 17
5 --- 18
5 x--> 13 5 x--> 13
6 --- 9 6 --- 9
6 --- 15
6 --- 16
6 x--> 13 6 x--> 13
8 --- 9 8 --- 9
8 --- 10 8 --- 10
@ -46,10 +57,26 @@ flowchart LR
8 --- 15 8 --- 15
8 --- 16 8 --- 16
8 --- 17 8 --- 17
15 <--x 10 8 --- 18
8 --- 19
8 --- 20
8 --- 21
8 --- 22
15 <--x 9
15 <--x 14 15 <--x 14
16 <--x 11 16 <--x 9
16 <--x 14 16 <--x 12
17 <--x 12 17 <--x 10
17 <--x 14 17 <--x 14
18 <--x 9
18 <--x 10
19 <--x 11
19 <--x 14
20 <--x 10
20 <--x 11
21 <--x 12
21 <--x 14
22 <--x 11
22 <--x 12
18 <--x 23
``` ```

View File

@ -207,6 +207,15 @@ description: Artifact commands basic_fillet_cube_start.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -217,6 +226,15 @@ description: Artifact commands basic_fillet_cube_start.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -249,19 +267,19 @@ description: Artifact commands basic_fillet_cube_start.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -296,19 +314,19 @@ description: Artifact commands basic_fillet_cube_start.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -339,15 +357,6 @@ description: Artifact commands basic_fillet_cube_start.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -358,6 +367,15 @@ description: Artifact commands basic_fillet_cube_start.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -377,24 +395,6 @@ description: Artifact commands basic_fillet_cube_start.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -17,10 +17,15 @@ flowchart LR
13["Cap Start"] 13["Cap Start"]
14["Cap End"] 14["Cap End"]
15["SweepEdge Opposite"] 15["SweepEdge Opposite"]
16["SweepEdge Opposite"] 16["SweepEdge Adjacent"]
17["SweepEdge Opposite"] 17["SweepEdge Opposite"]
18["EdgeCut Fillet<br>[211, 253, 0]"] 18["SweepEdge Adjacent"]
19["EdgeCut Fillet<br>[211, 253, 0]"] 19["SweepEdge Opposite"]
20["SweepEdge Adjacent"]
21["SweepEdge Opposite"]
22["SweepEdge Adjacent"]
23["EdgeCut Fillet<br>[211, 253, 0]"]
24["EdgeCut Fillet<br>[211, 253, 0]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -29,17 +34,22 @@ flowchart LR
2 ---- 8 2 ---- 8
2 --- 7 2 --- 7
3 --- 12 3 --- 12
3 --- 17 3 --- 21
3 --- 18 3 --- 22
3 --- 23
3 x--> 13 3 x--> 13
4 --- 11 4 --- 11
4 --- 16 4 --- 19
4 --- 20
4 x--> 13 4 x--> 13
5 --- 10 5 --- 10
5 --- 15 5 --- 17
5 --- 19 5 --- 18
5 --- 24
5 x--> 13 5 x--> 13
6 --- 9 6 --- 9
6 --- 15
6 --- 16
6 x--> 13 6 x--> 13
8 --- 9 8 --- 9
8 --- 10 8 --- 10
@ -50,10 +60,25 @@ flowchart LR
8 --- 15 8 --- 15
8 --- 16 8 --- 16
8 --- 17 8 --- 17
15 <--x 10 8 --- 18
8 --- 19
8 --- 20
8 --- 21
8 --- 22
15 <--x 9
15 <--x 14 15 <--x 14
16 <--x 11 16 <--x 9
16 <--x 14 16 <--x 12
17 <--x 12 17 <--x 10
17 <--x 14 17 <--x 14
18 <--x 9
18 <--x 10
19 <--x 11
19 <--x 14
20 <--x 10
20 <--x 11
21 <--x 12
21 <--x 14
22 <--x 11
22 <--x 12
``` ```

View File

@ -181,6 +181,15 @@ description: Artifact commands circle_three_point.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -191,6 +200,15 @@ description: Artifact commands circle_three_point.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -201,24 +219,6 @@ description: Artifact commands circle_three_point.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -10,13 +10,22 @@ flowchart LR
6[Wall] 6[Wall]
7["Cap Start"] 7["Cap Start"]
8["Cap End"] 8["Cap End"]
9["SweepEdge Opposite"]
10["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 ---- 5 2 ---- 5
2 --- 4 2 --- 4
3 --- 6 3 --- 6
3 --- 9
3 --- 10
3 x--> 7 3 x--> 7
5 --- 6 5 --- 6
5 --- 7 5 --- 7
5 --- 8 5 --- 8
5 --- 9
5 --- 10
9 <--x 6
9 <--x 8
10 <--x 6
``` ```

View File

@ -207,6 +207,15 @@ description: Artifact commands circular_pattern3d_a_pattern.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -217,6 +226,15 @@ description: Artifact commands circular_pattern3d_a_pattern.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -249,19 +267,19 @@ description: Artifact commands circular_pattern3d_a_pattern.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -296,19 +314,19 @@ description: Artifact commands circular_pattern3d_a_pattern.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -339,15 +357,6 @@ description: Artifact commands circular_pattern3d_a_pattern.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -358,6 +367,15 @@ description: Artifact commands circular_pattern3d_a_pattern.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -377,24 +395,6 @@ description: Artifact commands circular_pattern3d_a_pattern.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -17,8 +17,13 @@ flowchart LR
13["Cap Start"] 13["Cap Start"]
14["Cap End"] 14["Cap End"]
15["SweepEdge Opposite"] 15["SweepEdge Opposite"]
16["SweepEdge Opposite"] 16["SweepEdge Adjacent"]
17["SweepEdge Opposite"] 17["SweepEdge Opposite"]
18["SweepEdge Adjacent"]
19["SweepEdge Opposite"]
20["SweepEdge Adjacent"]
21["SweepEdge Opposite"]
22["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -27,15 +32,20 @@ flowchart LR
2 ---- 8 2 ---- 8
2 --- 7 2 --- 7
3 --- 12 3 --- 12
3 --- 17 3 --- 21
3 --- 22
3 x--> 13 3 x--> 13
4 --- 11 4 --- 11
4 --- 16 4 --- 19
4 --- 20
4 x--> 13 4 x--> 13
5 --- 10 5 --- 10
5 --- 15 5 --- 17
5 --- 18
5 x--> 13 5 x--> 13
6 --- 9 6 --- 9
6 --- 15
6 --- 16
6 x--> 13 6 x--> 13
8 --- 9 8 --- 9
8 --- 10 8 --- 10
@ -46,10 +56,25 @@ flowchart LR
8 --- 15 8 --- 15
8 --- 16 8 --- 16
8 --- 17 8 --- 17
15 <--x 10 8 --- 18
8 --- 19
8 --- 20
8 --- 21
8 --- 22
15 <--x 9
15 <--x 14 15 <--x 14
16 <--x 11 16 <--x 9
16 <--x 14 16 <--x 12
17 <--x 12 17 <--x 10
17 <--x 14 17 <--x 14
18 <--x 9
18 <--x 10
19 <--x 11
19 <--x 14
20 <--x 10
20 <--x 11
21 <--x 12
21 <--x 14
22 <--x 11
22 <--x 12
``` ```

View File

@ -207,6 +207,15 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -217,6 +226,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -249,19 +267,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -292,15 +310,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -311,6 +320,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -330,24 +348,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -846,6 +846,15 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -856,6 +865,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -888,19 +906,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -931,15 +949,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -950,6 +959,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -969,24 +987,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1034,6 +1034,15 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1044,6 +1053,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1076,19 +1094,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1119,15 +1137,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1138,6 +1147,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1157,24 +1175,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1727,6 +1727,15 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1737,6 +1746,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1769,19 +1787,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1816,19 +1834,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1859,15 +1877,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1878,6 +1887,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1897,24 +1915,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1947,6 +1947,15 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1957,6 +1966,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1989,19 +2007,19 @@ description: Artifact commands crazy_multi_profile.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -2032,15 +2050,6 @@ description: Artifact commands crazy_multi_profile.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -2051,6 +2060,15 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -2061,24 +2079,6 @@ description: Artifact commands crazy_multi_profile.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -8,76 +8,76 @@ flowchart LR
6["Segment<br>[243, 250, 0]"] 6["Segment<br>[243, 250, 0]"]
7[Solid2d] 7[Solid2d]
end end
subgraph path16 [Path] subgraph path20 [Path]
16["Path<br>[362, 405, 0]"] 20["Path<br>[362, 405, 0]"]
17["Segment<br>[411, 435, 0]"] 21["Segment<br>[411, 435, 0]"]
18["Segment<br>[441, 466, 0]"] 22["Segment<br>[441, 466, 0]"]
end end
subgraph path19 [Path] subgraph path23 [Path]
19["Path<br>[480, 522, 0]"] 23["Path<br>[480, 522, 0]"]
20["Segment<br>[528, 593, 0]"] 24["Segment<br>[528, 593, 0]"]
21["Segment<br>[599, 667, 0]"] 25["Segment<br>[599, 667, 0]"]
22["Segment<br>[673, 761, 0]"] 26["Segment<br>[673, 761, 0]"]
23["Segment<br>[767, 823, 0]"] 27["Segment<br>[767, 823, 0]"]
24["Segment<br>[829, 836, 0]"] 28["Segment<br>[829, 836, 0]"]
25[Solid2d] 29[Solid2d]
end end
subgraph path26 [Path] subgraph path30 [Path]
26["Path<br>[850, 892, 0]"] 30["Path<br>[850, 892, 0]"]
27["Segment<br>[898, 918, 0]"] 31["Segment<br>[898, 918, 0]"]
28["Segment<br>[924, 950, 0]"] 32["Segment<br>[924, 950, 0]"]
29["Segment<br>[956, 1012, 0]"] 33["Segment<br>[956, 1012, 0]"]
30["Segment<br>[1018, 1025, 0]"] 34["Segment<br>[1018, 1025, 0]"]
31[Solid2d] 35[Solid2d]
end end
subgraph path32 [Path] subgraph path36 [Path]
32["Path<br>[1039, 1094, 0]"] 36["Path<br>[1039, 1094, 0]"]
33["Segment<br>[1039, 1094, 0]"] 37["Segment<br>[1039, 1094, 0]"]
34[Solid2d] 38[Solid2d]
end end
subgraph path35 [Path] subgraph path39 [Path]
35["Path<br>[1108, 1150, 0]"] 39["Path<br>[1108, 1150, 0]"]
36["Segment<br>[1156, 1180, 0]"] 40["Segment<br>[1156, 1180, 0]"]
37["Segment<br>[1186, 1211, 0]"] 41["Segment<br>[1186, 1211, 0]"]
38["Segment<br>[1217, 1273, 0]"] 42["Segment<br>[1217, 1273, 0]"]
39["Segment<br>[1279, 1286, 0]"] 43["Segment<br>[1279, 1286, 0]"]
40[Solid2d] 44[Solid2d]
end end
subgraph path52 [Path] subgraph path59 [Path]
52["Path<br>[1456, 1497, 0]"] 59["Path<br>[1456, 1497, 0]"]
53["Segment<br>[1503, 1527, 0]"] 60["Segment<br>[1503, 1527, 0]"]
54["Segment<br>[1533, 1558, 0]"] 61["Segment<br>[1533, 1558, 0]"]
end end
subgraph path55 [Path] subgraph path62 [Path]
55["Path<br>[1572, 1614, 0]"] 62["Path<br>[1572, 1614, 0]"]
56["Segment<br>[1620, 1644, 0]"] 63["Segment<br>[1620, 1644, 0]"]
57["Segment<br>[1650, 1675, 0]"] 64["Segment<br>[1650, 1675, 0]"]
58["Segment<br>[1681, 1737, 0]"] 65["Segment<br>[1681, 1737, 0]"]
59["Segment<br>[1743, 1750, 0]"] 66["Segment<br>[1743, 1750, 0]"]
60[Solid2d] 67[Solid2d]
end end
subgraph path61 [Path] subgraph path68 [Path]
61["Path<br>[1764, 1806, 0]"] 68["Path<br>[1764, 1806, 0]"]
62["Segment<br>[1812, 1835, 0]"] 69["Segment<br>[1812, 1835, 0]"]
63["Segment<br>[1841, 1866, 0]"] 70["Segment<br>[1841, 1866, 0]"]
64["Segment<br>[1872, 1928, 0]"] 71["Segment<br>[1872, 1928, 0]"]
65["Segment<br>[1934, 1941, 0]"] 72["Segment<br>[1934, 1941, 0]"]
66[Solid2d] 73[Solid2d]
end end
subgraph path67 [Path] subgraph path74 [Path]
67["Path<br>[1955, 2011, 0]"] 74["Path<br>[1955, 2011, 0]"]
68["Segment<br>[1955, 2011, 0]"] 75["Segment<br>[1955, 2011, 0]"]
69[Solid2d]
end
subgraph path70 [Path]
70["Path<br>[2025, 2068, 0]"]
71["Segment<br>[2074, 2139, 0]"]
72["Segment<br>[2145, 2213, 0]"]
73["Segment<br>[2219, 2307, 0]"]
74["Segment<br>[2313, 2369, 0]"]
75["Segment<br>[2375, 2382, 0]"]
76[Solid2d] 76[Solid2d]
end end
subgraph path77 [Path]
77["Path<br>[2025, 2068, 0]"]
78["Segment<br>[2074, 2139, 0]"]
79["Segment<br>[2145, 2213, 0]"]
80["Segment<br>[2219, 2307, 0]"]
81["Segment<br>[2313, 2369, 0]"]
82["Segment<br>[2375, 2382, 0]"]
83[Solid2d]
end
1["Plane<br>[12, 29, 0]"] 1["Plane<br>[12, 29, 0]"]
8["Sweep Extrusion<br>[264, 296, 0]"] 8["Sweep Extrusion<br>[264, 296, 0]"]
9[Wall] 9[Wall]
@ -86,37 +86,53 @@ flowchart LR
12["Cap Start"] 12["Cap Start"]
13["Cap End"] 13["Cap End"]
14["SweepEdge Opposite"] 14["SweepEdge Opposite"]
15["SweepEdge Opposite"] 15["SweepEdge Adjacent"]
41["SweepEdge Adjacent"] 16["SweepEdge Opposite"]
42["Sweep RevolveAboutEdge<br>[1300, 1366, 0]"] 17["SweepEdge Adjacent"]
43["Sweep Extrusion<br>[1380, 1411, 0]"] 18["SweepEdge Opposite"]
44[Wall] 19["SweepEdge Adjacent"]
45[Wall] 45["Sweep RevolveAboutEdge<br>[1300, 1366, 0]"]
46[Wall] 46["Sweep Extrusion<br>[1380, 1411, 0]"]
47["Cap Start"] 47[Wall]
48["Cap End"] 48[Wall]
49["SweepEdge Opposite"] 49[Wall]
50["SweepEdge Opposite"] 50["Cap Start"]
51["Plane<br>[1424, 1442, 0]"] 51["Cap End"]
77["Sweep Extrusion<br>[2396, 2429, 0]"] 52["SweepEdge Opposite"]
78[Wall] 53["SweepEdge Adjacent"]
79[Wall] 54["SweepEdge Opposite"]
80[Wall] 55["SweepEdge Adjacent"]
81[Wall] 56["SweepEdge Opposite"]
82["Cap Start"] 57["SweepEdge Adjacent"]
83["Cap End"] 58["Plane<br>[1424, 1442, 0]"]
84["SweepEdge Opposite"] 84["Sweep Extrusion<br>[2396, 2429, 0]"]
85["SweepEdge Opposite"] 85[Wall]
86["SweepEdge Opposite"] 86[Wall]
87["Sweep RevolveAboutEdge<br>[2443, 2488, 0]"] 87[Wall]
88[Wall] 88[Wall]
89[Wall] 89["Cap Start"]
90[Wall] 90["Cap End"]
91["Cap Start"] 91["SweepEdge Opposite"]
92["Cap End"] 92["SweepEdge Adjacent"]
93["SweepEdge Opposite"] 93["SweepEdge Opposite"]
94["SweepEdge Opposite"] 94["SweepEdge Adjacent"]
95["StartSketchOnFace<br>[309, 348, 0]"] 95["SweepEdge Opposite"]
96["SweepEdge Adjacent"]
97["SweepEdge Opposite"]
98["SweepEdge Adjacent"]
99["Sweep RevolveAboutEdge<br>[2443, 2488, 0]"]
100[Wall]
101[Wall]
102[Wall]
103["Cap Start"]
104["Cap End"]
105["SweepEdge Opposite"]
106["SweepEdge Adjacent"]
107["SweepEdge Opposite"]
108["SweepEdge Adjacent"]
109["SweepEdge Opposite"]
110["SweepEdge Adjacent"]
111["StartSketchOnFace<br>[309, 348, 0]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -125,13 +141,16 @@ flowchart LR
2 ---- 8 2 ---- 8
2 --- 7 2 --- 7
3 --- 11 3 --- 11
3 --- 15 3 --- 18
3 --- 19
3 x--> 12 3 x--> 12
4 --- 10 4 --- 10
4 --- 14 4 --- 16
4 --- 41 4 --- 17
4 x--> 12 4 x--> 12
5 --- 9 5 --- 9
5 --- 14
5 --- 15
5 x--> 12 5 x--> 12
8 --- 9 8 --- 9
8 --- 10 8 --- 10
@ -140,130 +159,191 @@ flowchart LR
8 --- 13 8 --- 13
8 --- 14 8 --- 14
8 --- 15 8 --- 15
8 --- 41 8 --- 16
10 --- 16 8 --- 17
10 --- 19 8 --- 18
10 --- 26 8 --- 19
10 --- 32 10 --- 20
10 --- 35 10 --- 23
14 <--x 10 10 --- 30
10 --- 36
10 --- 39
14 <--x 9
14 <--x 13 14 <--x 13
15 <--x 9
15 <--x 11 15 <--x 11
15 <--x 13 16 <--x 10
16 --- 17 16 <--x 13
16 --- 18 17 <--x 9
19 --- 20 17 <--x 10
19 --- 21 18 <--x 11
19 --- 22 18 <--x 13
19 --- 23 19 <--x 10
19 --- 24 19 <--x 11
19 --- 25 20 --- 21
26 --- 27 20 --- 22
26 --- 28 23 --- 24
26 --- 29 23 --- 25
26 --- 30 23 --- 26
26 ---- 42 23 --- 27
26 --- 31 23 --- 28
32 --- 33 23 --- 29
32 --- 34 30 --- 31
35 --- 36 30 --- 32
35 --- 37 30 --- 33
35 --- 38 30 --- 34
35 --- 39 30 ---- 45
35 ---- 43 30 --- 35
35 --- 40 36 --- 37
36 --- 46 36 --- 38
36 --- 50 39 --- 40
36 x--> 47 39 --- 41
37 --- 45 39 --- 42
37 --- 49 39 --- 43
37 x--> 47 39 ---- 46
38 --- 44 39 --- 44
38 x--> 47 40 --- 49
41 <--x 9 40 --- 56
41 <--x 10 40 --- 57
43 --- 44 40 x--> 50
43 --- 45 41 --- 48
43 --- 46 41 --- 54
43 --- 47 41 --- 55
43 --- 48 41 x--> 50
43 --- 49 42 --- 47
43 --- 50 42 --- 52
49 <--x 45 42 --- 53
49 <--x 48 42 x--> 50
50 <--x 46 46 --- 47
50 <--x 48 46 --- 48
51 --- 52 46 --- 49
51 --- 55 46 --- 50
51 --- 61 46 --- 51
51 --- 67 46 --- 52
51 --- 70 46 --- 53
52 --- 53 46 --- 54
52 --- 54 46 --- 55
55 --- 56 46 --- 56
55 --- 57 46 --- 57
55 --- 58 52 <--x 47
55 --- 59 52 <--x 51
55 ---- 87 53 <--x 47
55 --- 60 53 <--x 49
56 --- 88 54 <--x 48
56 x--> 91 54 <--x 51
57 --- 89 55 <--x 47
57 --- 93 55 <--x 48
57 x--> 91 56 <--x 49
58 --- 90 56 <--x 51
58 --- 94 57 <--x 48
58 x--> 91 57 <--x 49
61 --- 62 58 --- 59
61 --- 63 58 --- 62
61 --- 64 58 --- 68
61 --- 65 58 --- 74
61 --- 66 58 --- 77
67 --- 68 59 --- 60
67 --- 69 59 --- 61
70 --- 71 62 --- 63
70 --- 72 62 --- 64
70 --- 73 62 --- 65
70 --- 74 62 --- 66
70 --- 75 62 ---- 99
70 ---- 77 62 --- 67
70 --- 76 63 --- 100
71 --- 81 63 --- 105
71 --- 86 63 --- 106
71 x--> 82 63 x--> 103
72 --- 80 64 --- 101
72 --- 85 64 --- 107
72 x--> 82 64 --- 108
73 --- 79 64 x--> 103
73 --- 84 65 --- 102
73 x--> 82 65 --- 109
74 --- 78 65 --- 110
74 x--> 82 65 x--> 103
68 --- 69
68 --- 70
68 --- 71
68 --- 72
68 --- 73
74 --- 75
74 --- 76
77 --- 78 77 --- 78
77 --- 79 77 --- 79
77 --- 80 77 --- 80
77 --- 81 77 --- 81
77 --- 82 77 --- 82
77 ---- 84
77 --- 83 77 --- 83
77 --- 84 78 --- 88
77 --- 85 78 --- 97
77 --- 86 78 --- 98
84 <--x 79 78 x--> 89
84 <--x 83 79 --- 87
85 <--x 80 79 --- 95
85 <--x 83 79 --- 96
86 <--x 81 79 x--> 89
86 <--x 83 80 --- 86
87 --- 88 80 --- 93
87 --- 89 80 --- 94
87 --- 90 80 x--> 89
87 --- 91 81 --- 85
87 --- 92 81 --- 91
87 --- 93 81 --- 92
87 --- 94 81 x--> 89
93 <--x 89 84 --- 85
93 <--x 92 84 --- 86
94 <--x 90 84 --- 87
94 <--x 92 84 --- 88
10 <--x 95 84 --- 89
84 --- 90
84 --- 91
84 --- 92
84 --- 93
84 --- 94
84 --- 95
84 --- 96
84 --- 97
84 --- 98
91 <--x 85
91 <--x 90
92 <--x 85
92 <--x 88
93 <--x 86
93 <--x 90
94 <--x 85
94 <--x 86
95 <--x 87
95 <--x 90
96 <--x 86
96 <--x 87
97 <--x 88
97 <--x 90
98 <--x 87
98 <--x 88
99 --- 100
99 --- 101
99 --- 102
99 --- 103
99 --- 104
99 --- 105
99 --- 106
99 --- 107
99 --- 108
99 --- 109
99 --- 110
105 <--x 100
105 <--x 104
106 <--x 100
106 <--x 101
107 <--x 101
107 <--x 104
108 <--x 101
108 <--x 102
109 <--x 102
109 <--x 104
110 <--x 102
110 <--x 100
10 <--x 111
``` ```

View File

@ -224,6 +224,15 @@ description: Artifact commands cube.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -234,6 +243,15 @@ description: Artifact commands cube.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -266,19 +284,19 @@ description: Artifact commands cube.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -313,19 +331,19 @@ description: Artifact commands cube.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -356,15 +374,6 @@ description: Artifact commands cube.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -375,6 +384,15 @@ description: Artifact commands cube.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -385,24 +403,6 @@ description: Artifact commands cube.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -18,8 +18,13 @@ flowchart LR
14["Cap Start"] 14["Cap Start"]
15["Cap End"] 15["Cap End"]
16["SweepEdge Opposite"] 16["SweepEdge Opposite"]
17["SweepEdge Opposite"] 17["SweepEdge Adjacent"]
18["SweepEdge Opposite"] 18["SweepEdge Opposite"]
19["SweepEdge Adjacent"]
20["SweepEdge Opposite"]
21["SweepEdge Adjacent"]
22["SweepEdge Opposite"]
23["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -29,15 +34,20 @@ flowchart LR
2 ---- 9 2 ---- 9
2 --- 8 2 --- 8
3 --- 13 3 --- 13
3 --- 18 3 --- 22
3 --- 23
3 x--> 14 3 x--> 14
4 --- 12 4 --- 12
4 --- 17 4 --- 20
4 --- 21
4 x--> 14 4 x--> 14
5 --- 11 5 --- 11
5 --- 16 5 --- 18
5 --- 19
5 x--> 14 5 x--> 14
6 --- 10 6 --- 10
6 --- 16
6 --- 17
6 x--> 14 6 x--> 14
9 --- 10 9 --- 10
9 --- 11 9 --- 11
@ -48,10 +58,25 @@ flowchart LR
9 --- 16 9 --- 16
9 --- 17 9 --- 17
9 --- 18 9 --- 18
16 <--x 11 9 --- 19
9 --- 20
9 --- 21
9 --- 22
9 --- 23
16 <--x 10
16 <--x 15 16 <--x 15
17 <--x 12 17 <--x 10
17 <--x 15 17 <--x 13
18 <--x 13 18 <--x 11
18 <--x 15 18 <--x 15
19 <--x 10
19 <--x 11
20 <--x 12
20 <--x 15
21 <--x 11
21 <--x 12
22 <--x 13
22 <--x 15
23 <--x 12
23 <--x 13
``` ```

View File

@ -224,6 +224,15 @@ description: Artifact commands cube_with_error.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -234,6 +243,15 @@ description: Artifact commands cube_with_error.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -266,19 +284,19 @@ description: Artifact commands cube_with_error.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -313,19 +331,19 @@ description: Artifact commands cube_with_error.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -356,15 +374,6 @@ description: Artifact commands cube_with_error.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -375,6 +384,15 @@ description: Artifact commands cube_with_error.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -384,5 +402,14 @@ description: Artifact commands cube_with_error.kcl
"edge_id": "[uuid]", "edge_id": "[uuid]",
"face_id": "[uuid]" "face_id": "[uuid]"
} }
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
} }
] ]

View File

@ -18,8 +18,13 @@ flowchart LR
14["Cap Start"] 14["Cap Start"]
15["Cap End"] 15["Cap End"]
16["SweepEdge Opposite"] 16["SweepEdge Opposite"]
17["SweepEdge Opposite"] 17["SweepEdge Adjacent"]
18["SweepEdge Opposite"] 18["SweepEdge Opposite"]
19["SweepEdge Adjacent"]
20["SweepEdge Opposite"]
21["SweepEdge Adjacent"]
22["SweepEdge Opposite"]
23["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -29,14 +34,20 @@ flowchart LR
2 ---- 9 2 ---- 9
2 --- 8 2 --- 8
3 --- 13 3 --- 13
3 --- 18 3 --- 22
3 --- 23
3 x--> 14
4 --- 12 4 --- 12
4 --- 17 4 --- 20
4 --- 21
4 x--> 14 4 x--> 14
5 --- 11 5 --- 11
5 --- 16 5 --- 18
5 --- 19
5 x--> 14 5 x--> 14
6 --- 10 6 --- 10
6 --- 16
6 --- 17
6 x--> 14 6 x--> 14
9 --- 10 9 --- 10
9 --- 11 9 --- 11
@ -47,8 +58,25 @@ flowchart LR
9 --- 16 9 --- 16
9 --- 17 9 --- 17
9 --- 18 9 --- 18
16 <--x 11 9 --- 19
9 --- 20
9 --- 21
9 --- 22
9 --- 23
16 <--x 10
16 <--x 15 16 <--x 15
17 <--x 12 17 <--x 10
17 <--x 15 17 <--x 13
18 <--x 11
18 <--x 15
19 <--x 10
19 <--x 11
20 <--x 12
20 <--x 15
21 <--x 11
21 <--x 12
22 <--x 13
22 <--x 15
23 <--x 12
23 <--x 13
``` ```

View File

@ -334,6 +334,15 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -344,6 +353,15 @@ description: Artifact commands fillet-and-shell.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -376,19 +394,19 @@ description: Artifact commands fillet-and-shell.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -423,19 +441,19 @@ description: Artifact commands fillet-and-shell.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -466,15 +484,6 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -485,6 +494,15 @@ description: Artifact commands fillet-and-shell.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -504,24 +522,6 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -851,6 +851,15 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -861,6 +870,15 @@ description: Artifact commands fillet-and-shell.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -889,15 +907,6 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -908,6 +917,15 @@ description: Artifact commands fillet-and-shell.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -927,24 +945,6 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1234,6 +1234,15 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1244,6 +1253,15 @@ description: Artifact commands fillet-and-shell.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1272,15 +1290,6 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1291,6 +1300,15 @@ description: Artifact commands fillet-and-shell.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1310,24 +1328,6 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1617,6 +1617,15 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1627,6 +1636,15 @@ description: Artifact commands fillet-and-shell.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1655,15 +1673,6 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1674,6 +1683,15 @@ description: Artifact commands fillet-and-shell.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1693,24 +1711,6 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -2000,6 +2000,15 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -2010,6 +2019,15 @@ description: Artifact commands fillet-and-shell.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -2038,15 +2056,6 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -2057,6 +2066,15 @@ description: Artifact commands fillet-and-shell.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -2076,24 +2094,6 @@ description: Artifact commands fillet-and-shell.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -16,57 +16,57 @@ flowchart LR
13["Segment<br>[1011, 1030, 0]"] 13["Segment<br>[1011, 1030, 0]"]
14[Solid2d] 14[Solid2d]
end end
subgraph path27 [Path]
27["Path<br>[1343, 1368, 0]"]
end
subgraph path28 [Path]
28["Path<br>[1376, 1413, 0]"]
29["Segment<br>[1376, 1413, 0]"]
30[Solid2d]
end
subgraph path31 [Path] subgraph path31 [Path]
31["Path<br>[1439, 1477, 0]"] 31["Path<br>[1343, 1368, 0]"]
32["Segment<br>[1439, 1477, 0]"]
33[Solid2d]
end end
subgraph path39 [Path] subgraph path32 [Path]
39["Path<br>[1343, 1368, 0]"] 32["Path<br>[1376, 1413, 0]"]
33["Segment<br>[1376, 1413, 0]"]
34[Solid2d]
end end
subgraph path40 [Path] subgraph path35 [Path]
40["Path<br>[1376, 1413, 0]"] 35["Path<br>[1439, 1477, 0]"]
41["Segment<br>[1376, 1413, 0]"] 36["Segment<br>[1439, 1477, 0]"]
42[Solid2d] 37[Solid2d]
end end
subgraph path43 [Path] subgraph path45 [Path]
43["Path<br>[1439, 1477, 0]"] 45["Path<br>[1343, 1368, 0]"]
44["Segment<br>[1439, 1477, 0]"]
45[Solid2d]
end end
subgraph path51 [Path] subgraph path46 [Path]
51["Path<br>[1343, 1368, 0]"] 46["Path<br>[1376, 1413, 0]"]
47["Segment<br>[1376, 1413, 0]"]
48[Solid2d]
end end
subgraph path52 [Path] subgraph path49 [Path]
52["Path<br>[1376, 1413, 0]"] 49["Path<br>[1439, 1477, 0]"]
53["Segment<br>[1376, 1413, 0]"] 50["Segment<br>[1439, 1477, 0]"]
54[Solid2d] 51[Solid2d]
end end
subgraph path55 [Path] subgraph path59 [Path]
55["Path<br>[1439, 1477, 0]"] 59["Path<br>[1343, 1368, 0]"]
56["Segment<br>[1439, 1477, 0]"] end
57[Solid2d] subgraph path60 [Path]
60["Path<br>[1376, 1413, 0]"]
61["Segment<br>[1376, 1413, 0]"]
62[Solid2d]
end end
subgraph path63 [Path] subgraph path63 [Path]
63["Path<br>[1343, 1368, 0]"] 63["Path<br>[1439, 1477, 0]"]
64["Segment<br>[1439, 1477, 0]"]
65[Solid2d]
end end
subgraph path64 [Path] subgraph path73 [Path]
64["Path<br>[1376, 1413, 0]"] 73["Path<br>[1343, 1368, 0]"]
65["Segment<br>[1376, 1413, 0]"]
66[Solid2d]
end end
subgraph path67 [Path] subgraph path74 [Path]
67["Path<br>[1439, 1477, 0]"] 74["Path<br>[1376, 1413, 0]"]
68["Segment<br>[1439, 1477, 0]"] 75["Segment<br>[1376, 1413, 0]"]
69[Solid2d] 76[Solid2d]
end
subgraph path77 [Path]
77["Path<br>[1439, 1477, 0]"]
78["Segment<br>[1439, 1477, 0]"]
79[Solid2d]
end end
1["Plane<br>[373, 390, 0]"] 1["Plane<br>[373, 390, 0]"]
8["Plane<br>[783, 802, 0]"] 8["Plane<br>[783, 802, 0]"]
@ -78,33 +78,45 @@ flowchart LR
20["Cap Start"] 20["Cap Start"]
21["Cap End"] 21["Cap End"]
22["SweepEdge Opposite"] 22["SweepEdge Opposite"]
23["SweepEdge Opposite"] 23["SweepEdge Adjacent"]
24["SweepEdge Opposite"] 24["SweepEdge Opposite"]
25["SweepEdge Adjacent"] 25["SweepEdge Adjacent"]
26["Plane<br>[1316, 1335, 0]"] 26["SweepEdge Opposite"]
34["Sweep Extrusion<br>[1486, 1510, 0]"] 27["SweepEdge Adjacent"]
35[Wall] 28["SweepEdge Opposite"]
36["Cap Start"] 29["SweepEdge Adjacent"]
37["Cap End"] 30["Plane<br>[1316, 1335, 0]"]
38["Plane<br>[1316, 1335, 0]"] 38["Sweep Extrusion<br>[1486, 1510, 0]"]
46["Sweep Extrusion<br>[1486, 1510, 0]"] 39[Wall]
47[Wall] 40["Cap Start"]
48["Cap Start"] 41["Cap End"]
49["Cap End"] 42["SweepEdge Opposite"]
50["Plane<br>[1316, 1335, 0]"] 43["SweepEdge Adjacent"]
58["Sweep Extrusion<br>[1486, 1510, 0]"] 44["Plane<br>[1316, 1335, 0]"]
59[Wall] 52["Sweep Extrusion<br>[1486, 1510, 0]"]
60["Cap Start"] 53[Wall]
61["Cap End"] 54["Cap Start"]
62["Plane<br>[1316, 1335, 0]"] 55["Cap End"]
70["Sweep Extrusion<br>[1486, 1510, 0]"] 56["SweepEdge Opposite"]
71[Wall] 57["SweepEdge Adjacent"]
72["Cap Start"] 58["Plane<br>[1316, 1335, 0]"]
73["Cap End"] 66["Sweep Extrusion<br>[1486, 1510, 0]"]
74["EdgeCut Fillet<br>[1070, 1276, 0]"] 67[Wall]
75["EdgeCut Fillet<br>[1070, 1276, 0]"] 68["Cap Start"]
76["EdgeCut Fillet<br>[1070, 1276, 0]"] 69["Cap End"]
77["EdgeCut Fillet<br>[1070, 1276, 0]"] 70["SweepEdge Opposite"]
71["SweepEdge Adjacent"]
72["Plane<br>[1316, 1335, 0]"]
80["Sweep Extrusion<br>[1486, 1510, 0]"]
81[Wall]
82["Cap Start"]
83["Cap End"]
84["SweepEdge Opposite"]
85["SweepEdge Adjacent"]
86["EdgeCut Fillet<br>[1070, 1276, 0]"]
87["EdgeCut Fillet<br>[1070, 1276, 0]"]
88["EdgeCut Fillet<br>[1070, 1276, 0]"]
89["EdgeCut Fillet<br>[1070, 1276, 0]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -119,16 +131,20 @@ flowchart LR
9 ---- 15 9 ---- 15
9 --- 14 9 --- 14
10 --- 16 10 --- 16
10 --- 25 10 --- 22
10 --- 23
10 x--> 20 10 x--> 20
11 --- 17 11 --- 17
11 --- 22 11 --- 24
11 --- 25
11 x--> 20 11 x--> 20
12 --- 18 12 --- 18
12 --- 23 12 --- 26
12 --- 27
12 x--> 20 12 x--> 20
13 --- 19 13 --- 19
13 --- 24 13 --- 28
13 --- 29
13 x--> 20 13 x--> 20
15 --- 16 15 --- 16
15 --- 17 15 --- 17
@ -140,63 +156,100 @@ flowchart LR
15 --- 23 15 --- 23
15 --- 24 15 --- 24
15 --- 25 15 --- 25
22 <--x 17 15 --- 26
15 --- 27
15 --- 28
15 --- 29
22 <--x 16
22 <--x 21 22 <--x 21
23 <--x 18 24 <--x 17
23 <--x 21
24 <--x 19
24 <--x 21 24 <--x 21
26 --- 27 26 <--x 18
26 --- 28 26 <--x 21
26 --- 31 28 <--x 19
28 --- 29 28 <--x 21
28 ---- 34 30 --- 31
28 --- 30 30 --- 32
29 --- 35 30 --- 35
29 x--> 36 32 --- 33
31 --- 32 32 ---- 38
31 --- 33 32 --- 34
34 --- 35 33 --- 39
34 --- 36 33 --- 42
34 --- 37 33 --- 43
33 x--> 40
35 --- 36
35 --- 37
38 --- 39 38 --- 39
38 --- 40 38 --- 40
38 --- 41
38 --- 42
38 --- 43 38 --- 43
40 --- 41 42 <--x 39
40 ---- 46 42 <--x 41
40 --- 42 43 <--x 39
41 --- 47 44 --- 45
41 x--> 48 44 --- 46
43 --- 44 44 --- 49
43 --- 45
46 --- 47 46 --- 47
46 ---- 52
46 --- 48 46 --- 48
46 --- 49 47 --- 53
50 --- 51 47 --- 56
50 --- 52 47 --- 57
50 --- 55 47 x--> 54
49 --- 50
49 --- 51
52 --- 53 52 --- 53
52 ---- 58
52 --- 54 52 --- 54
53 --- 59 52 --- 55
53 x--> 60 52 --- 56
55 --- 56 52 --- 57
55 --- 57 56 <--x 53
56 <--x 55
57 <--x 53
58 --- 59 58 --- 59
58 --- 60 58 --- 60
58 --- 61 58 --- 63
62 --- 63 60 --- 61
62 --- 64 60 ---- 66
62 --- 67 60 --- 62
64 --- 65 61 --- 67
64 ---- 70 61 --- 70
64 --- 66 61 --- 71
65 --- 71 61 x--> 68
65 x--> 72 63 --- 64
67 --- 68 63 --- 65
67 --- 69 66 --- 67
70 --- 71 66 --- 68
70 --- 72 66 --- 69
70 --- 73 66 --- 70
25 <--x 74 66 --- 71
70 <--x 67
70 <--x 69
71 <--x 67
72 --- 73
72 --- 74
72 --- 77
74 --- 75
74 ---- 80
74 --- 76
75 --- 81
75 --- 84
75 --- 85
75 x--> 82
77 --- 78
77 --- 79
80 --- 81
80 --- 82
80 --- 83
80 --- 84
80 --- 85
84 <--x 81
84 <--x 83
85 <--x 81
23 <--x 86
25 <--x 87
27 <--x 88
29 <--x 89
``` ```

View File

@ -275,6 +275,15 @@ description: Artifact commands flush_batch_on_end.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -285,6 +294,15 @@ description: Artifact commands flush_batch_on_end.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -313,15 +331,6 @@ description: Artifact commands flush_batch_on_end.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -332,6 +341,15 @@ description: Artifact commands flush_batch_on_end.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -342,24 +360,6 @@ description: Artifact commands flush_batch_on_end.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -15,16 +15,25 @@ flowchart LR
9[Wall] 9[Wall]
10["Cap Start"] 10["Cap Start"]
11["Cap End"] 11["Cap End"]
12["SweepEdge Opposite"]
13["SweepEdge Adjacent"]
1 --- 2 1 --- 2
1 --- 5 1 --- 5
2 --- 3 2 --- 3
2 ---- 8 2 ---- 8
2 --- 4 2 --- 4
3 --- 9 3 --- 9
3 --- 12
3 --- 13
3 x--> 10 3 x--> 10
5 --- 6 5 --- 6
5 --- 7 5 --- 7
8 --- 9 8 --- 9
8 --- 10 8 --- 10
8 --- 11 8 --- 11
8 --- 12
8 --- 13
12 <--x 9
12 <--x 11
13 <--x 9
``` ```

View File

@ -207,6 +207,15 @@ description: Artifact commands function_sketch.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -217,6 +226,15 @@ description: Artifact commands function_sketch.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -249,19 +267,19 @@ description: Artifact commands function_sketch.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -296,19 +314,19 @@ description: Artifact commands function_sketch.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -339,15 +357,6 @@ description: Artifact commands function_sketch.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -358,6 +367,15 @@ description: Artifact commands function_sketch.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -368,24 +386,6 @@ description: Artifact commands function_sketch.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -17,8 +17,13 @@ flowchart LR
13["Cap Start"] 13["Cap Start"]
14["Cap End"] 14["Cap End"]
15["SweepEdge Opposite"] 15["SweepEdge Opposite"]
16["SweepEdge Opposite"] 16["SweepEdge Adjacent"]
17["SweepEdge Opposite"] 17["SweepEdge Opposite"]
18["SweepEdge Adjacent"]
19["SweepEdge Opposite"]
20["SweepEdge Adjacent"]
21["SweepEdge Opposite"]
22["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -27,15 +32,20 @@ flowchart LR
2 ---- 8 2 ---- 8
2 --- 7 2 --- 7
3 --- 12 3 --- 12
3 --- 17 3 --- 21
3 --- 22
3 x--> 13 3 x--> 13
4 --- 11 4 --- 11
4 --- 16 4 --- 19
4 --- 20
4 x--> 13 4 x--> 13
5 --- 10 5 --- 10
5 --- 15 5 --- 17
5 --- 18
5 x--> 13 5 x--> 13
6 --- 9 6 --- 9
6 --- 15
6 --- 16
6 x--> 13 6 x--> 13
8 --- 9 8 --- 9
8 --- 10 8 --- 10
@ -46,10 +56,25 @@ flowchart LR
8 --- 15 8 --- 15
8 --- 16 8 --- 16
8 --- 17 8 --- 17
15 <--x 10 8 --- 18
8 --- 19
8 --- 20
8 --- 21
8 --- 22
15 <--x 9
15 <--x 14 15 <--x 14
16 <--x 11 16 <--x 9
16 <--x 14 16 <--x 12
17 <--x 12 17 <--x 10
17 <--x 14 17 <--x 14
18 <--x 9
18 <--x 10
19 <--x 11
19 <--x 14
20 <--x 10
20 <--x 11
21 <--x 12
21 <--x 14
22 <--x 11
22 <--x 12
``` ```

View File

@ -207,6 +207,15 @@ description: Artifact commands function_sketch_with_position.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -217,6 +226,15 @@ description: Artifact commands function_sketch_with_position.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -249,19 +267,19 @@ description: Artifact commands function_sketch_with_position.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -296,19 +314,19 @@ description: Artifact commands function_sketch_with_position.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -339,15 +357,6 @@ description: Artifact commands function_sketch_with_position.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -358,6 +367,15 @@ description: Artifact commands function_sketch_with_position.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -368,24 +386,6 @@ description: Artifact commands function_sketch_with_position.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -17,8 +17,13 @@ flowchart LR
13["Cap Start"] 13["Cap Start"]
14["Cap End"] 14["Cap End"]
15["SweepEdge Opposite"] 15["SweepEdge Opposite"]
16["SweepEdge Opposite"] 16["SweepEdge Adjacent"]
17["SweepEdge Opposite"] 17["SweepEdge Opposite"]
18["SweepEdge Adjacent"]
19["SweepEdge Opposite"]
20["SweepEdge Adjacent"]
21["SweepEdge Opposite"]
22["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -27,15 +32,20 @@ flowchart LR
2 ---- 8 2 ---- 8
2 --- 7 2 --- 7
3 --- 12 3 --- 12
3 --- 17 3 --- 21
3 --- 22
3 x--> 13 3 x--> 13
4 --- 11 4 --- 11
4 --- 16 4 --- 19
4 --- 20
4 x--> 13 4 x--> 13
5 --- 10 5 --- 10
5 --- 15 5 --- 17
5 --- 18
5 x--> 13 5 x--> 13
6 --- 9 6 --- 9
6 --- 15
6 --- 16
6 x--> 13 6 x--> 13
8 --- 9 8 --- 9
8 --- 10 8 --- 10
@ -46,10 +56,25 @@ flowchart LR
8 --- 15 8 --- 15
8 --- 16 8 --- 16
8 --- 17 8 --- 17
15 <--x 10 8 --- 18
8 --- 19
8 --- 20
8 --- 21
8 --- 22
15 <--x 9
15 <--x 14 15 <--x 14
16 <--x 11 16 <--x 9
16 <--x 14 16 <--x 12
17 <--x 12 17 <--x 10
17 <--x 14 17 <--x 14
18 <--x 9
18 <--x 10
19 <--x 11
19 <--x 14
20 <--x 10
20 <--x 11
21 <--x 12
21 <--x 14
22 <--x 11
22 <--x 12
``` ```

View File

@ -181,6 +181,15 @@ description: Artifact commands helix_ccw.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -191,6 +200,15 @@ description: Artifact commands helix_ccw.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -210,24 +228,6 @@ description: Artifact commands helix_ccw.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -10,13 +10,22 @@ flowchart LR
6[Wall] 6[Wall]
7["Cap Start"] 7["Cap Start"]
8["Cap End"] 8["Cap End"]
9["SweepEdge Opposite"]
10["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 ---- 5 2 ---- 5
2 --- 4 2 --- 4
3 --- 6 3 --- 6
3 --- 9
3 --- 10
3 x--> 7 3 x--> 7
5 --- 6 5 --- 6
5 --- 7 5 --- 7
5 --- 8 5 --- 8
5 --- 9
5 --- 10
9 <--x 6
9 <--x 8
10 <--x 6
``` ```

View File

@ -794,6 +794,15 @@ description: Artifact commands i_shape.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -804,6 +813,15 @@ description: Artifact commands i_shape.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -836,19 +854,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -883,19 +901,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -930,19 +948,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -977,19 +995,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1024,19 +1042,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1071,19 +1089,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1118,19 +1136,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1165,19 +1183,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1212,19 +1230,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1259,19 +1277,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1306,19 +1324,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1353,19 +1371,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1400,19 +1418,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1447,19 +1465,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1494,19 +1512,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1541,19 +1559,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1588,19 +1606,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1635,19 +1653,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1682,19 +1700,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1729,19 +1747,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1776,19 +1794,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1823,19 +1841,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1870,19 +1888,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1917,19 +1935,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -1964,19 +1982,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -2011,19 +2029,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -2058,19 +2076,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -2105,19 +2123,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -2152,19 +2170,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -2199,19 +2217,19 @@ description: Artifact commands i_shape.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -2242,15 +2260,6 @@ description: Artifact commands i_shape.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -2261,6 +2270,15 @@ description: Artifact commands i_shape.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -2271,24 +2289,6 @@ description: Artifact commands i_shape.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -72,28 +72,53 @@ flowchart LR
66["Cap Start"] 66["Cap Start"]
67["Cap End"] 67["Cap End"]
68["SweepEdge Opposite"] 68["SweepEdge Opposite"]
69["SweepEdge Opposite"] 69["SweepEdge Adjacent"]
70["SweepEdge Opposite"] 70["SweepEdge Opposite"]
71["SweepEdge Opposite"] 71["SweepEdge Adjacent"]
72["SweepEdge Opposite"] 72["SweepEdge Opposite"]
73["SweepEdge Opposite"] 73["SweepEdge Adjacent"]
74["SweepEdge Opposite"] 74["SweepEdge Opposite"]
75["SweepEdge Opposite"] 75["SweepEdge Adjacent"]
76["SweepEdge Opposite"] 76["SweepEdge Opposite"]
77["SweepEdge Opposite"] 77["SweepEdge Adjacent"]
78["SweepEdge Opposite"] 78["SweepEdge Opposite"]
79["SweepEdge Opposite"] 79["SweepEdge Adjacent"]
80["SweepEdge Opposite"] 80["SweepEdge Opposite"]
81["SweepEdge Opposite"] 81["SweepEdge Adjacent"]
82["SweepEdge Opposite"] 82["SweepEdge Opposite"]
83["SweepEdge Opposite"] 83["SweepEdge Adjacent"]
84["SweepEdge Opposite"] 84["SweepEdge Opposite"]
85["SweepEdge Opposite"] 85["SweepEdge Adjacent"]
86["SweepEdge Opposite"] 86["SweepEdge Opposite"]
87["SweepEdge Opposite"] 87["SweepEdge Adjacent"]
88["SweepEdge Opposite"] 88["SweepEdge Opposite"]
89["SweepEdge Opposite"] 89["SweepEdge Adjacent"]
90["SweepEdge Opposite"] 90["SweepEdge Opposite"]
91["SweepEdge Adjacent"]
92["SweepEdge Opposite"]
93["SweepEdge Adjacent"]
94["SweepEdge Opposite"]
95["SweepEdge Adjacent"]
96["SweepEdge Opposite"]
97["SweepEdge Adjacent"]
98["SweepEdge Opposite"]
99["SweepEdge Adjacent"]
100["SweepEdge Opposite"]
101["SweepEdge Adjacent"]
102["SweepEdge Opposite"]
103["SweepEdge Adjacent"]
104["SweepEdge Opposite"]
105["SweepEdge Adjacent"]
106["SweepEdge Opposite"]
107["SweepEdge Adjacent"]
108["SweepEdge Opposite"]
109["SweepEdge Adjacent"]
110["SweepEdge Opposite"]
111["SweepEdge Adjacent"]
112["SweepEdge Opposite"]
113["SweepEdge Adjacent"]
114["SweepEdge Opposite"]
115["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -123,75 +148,100 @@ flowchart LR
2 ---- 41 2 ---- 41
2 --- 28 2 --- 28
3 --- 42 3 --- 42
3 --- 68
3 --- 69
3 x--> 66 3 x--> 66
4 --- 43 4 --- 43
4 --- 68 4 --- 70
4 --- 71
4 x--> 66 4 x--> 66
5 --- 44 5 --- 44
5 --- 69 5 --- 72
5 --- 73
5 x--> 66 5 x--> 66
6 --- 45 6 --- 45
6 --- 70 6 --- 74
6 --- 75
6 x--> 66 6 x--> 66
7 --- 46 7 --- 46
7 --- 71 7 --- 76
7 --- 77
7 x--> 66 7 x--> 66
8 --- 47 8 --- 47
8 --- 72 8 --- 78
8 --- 79
8 x--> 66 8 x--> 66
9 --- 48 9 --- 48
9 --- 73 9 --- 80
9 --- 81
9 x--> 66 9 x--> 66
10 --- 49 10 --- 49
10 --- 74 10 --- 82
10 --- 83
10 x--> 66 10 x--> 66
11 --- 50 11 --- 50
11 --- 75 11 --- 84
11 --- 85
11 x--> 66 11 x--> 66
12 --- 51 12 --- 51
12 --- 76 12 --- 86
12 --- 87
12 x--> 66 12 x--> 66
13 --- 52 13 --- 52
13 --- 77 13 --- 88
13 --- 89
13 x--> 66 13 x--> 66
14 --- 53 14 --- 53
14 --- 78 14 --- 90
14 --- 91
14 x--> 66 14 x--> 66
15 --- 54 15 --- 54
15 --- 79 15 --- 92
15 --- 93
15 x--> 66 15 x--> 66
16 --- 55 16 --- 55
16 --- 80 16 --- 94
16 --- 95
16 x--> 66 16 x--> 66
17 --- 56 17 --- 56
17 --- 81 17 --- 96
17 --- 97
17 x--> 66 17 x--> 66
18 --- 57 18 --- 57
18 --- 82 18 --- 98
18 --- 99
18 x--> 66 18 x--> 66
19 --- 58 19 --- 58
19 --- 83 19 --- 100
19 --- 101
19 x--> 66 19 x--> 66
20 --- 59 20 --- 59
20 --- 84 20 --- 102
20 --- 103
20 x--> 66 20 x--> 66
21 --- 60 21 --- 60
21 --- 85 21 --- 104
21 --- 105
21 x--> 66 21 x--> 66
22 --- 61 22 --- 61
22 --- 86 22 --- 106
22 --- 107
22 x--> 66 22 x--> 66
23 --- 62 23 --- 62
23 --- 87 23 --- 108
23 --- 109
23 x--> 66 23 x--> 66
24 --- 63 24 --- 63
24 --- 88 24 --- 110
24 --- 111
24 x--> 66 24 x--> 66
25 --- 64 25 --- 64
25 --- 89 25 --- 112
25 --- 113
25 x--> 66 25 x--> 66
26 --- 65 26 --- 65
26 --- 90 26 --- 114
26 --- 115
26 x--> 66 26 x--> 66
29 --- 30 29 --- 30
30 --- 31 30 --- 31
@ -253,50 +303,125 @@ flowchart LR
41 --- 88 41 --- 88
41 --- 89 41 --- 89
41 --- 90 41 --- 90
68 <--x 43 41 --- 91
41 --- 92
41 --- 93
41 --- 94
41 --- 95
41 --- 96
41 --- 97
41 --- 98
41 --- 99
41 --- 100
41 --- 101
41 --- 102
41 --- 103
41 --- 104
41 --- 105
41 --- 106
41 --- 107
41 --- 108
41 --- 109
41 --- 110
41 --- 111
41 --- 112
41 --- 113
41 --- 114
41 --- 115
68 <--x 42
68 <--x 67 68 <--x 67
69 <--x 44 69 <--x 42
69 <--x 67 69 <--x 43
70 <--x 45 70 <--x 43
70 <--x 67 70 <--x 67
71 <--x 46 71 <--x 43
71 <--x 67 71 <--x 44
72 <--x 47 72 <--x 44
72 <--x 67 72 <--x 67
73 <--x 48 73 <--x 44
73 <--x 67 73 <--x 45
74 <--x 49 74 <--x 45
74 <--x 67 74 <--x 67
75 <--x 50 75 <--x 45
75 <--x 67 75 <--x 46
76 <--x 51 76 <--x 46
76 <--x 67 76 <--x 67
77 <--x 52 77 <--x 46
77 <--x 67 77 <--x 47
78 <--x 53 78 <--x 47
78 <--x 67 78 <--x 67
79 <--x 54 79 <--x 47
79 <--x 67 79 <--x 48
80 <--x 55 80 <--x 48
80 <--x 67 80 <--x 67
81 <--x 56 81 <--x 48
81 <--x 67 81 <--x 49
82 <--x 57 82 <--x 49
82 <--x 67 82 <--x 67
83 <--x 58 83 <--x 49
83 <--x 67 83 <--x 50
84 <--x 59 84 <--x 50
84 <--x 67 84 <--x 67
85 <--x 60 85 <--x 50
85 <--x 67 85 <--x 51
86 <--x 61 86 <--x 51
86 <--x 67 86 <--x 67
87 <--x 62 87 <--x 51
87 <--x 67 87 <--x 52
88 <--x 63 88 <--x 52
88 <--x 67 88 <--x 67
89 <--x 64 89 <--x 52
89 <--x 67 89 <--x 53
90 <--x 65 90 <--x 53
90 <--x 67 90 <--x 67
91 <--x 53
91 <--x 54
92 <--x 54
92 <--x 67
93 <--x 54
93 <--x 55
94 <--x 55
94 <--x 67
95 <--x 55
95 <--x 56
96 <--x 56
96 <--x 67
97 <--x 56
97 <--x 57
98 <--x 57
98 <--x 67
99 <--x 57
99 <--x 58
100 <--x 58
100 <--x 67
101 <--x 58
101 <--x 59
102 <--x 59
102 <--x 67
103 <--x 59
103 <--x 60
104 <--x 60
104 <--x 67
105 <--x 60
105 <--x 61
106 <--x 61
106 <--x 67
107 <--x 61
107 <--x 62
108 <--x 62
108 <--x 67
109 <--x 62
109 <--x 63
110 <--x 63
110 <--x 67
111 <--x 63
111 <--x 64
112 <--x 64
112 <--x 67
113 <--x 64
113 <--x 65
114 <--x 65
114 <--x 67
115 <--x 42
115 <--x 65
``` ```

View File

@ -5571268,6 +5571268,15 @@ description: Artifact commands import_async.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -5571278,6 +5571287,15 @@ description: Artifact commands import_async.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -5571297,24 +5571315,6 @@ description: Artifact commands import_async.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -5575117,6 +5575117,15 @@ description: Artifact commands import_async.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -5575127,6 +5575136,15 @@ description: Artifact commands import_async.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -5575159,19 +5575177,19 @@ description: Artifact commands import_async.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -5575206,19 +5575224,19 @@ description: Artifact commands import_async.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -5575249,15 +5575267,6 @@ description: Artifact commands import_async.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -5575268,6 +5575277,15 @@ description: Artifact commands import_async.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -5575287,24 +5575305,6 @@ description: Artifact commands import_async.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -5,10 +5,8 @@ flowchart LR
4["Segment<br>[1081, 1131, 0]"] 4["Segment<br>[1081, 1131, 0]"]
5[Solid2d] 5[Solid2d]
end end
subgraph path11 [Path] subgraph path13 [Path]
11["Path<br>[1608, 1645, 0]"] 13["Path<br>[1608, 1645, 0]"]
12["Segment<br>[1296, 1334, 0]"]
13["Segment<br>[1296, 1334, 0]"]
14["Segment<br>[1296, 1334, 0]"] 14["Segment<br>[1296, 1334, 0]"]
15["Segment<br>[1296, 1334, 0]"] 15["Segment<br>[1296, 1334, 0]"]
16["Segment<br>[1296, 1334, 0]"] 16["Segment<br>[1296, 1334, 0]"]
@ -108,9 +106,9 @@ flowchart LR
110["Segment<br>[1296, 1334, 0]"] 110["Segment<br>[1296, 1334, 0]"]
111["Segment<br>[1296, 1334, 0]"] 111["Segment<br>[1296, 1334, 0]"]
112["Segment<br>[1296, 1334, 0]"] 112["Segment<br>[1296, 1334, 0]"]
113["Segment<br>[1711, 1809, 0]"] 113["Segment<br>[1296, 1334, 0]"]
114["Segment<br>[1524, 1554, 0]"] 114["Segment<br>[1296, 1334, 0]"]
115["Segment<br>[1524, 1554, 0]"] 115["Segment<br>[1711, 1809, 0]"]
116["Segment<br>[1524, 1554, 0]"] 116["Segment<br>[1524, 1554, 0]"]
117["Segment<br>[1524, 1554, 0]"] 117["Segment<br>[1524, 1554, 0]"]
118["Segment<br>[1524, 1554, 0]"] 118["Segment<br>[1524, 1554, 0]"]
@ -210,18 +208,20 @@ flowchart LR
212["Segment<br>[1524, 1554, 0]"] 212["Segment<br>[1524, 1554, 0]"]
213["Segment<br>[1524, 1554, 0]"] 213["Segment<br>[1524, 1554, 0]"]
214["Segment<br>[1524, 1554, 0]"] 214["Segment<br>[1524, 1554, 0]"]
215["Segment<br>[1869, 1876, 0]"] 215["Segment<br>[1524, 1554, 0]"]
216[Solid2d] 216["Segment<br>[1524, 1554, 0]"]
217["Segment<br>[1869, 1876, 0]"]
218[Solid2d]
end end
subgraph path218 [Path] subgraph path220 [Path]
218["Path<br>[2357, 2436, 0]"] 220["Path<br>[2357, 2436, 0]"]
219["Segment<br>[2442, 2469, 0]"] 221["Segment<br>[2442, 2469, 0]"]
220["Segment<br>[2475, 2503, 0]"] 222["Segment<br>[2475, 2503, 0]"]
221["Segment<br>[2509, 2537, 0]"] 223["Segment<br>[2509, 2537, 0]"]
222["Segment<br>[2543, 2659, 0]"] 224["Segment<br>[2543, 2659, 0]"]
223["Segment<br>[2665, 2770, 0]"] 225["Segment<br>[2665, 2770, 0]"]
224["Segment<br>[2776, 2783, 0]"] 226["Segment<br>[2776, 2783, 0]"]
225[Solid2d] 227[Solid2d]
end end
1["Plane<br>[168, 185, 0]"] 1["Plane<br>[168, 185, 0]"]
2["Plane<br>[1058, 1075, 0]"] 2["Plane<br>[1058, 1075, 0]"]
@ -229,265 +229,299 @@ flowchart LR
7[Wall] 7[Wall]
8["Cap Start"] 8["Cap Start"]
9["Cap End"] 9["Cap End"]
10["Plane<br>[1585, 1602, 0]"] 10["SweepEdge Opposite"]
217["Sweep Extrusion<br>[1882, 1910, 0]"] 11["SweepEdge Adjacent"]
226["Sweep Extrusion<br>[2789, 2818, 0]"] 12["Plane<br>[1585, 1602, 0]"]
227[Wall] 219["Sweep Extrusion<br>[1882, 1910, 0]"]
228[Wall] 228["Sweep Extrusion<br>[2789, 2818, 0]"]
229[Wall] 229[Wall]
230[Wall] 230[Wall]
231["SweepEdge Opposite"] 231[Wall]
232["SweepEdge Opposite"] 232[Wall]
233["SweepEdge Opposite"] 233["SweepEdge Opposite"]
234["StartSketchOnFace<br>[2320, 2351, 0]"] 234["SweepEdge Adjacent"]
235["SweepEdge Opposite"]
236["SweepEdge Adjacent"]
237["SweepEdge Opposite"]
238["SweepEdge Adjacent"]
239["SweepEdge Opposite"]
240["SweepEdge Adjacent"]
241["StartSketchOnFace<br>[2320, 2351, 0]"]
2 --- 3 2 --- 3
3 --- 4 3 --- 4
3 ---- 6 3 ---- 6
3 --- 5 3 --- 5
4 --- 7 4 --- 7
4 --- 10
4 --- 11
4 x--> 8 4 x--> 8
6 --- 7 6 --- 7
6 --- 8 6 --- 8
6 --- 9 6 --- 9
9 --- 218 6 --- 10
10 --- 11 6 --- 11
11 --- 12 9 --- 220
11 --- 13 10 <--x 7
11 --- 14 10 <--x 9
11 --- 15 11 <--x 7
11 --- 16 12 --- 13
11 --- 17 13 --- 14
11 --- 18 13 --- 15
11 --- 19 13 --- 16
11 --- 20 13 --- 17
11 --- 21 13 --- 18
11 --- 22 13 --- 19
11 --- 23 13 --- 20
11 --- 24 13 --- 21
11 --- 25 13 --- 22
11 --- 26 13 --- 23
11 --- 27 13 --- 24
11 --- 28 13 --- 25
11 --- 29 13 --- 26
11 --- 30 13 --- 27
11 --- 31 13 --- 28
11 --- 32 13 --- 29
11 --- 33 13 --- 30
11 --- 34 13 --- 31
11 --- 35 13 --- 32
11 --- 36 13 --- 33
11 --- 37 13 --- 34
11 --- 38 13 --- 35
11 --- 39 13 --- 36
11 --- 40 13 --- 37
11 --- 41 13 --- 38
11 --- 42 13 --- 39
11 --- 43 13 --- 40
11 --- 44 13 --- 41
11 --- 45 13 --- 42
11 --- 46 13 --- 43
11 --- 47 13 --- 44
11 --- 48 13 --- 45
11 --- 49 13 --- 46
11 --- 50 13 --- 47
11 --- 51 13 --- 48
11 --- 52 13 --- 49
11 --- 53 13 --- 50
11 --- 54 13 --- 51
11 --- 55 13 --- 52
11 --- 56 13 --- 53
11 --- 57 13 --- 54
11 --- 58 13 --- 55
11 --- 59 13 --- 56
11 --- 60 13 --- 57
11 --- 61 13 --- 58
11 --- 62 13 --- 59
11 --- 63 13 --- 60
11 --- 64 13 --- 61
11 --- 65 13 --- 62
11 --- 66 13 --- 63
11 --- 67 13 --- 64
11 --- 68 13 --- 65
11 --- 69 13 --- 66
11 --- 70 13 --- 67
11 --- 71 13 --- 68
11 --- 72 13 --- 69
11 --- 73 13 --- 70
11 --- 74 13 --- 71
11 --- 75 13 --- 72
11 --- 76 13 --- 73
11 --- 77 13 --- 74
11 --- 78 13 --- 75
11 --- 79 13 --- 76
11 --- 80 13 --- 77
11 --- 81 13 --- 78
11 --- 82 13 --- 79
11 --- 83 13 --- 80
11 --- 84 13 --- 81
11 --- 85 13 --- 82
11 --- 86 13 --- 83
11 --- 87 13 --- 84
11 --- 88 13 --- 85
11 --- 89 13 --- 86
11 --- 90 13 --- 87
11 --- 91 13 --- 88
11 --- 92 13 --- 89
11 --- 93 13 --- 90
11 --- 94 13 --- 91
11 --- 95 13 --- 92
11 --- 96 13 --- 93
11 --- 97 13 --- 94
11 --- 98 13 --- 95
11 --- 99 13 --- 96
11 --- 100 13 --- 97
11 --- 101 13 --- 98
11 --- 102 13 --- 99
11 --- 103 13 --- 100
11 --- 104 13 --- 101
11 --- 105 13 --- 102
11 --- 106 13 --- 103
11 --- 107 13 --- 104
11 --- 108 13 --- 105
11 --- 109 13 --- 106
11 --- 110 13 --- 107
11 --- 111 13 --- 108
11 --- 112 13 --- 109
11 --- 113 13 --- 110
11 --- 114 13 --- 111
11 --- 115 13 --- 112
11 --- 116 13 --- 113
11 --- 117 13 --- 114
11 --- 118 13 --- 115
11 --- 119 13 --- 116
11 --- 120 13 --- 117
11 --- 121 13 --- 118
11 --- 122 13 --- 119
11 --- 123 13 --- 120
11 --- 124 13 --- 121
11 --- 125 13 --- 122
11 --- 126 13 --- 123
11 --- 127 13 --- 124
11 --- 128 13 --- 125
11 --- 129 13 --- 126
11 --- 130 13 --- 127
11 --- 131 13 --- 128
11 --- 132 13 --- 129
11 --- 133 13 --- 130
11 --- 134 13 --- 131
11 --- 135 13 --- 132
11 --- 136 13 --- 133
11 --- 137 13 --- 134
11 --- 138 13 --- 135
11 --- 139 13 --- 136
11 --- 140 13 --- 137
11 --- 141 13 --- 138
11 --- 142 13 --- 139
11 --- 143 13 --- 140
11 --- 144 13 --- 141
11 --- 145 13 --- 142
11 --- 146 13 --- 143
11 --- 147 13 --- 144
11 --- 148 13 --- 145
11 --- 149 13 --- 146
11 --- 150 13 --- 147
11 --- 151 13 --- 148
11 --- 152 13 --- 149
11 --- 153 13 --- 150
11 --- 154 13 --- 151
11 --- 155 13 --- 152
11 --- 156 13 --- 153
11 --- 157 13 --- 154
11 --- 158 13 --- 155
11 --- 159 13 --- 156
11 --- 160 13 --- 157
11 --- 161 13 --- 158
11 --- 162 13 --- 159
11 --- 163 13 --- 160
11 --- 164 13 --- 161
11 --- 165 13 --- 162
11 --- 166 13 --- 163
11 --- 167 13 --- 164
11 --- 168 13 --- 165
11 --- 169 13 --- 166
11 --- 170 13 --- 167
11 --- 171 13 --- 168
11 --- 172 13 --- 169
11 --- 173 13 --- 170
11 --- 174 13 --- 171
11 --- 175 13 --- 172
11 --- 176 13 --- 173
11 --- 177 13 --- 174
11 --- 178 13 --- 175
11 --- 179 13 --- 176
11 --- 180 13 --- 177
11 --- 181 13 --- 178
11 --- 182 13 --- 179
11 --- 183 13 --- 180
11 --- 184 13 --- 181
11 --- 185 13 --- 182
11 --- 186 13 --- 183
11 --- 187 13 --- 184
11 --- 188 13 --- 185
11 --- 189 13 --- 186
11 --- 190 13 --- 187
11 --- 191 13 --- 188
11 --- 192 13 --- 189
11 --- 193 13 --- 190
11 --- 194 13 --- 191
11 --- 195 13 --- 192
11 --- 196 13 --- 193
11 --- 197 13 --- 194
11 --- 198 13 --- 195
11 --- 199 13 --- 196
11 --- 200 13 --- 197
11 --- 201 13 --- 198
11 --- 202 13 --- 199
11 --- 203 13 --- 200
11 --- 204 13 --- 201
11 --- 205 13 --- 202
11 --- 206 13 --- 203
11 --- 207 13 --- 204
11 --- 208 13 --- 205
11 --- 209 13 --- 206
11 --- 210 13 --- 207
11 --- 211 13 --- 208
11 --- 212 13 --- 209
11 --- 213 13 --- 210
11 --- 214 13 --- 211
11 --- 215 13 --- 212
11 ---- 217 13 --- 213
11 --- 216 13 --- 214
218 --- 219 13 --- 215
218 --- 220 13 --- 216
218 --- 221 13 --- 217
218 --- 222 13 ---- 219
218 --- 223 13 --- 218
218 --- 224 220 --- 221
218 ---- 226 220 --- 222
218 --- 225 220 --- 223
219 --- 230 220 --- 224
219 --- 233 220 --- 225
219 <--x 9 220 --- 226
220 --- 229 220 ---- 228
220 --- 232 220 --- 227
220 <--x 9 221 --- 232
221 --- 228 221 --- 239
221 --- 231 221 --- 240
221 <--x 9 221 <--x 9
223 --- 227 222 --- 231
222 --- 237
222 --- 238
222 <--x 9
223 --- 230
223 --- 235
223 --- 236
223 <--x 9 223 <--x 9
226 --- 227 225 --- 229
226 --- 228 225 --- 233
226 --- 229 225 --- 234
226 --- 230 225 <--x 9
226 --- 231 228 --- 229
226 --- 232 228 --- 230
226 --- 233 228 --- 231
231 <--x 228 228 --- 232
231 <--x 8 228 --- 233
232 <--x 229 228 --- 234
232 <--x 8 228 --- 235
233 <--x 230 228 --- 236
228 --- 237
228 --- 238
228 --- 239
228 --- 240
233 <--x 229
233 <--x 8 233 <--x 8
9 <--x 234 234 <--x 229
234 <--x 232
235 <--x 230
235 <--x 8
236 <--x 229
236 <--x 230
237 <--x 231
237 <--x 8
238 <--x 230
238 <--x 231
239 <--x 232
239 <--x 8
240 <--x 231
240 <--x 232
9 <--x 241
``` ```

View File

@ -266,6 +266,15 @@ description: Artifact commands import_function_not_sketch.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -276,6 +285,15 @@ description: Artifact commands import_function_not_sketch.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -308,19 +326,19 @@ description: Artifact commands import_function_not_sketch.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -355,19 +373,19 @@ description: Artifact commands import_function_not_sketch.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -402,19 +420,19 @@ description: Artifact commands import_function_not_sketch.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -449,19 +467,19 @@ description: Artifact commands import_function_not_sketch.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -496,19 +514,19 @@ description: Artifact commands import_function_not_sketch.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -543,19 +561,19 @@ description: Artifact commands import_function_not_sketch.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -586,15 +604,6 @@ description: Artifact commands import_function_not_sketch.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -605,6 +614,15 @@ description: Artifact commands import_function_not_sketch.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -615,24 +633,6 @@ description: Artifact commands import_function_not_sketch.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -22,6 +22,13 @@ flowchart LR
18[Wall] 18[Wall]
19[Wall] 19[Wall]
20[Wall] 20[Wall]
21["SweepEdge Adjacent"]
22["SweepEdge Adjacent"]
23["SweepEdge Adjacent"]
24["SweepEdge Adjacent"]
25["SweepEdge Adjacent"]
26["SweepEdge Adjacent"]
27["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -34,13 +41,21 @@ flowchart LR
2 ---- 12 2 ---- 12
2 --- 11 2 --- 11
3 --- 13 3 --- 13
3 x--> 21
4 --- 14 4 --- 14
4 --- 21
5 --- 15 5 --- 15
5 --- 22
6 --- 16 6 --- 16
6 --- 23
7 --- 17 7 --- 17
7 --- 24
8 --- 18 8 --- 18
8 --- 25
9 --- 19 9 --- 19
9 --- 26
10 --- 20 10 --- 20
10 --- 27
12 --- 13 12 --- 13
12 --- 14 12 --- 14
12 --- 15 12 --- 15
@ -49,11 +64,33 @@ flowchart LR
12 --- 18 12 --- 18
12 --- 19 12 --- 19
12 --- 20 12 --- 20
12 <--x 3
12 --- 21
12 <--x 4 12 <--x 4
12 <--x 5 12 <--x 5
12 --- 22
12 <--x 6 12 <--x 6
12 --- 23
12 <--x 7 12 <--x 7
12 --- 24
12 <--x 8 12 <--x 8
12 --- 25
12 <--x 9 12 <--x 9
12 --- 26
12 <--x 10 12 <--x 10
12 --- 27
21 <--x 13
21 <--x 14
22 <--x 15
22 <--x 16
23 <--x 16
23 <--x 17
24 <--x 17
24 <--x 18
25 <--x 18
25 <--x 19
26 <--x 19
26 <--x 20
27 <--x 20
27 <--x 13
``` ```

View File

@ -205,6 +205,15 @@ description: Artifact commands import_whole.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -215,6 +224,15 @@ description: Artifact commands import_whole.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -225,24 +243,6 @@ description: Artifact commands import_whole.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -10,13 +10,22 @@ flowchart LR
6[Wall] 6[Wall]
7["Cap Start"] 7["Cap Start"]
8["Cap End"] 8["Cap End"]
9["SweepEdge Opposite"]
10["SweepEdge Adjacent"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 ---- 5 2 ---- 5
2 --- 4 2 --- 4
3 --- 6 3 --- 6
3 --- 9
3 --- 10
3 x--> 7 3 x--> 7
5 --- 6 5 --- 6
5 --- 7 5 --- 7
5 --- 8 5 --- 8
5 --- 9
5 --- 10
9 <--x 6
9 <--x 8
10 <--x 6
``` ```

View File

@ -207,6 +207,15 @@ description: Artifact commands intersect_cubes.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -217,6 +226,15 @@ description: Artifact commands intersect_cubes.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -249,19 +267,19 @@ description: Artifact commands intersect_cubes.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -296,19 +314,19 @@ description: Artifact commands intersect_cubes.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -339,15 +357,6 @@ description: Artifact commands intersect_cubes.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -358,6 +367,15 @@ description: Artifact commands intersect_cubes.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -377,24 +395,6 @@ description: Artifact commands intersect_cubes.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -573,6 +573,15 @@ description: Artifact commands intersect_cubes.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -583,6 +592,15 @@ description: Artifact commands intersect_cubes.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -615,19 +633,19 @@ description: Artifact commands intersect_cubes.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -662,19 +680,19 @@ description: Artifact commands intersect_cubes.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -705,15 +723,6 @@ description: Artifact commands intersect_cubes.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -724,6 +733,15 @@ description: Artifact commands intersect_cubes.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -743,24 +761,6 @@ description: Artifact commands intersect_cubes.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -8,13 +8,13 @@ flowchart LR
6["Segment<br>[313, 320, 0]"] 6["Segment<br>[313, 320, 0]"]
7[Solid2d] 7[Solid2d]
end end
subgraph path19 [Path] subgraph path24 [Path]
19["Path<br>[58, 113, 0]"] 24["Path<br>[58, 113, 0]"]
20["Segment<br>[121, 177, 0]"] 25["Segment<br>[121, 177, 0]"]
21["Segment<br>[185, 241, 0]"] 26["Segment<br>[185, 241, 0]"]
22["Segment<br>[249, 305, 0]"] 27["Segment<br>[249, 305, 0]"]
23["Segment<br>[313, 320, 0]"] 28["Segment<br>[313, 320, 0]"]
24[Solid2d] 29[Solid2d]
end end
1["Plane<br>[33, 50, 0]"] 1["Plane<br>[33, 50, 0]"]
8["Sweep Extrusion<br>[328, 354, 0]"] 8["Sweep Extrusion<br>[328, 354, 0]"]
@ -25,20 +25,30 @@ flowchart LR
13["Cap Start"] 13["Cap Start"]
14["Cap End"] 14["Cap End"]
15["SweepEdge Opposite"] 15["SweepEdge Opposite"]
16["SweepEdge Opposite"] 16["SweepEdge Adjacent"]
17["SweepEdge Opposite"] 17["SweepEdge Opposite"]
18["Plane<br>[33, 50, 0]"] 18["SweepEdge Adjacent"]
25["Sweep Extrusion<br>[328, 354, 0]"] 19["SweepEdge Opposite"]
26[Wall] 20["SweepEdge Adjacent"]
27[Wall] 21["SweepEdge Opposite"]
28[Wall] 22["SweepEdge Adjacent"]
29[Wall] 23["Plane<br>[33, 50, 0]"]
30["Cap Start"] 30["Sweep Extrusion<br>[328, 354, 0]"]
31["Cap End"] 31[Wall]
32["SweepEdge Opposite"] 32[Wall]
33["SweepEdge Opposite"] 33[Wall]
34["SweepEdge Opposite"] 34[Wall]
35["CompositeSolid Intersect<br>[448, 477, 0]"] 35["Cap Start"]
36["Cap End"]
37["SweepEdge Opposite"]
38["SweepEdge Adjacent"]
39["SweepEdge Opposite"]
40["SweepEdge Adjacent"]
41["SweepEdge Opposite"]
42["SweepEdge Adjacent"]
43["SweepEdge Opposite"]
44["SweepEdge Adjacent"]
45["CompositeSolid Intersect<br>[448, 477, 0]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -47,15 +57,20 @@ flowchart LR
2 ---- 8 2 ---- 8
2 --- 7 2 --- 7
3 --- 9 3 --- 9
3 --- 15
3 --- 16
3 x--> 13 3 x--> 13
4 --- 10 4 --- 10
4 --- 15 4 --- 17
4 --- 18
4 x--> 13 4 x--> 13
5 --- 11 5 --- 11
5 --- 16 5 --- 19
5 --- 20
5 x--> 13 5 x--> 13
6 --- 12 6 --- 12
6 --- 17 6 --- 21
6 --- 22
6 x--> 13 6 x--> 13
8 --- 9 8 --- 9
8 --- 10 8 --- 10
@ -66,45 +81,80 @@ flowchart LR
8 --- 15 8 --- 15
8 --- 16 8 --- 16
8 --- 17 8 --- 17
15 <--x 10 8 --- 18
8 --- 19
8 --- 20
8 --- 21
8 --- 22
15 <--x 9
15 <--x 14 15 <--x 14
16 <--x 11 16 <--x 9
16 <--x 14 16 <--x 10
17 <--x 12 17 <--x 10
17 <--x 14 17 <--x 14
18 --- 19 18 <--x 10
19 --- 20 18 <--x 11
19 --- 21 19 <--x 11
19 --- 22 19 <--x 14
19 --- 23 20 <--x 11
19 ---- 25 20 <--x 12
19 --- 24 21 <--x 12
20 --- 26 21 <--x 14
20 x--> 30 22 <--x 9
21 --- 27 22 <--x 12
21 --- 32 23 --- 24
21 x--> 30 24 --- 25
22 --- 28 24 --- 26
22 --- 33 24 --- 27
22 x--> 30 24 --- 28
23 --- 29 24 ---- 30
23 --- 34 24 --- 29
23 x--> 30
25 --- 26
25 --- 27
25 --- 28
25 --- 29
25 --- 30
25 --- 31 25 --- 31
25 --- 32 25 --- 37
25 --- 33 25 --- 38
25 --- 34 25 x--> 35
32 <--x 27 26 --- 32
32 <--x 31 26 --- 39
33 <--x 28 26 --- 40
33 <--x 31 26 x--> 35
34 <--x 29 27 --- 33
34 <--x 31 27 --- 41
2 <--x 35 27 --- 42
19 <--x 35 27 x--> 35
28 --- 34
28 --- 43
28 --- 44
28 x--> 35
30 --- 31
30 --- 32
30 --- 33
30 --- 34
30 --- 35
30 --- 36
30 --- 37
30 --- 38
30 --- 39
30 --- 40
30 --- 41
30 --- 42
30 --- 43
30 --- 44
37 <--x 31
37 <--x 36
38 <--x 31
38 <--x 32
39 <--x 32
39 <--x 36
40 <--x 32
40 <--x 33
41 <--x 33
41 <--x 36
42 <--x 33
42 <--x 34
43 <--x 34
43 <--x 36
44 <--x 31
44 <--x 34
2 <--x 45
24 <--x 45
``` ```

View File

@ -143,101 +143,165 @@ flowchart LR
137["Cap Start"] 137["Cap Start"]
138["Cap End"] 138["Cap End"]
139["SweepEdge Opposite"] 139["SweepEdge Opposite"]
140["SweepEdge Opposite"] 140["SweepEdge Adjacent"]
141["SweepEdge Opposite"] 141["SweepEdge Opposite"]
142["SweepEdge Opposite"] 142["SweepEdge Adjacent"]
143["SweepEdge Opposite"] 143["SweepEdge Opposite"]
144["SweepEdge Opposite"] 144["SweepEdge Adjacent"]
145["SweepEdge Opposite"] 145["SweepEdge Opposite"]
146["SweepEdge Opposite"] 146["SweepEdge Adjacent"]
147["SweepEdge Opposite"] 147["SweepEdge Opposite"]
148["SweepEdge Opposite"] 148["SweepEdge Adjacent"]
149["SweepEdge Opposite"] 149["SweepEdge Opposite"]
150["SweepEdge Opposite"] 150["SweepEdge Adjacent"]
151["SweepEdge Opposite"] 151["SweepEdge Opposite"]
152["SweepEdge Opposite"] 152["SweepEdge Adjacent"]
153["SweepEdge Opposite"] 153["SweepEdge Opposite"]
154["SweepEdge Opposite"] 154["SweepEdge Adjacent"]
155["SweepEdge Opposite"] 155["SweepEdge Opposite"]
156["SweepEdge Opposite"] 156["SweepEdge Adjacent"]
157["SweepEdge Opposite"] 157["SweepEdge Opposite"]
158["SweepEdge Opposite"] 158["SweepEdge Adjacent"]
159["SweepEdge Opposite"] 159["SweepEdge Opposite"]
160["SweepEdge Opposite"] 160["SweepEdge Adjacent"]
161["SweepEdge Opposite"] 161["SweepEdge Opposite"]
162["SweepEdge Opposite"] 162["SweepEdge Adjacent"]
163["SweepEdge Opposite"] 163["SweepEdge Opposite"]
164["SweepEdge Opposite"] 164["SweepEdge Adjacent"]
165["SweepEdge Opposite"] 165["SweepEdge Opposite"]
166["SweepEdge Opposite"] 166["SweepEdge Adjacent"]
167["SweepEdge Opposite"] 167["SweepEdge Opposite"]
168["SweepEdge Opposite"] 168["SweepEdge Adjacent"]
169["SweepEdge Opposite"] 169["SweepEdge Opposite"]
170["SweepEdge Opposite"] 170["SweepEdge Adjacent"]
171["SweepEdge Opposite"] 171["SweepEdge Opposite"]
172["SweepEdge Opposite"] 172["SweepEdge Adjacent"]
173["SweepEdge Opposite"] 173["SweepEdge Opposite"]
174["SweepEdge Opposite"] 174["SweepEdge Adjacent"]
175["SweepEdge Opposite"] 175["SweepEdge Opposite"]
176["SweepEdge Opposite"] 176["SweepEdge Adjacent"]
177["SweepEdge Opposite"] 177["SweepEdge Opposite"]
178["SweepEdge Opposite"] 178["SweepEdge Adjacent"]
179["SweepEdge Opposite"] 179["SweepEdge Opposite"]
180["SweepEdge Opposite"] 180["SweepEdge Adjacent"]
181["SweepEdge Opposite"] 181["SweepEdge Opposite"]
182["SweepEdge Opposite"] 182["SweepEdge Adjacent"]
183["SweepEdge Opposite"] 183["SweepEdge Opposite"]
184["SweepEdge Opposite"] 184["SweepEdge Adjacent"]
185["SweepEdge Opposite"] 185["SweepEdge Opposite"]
186["SweepEdge Opposite"] 186["SweepEdge Adjacent"]
187["SweepEdge Opposite"] 187["SweepEdge Opposite"]
188["SweepEdge Opposite"] 188["SweepEdge Adjacent"]
189["SweepEdge Opposite"] 189["SweepEdge Opposite"]
190["SweepEdge Opposite"] 190["SweepEdge Adjacent"]
191["SweepEdge Opposite"] 191["SweepEdge Opposite"]
192["SweepEdge Opposite"] 192["SweepEdge Adjacent"]
193["SweepEdge Opposite"] 193["SweepEdge Opposite"]
194["SweepEdge Opposite"] 194["SweepEdge Adjacent"]
195["SweepEdge Opposite"] 195["SweepEdge Opposite"]
196["SweepEdge Opposite"] 196["SweepEdge Adjacent"]
197["SweepEdge Opposite"] 197["SweepEdge Opposite"]
198["SweepEdge Opposite"] 198["SweepEdge Adjacent"]
199["SweepEdge Opposite"] 199["SweepEdge Opposite"]
200["SweepEdge Opposite"] 200["SweepEdge Adjacent"]
201["SweepEdge Opposite"] 201["SweepEdge Opposite"]
202["SweepEdge Adjacent"] 202["SweepEdge Adjacent"]
203["EdgeCut Fillet<br>[5104, 5809, 0]"] 203["SweepEdge Opposite"]
204["EdgeCut Fillet<br>[5104, 5809, 0]"] 204["SweepEdge Adjacent"]
205["EdgeCut Fillet<br>[5104, 5809, 0]"] 205["SweepEdge Opposite"]
206["EdgeCut Fillet<br>[5104, 5809, 0]"] 206["SweepEdge Adjacent"]
207["EdgeCut Fillet<br>[5104, 5809, 0]"] 207["SweepEdge Opposite"]
208["EdgeCut Fillet<br>[5104, 5809, 0]"] 208["SweepEdge Adjacent"]
209["EdgeCut Fillet<br>[5104, 5809, 0]"] 209["SweepEdge Opposite"]
210["EdgeCut Fillet<br>[5104, 5809, 0]"] 210["SweepEdge Adjacent"]
211["EdgeCut Fillet<br>[5104, 5809, 0]"] 211["SweepEdge Opposite"]
212["EdgeCut Fillet<br>[5104, 5809, 0]"] 212["SweepEdge Adjacent"]
213["EdgeCut Fillet<br>[5104, 5809, 0]"] 213["SweepEdge Opposite"]
214["EdgeCut Fillet<br>[5104, 5809, 0]"] 214["SweepEdge Adjacent"]
215["EdgeCut Fillet<br>[5104, 5809, 0]"] 215["SweepEdge Opposite"]
216["EdgeCut Fillet<br>[5104, 5809, 0]"] 216["SweepEdge Adjacent"]
217["EdgeCut Fillet<br>[5104, 5809, 0]"] 217["SweepEdge Opposite"]
218["EdgeCut Fillet<br>[5104, 5809, 0]"] 218["SweepEdge Adjacent"]
219["EdgeCut Fillet<br>[5817, 6521, 0]"] 219["SweepEdge Opposite"]
220["EdgeCut Fillet<br>[5817, 6521, 0]"] 220["SweepEdge Adjacent"]
221["EdgeCut Fillet<br>[5817, 6521, 0]"] 221["SweepEdge Opposite"]
222["EdgeCut Fillet<br>[5817, 6521, 0]"] 222["SweepEdge Adjacent"]
223["EdgeCut Fillet<br>[5817, 6521, 0]"] 223["SweepEdge Opposite"]
224["EdgeCut Fillet<br>[5817, 6521, 0]"] 224["SweepEdge Adjacent"]
225["EdgeCut Fillet<br>[5817, 6521, 0]"] 225["SweepEdge Opposite"]
226["EdgeCut Fillet<br>[5817, 6521, 0]"] 226["SweepEdge Adjacent"]
227["EdgeCut Fillet<br>[5817, 6521, 0]"] 227["SweepEdge Opposite"]
228["EdgeCut Fillet<br>[5817, 6521, 0]"] 228["SweepEdge Adjacent"]
229["EdgeCut Fillet<br>[5817, 6521, 0]"] 229["SweepEdge Opposite"]
230["EdgeCut Fillet<br>[5817, 6521, 0]"] 230["SweepEdge Adjacent"]
231["EdgeCut Fillet<br>[5817, 6521, 0]"] 231["SweepEdge Opposite"]
232["EdgeCut Fillet<br>[5817, 6521, 0]"] 232["SweepEdge Adjacent"]
233["EdgeCut Fillet<br>[5817, 6521, 0]"] 233["SweepEdge Opposite"]
234["EdgeCut Fillet<br>[5817, 6521, 0]"] 234["SweepEdge Adjacent"]
235["SweepEdge Opposite"]
236["SweepEdge Adjacent"]
237["SweepEdge Opposite"]
238["SweepEdge Adjacent"]
239["SweepEdge Opposite"]
240["SweepEdge Adjacent"]
241["SweepEdge Opposite"]
242["SweepEdge Adjacent"]
243["SweepEdge Opposite"]
244["SweepEdge Adjacent"]
245["SweepEdge Opposite"]
246["SweepEdge Adjacent"]
247["SweepEdge Opposite"]
248["SweepEdge Adjacent"]
249["SweepEdge Opposite"]
250["SweepEdge Adjacent"]
251["SweepEdge Opposite"]
252["SweepEdge Adjacent"]
253["SweepEdge Opposite"]
254["SweepEdge Adjacent"]
255["SweepEdge Opposite"]
256["SweepEdge Adjacent"]
257["SweepEdge Opposite"]
258["SweepEdge Adjacent"]
259["SweepEdge Opposite"]
260["SweepEdge Adjacent"]
261["SweepEdge Opposite"]
262["SweepEdge Adjacent"]
263["SweepEdge Opposite"]
264["SweepEdge Adjacent"]
265["SweepEdge Opposite"]
266["SweepEdge Adjacent"]
267["EdgeCut Fillet<br>[5104, 5809, 0]"]
268["EdgeCut Fillet<br>[5104, 5809, 0]"]
269["EdgeCut Fillet<br>[5104, 5809, 0]"]
270["EdgeCut Fillet<br>[5104, 5809, 0]"]
271["EdgeCut Fillet<br>[5104, 5809, 0]"]
272["EdgeCut Fillet<br>[5104, 5809, 0]"]
273["EdgeCut Fillet<br>[5104, 5809, 0]"]
274["EdgeCut Fillet<br>[5104, 5809, 0]"]
275["EdgeCut Fillet<br>[5104, 5809, 0]"]
276["EdgeCut Fillet<br>[5104, 5809, 0]"]
277["EdgeCut Fillet<br>[5104, 5809, 0]"]
278["EdgeCut Fillet<br>[5104, 5809, 0]"]
279["EdgeCut Fillet<br>[5104, 5809, 0]"]
280["EdgeCut Fillet<br>[5104, 5809, 0]"]
281["EdgeCut Fillet<br>[5104, 5809, 0]"]
282["EdgeCut Fillet<br>[5104, 5809, 0]"]
283["EdgeCut Fillet<br>[5817, 6521, 0]"]
284["EdgeCut Fillet<br>[5817, 6521, 0]"]
285["EdgeCut Fillet<br>[5817, 6521, 0]"]
286["EdgeCut Fillet<br>[5817, 6521, 0]"]
287["EdgeCut Fillet<br>[5817, 6521, 0]"]
288["EdgeCut Fillet<br>[5817, 6521, 0]"]
289["EdgeCut Fillet<br>[5817, 6521, 0]"]
290["EdgeCut Fillet<br>[5817, 6521, 0]"]
291["EdgeCut Fillet<br>[5817, 6521, 0]"]
292["EdgeCut Fillet<br>[5817, 6521, 0]"]
293["EdgeCut Fillet<br>[5817, 6521, 0]"]
294["EdgeCut Fillet<br>[5817, 6521, 0]"]
295["EdgeCut Fillet<br>[5817, 6521, 0]"]
296["EdgeCut Fillet<br>[5817, 6521, 0]"]
297["EdgeCut Fillet<br>[5817, 6521, 0]"]
298["EdgeCut Fillet<br>[5817, 6521, 0]"]
1 --- 2 1 --- 2
1 --- 69 1 --- 69
2 --- 3 2 --- 3
@ -308,196 +372,260 @@ flowchart LR
2 ---- 72 2 ---- 72
2 --- 68 2 --- 68
3 --- 73 3 --- 73
3 --- 139
3 --- 140
3 x--> 137 3 x--> 137
4 --- 74 4 --- 74
4 --- 139 4 --- 141
4 --- 142
4 x--> 137 4 x--> 137
5 --- 75 5 --- 75
5 --- 140 5 --- 143
5 --- 144
5 x--> 137 5 x--> 137
6 --- 76 6 --- 76
6 --- 141 6 --- 145
6 --- 146
6 x--> 137 6 x--> 137
7 --- 77 7 --- 77
7 --- 142 7 --- 147
7 --- 148
7 x--> 137 7 x--> 137
8 --- 78 8 --- 78
8 --- 143 8 --- 149
8 --- 150
8 x--> 137 8 x--> 137
9 --- 79 9 --- 79
9 --- 144 9 --- 151
9 --- 202 9 --- 152
9 x--> 137 9 x--> 137
10 --- 80 10 --- 80
10 --- 145 10 --- 153
10 --- 154
10 x--> 137 10 x--> 137
11 --- 81 11 --- 81
11 --- 146 11 --- 155
11 --- 156
11 x--> 137 11 x--> 137
12 --- 82 12 --- 82
12 --- 147 12 --- 157
12 --- 158
12 x--> 137 12 x--> 137
13 --- 83 13 --- 83
13 --- 148 13 --- 159
13 --- 160
13 x--> 137 13 x--> 137
14 --- 84 14 --- 84
14 --- 149 14 --- 161
14 --- 162
14 x--> 137 14 x--> 137
15 --- 85 15 --- 85
15 --- 150 15 --- 163
15 --- 164
15 x--> 137 15 x--> 137
16 --- 86 16 --- 86
16 --- 151 16 --- 165
16 --- 166
16 x--> 137 16 x--> 137
17 --- 87 17 --- 87
17 --- 152 17 --- 167
17 --- 168
17 x--> 137 17 x--> 137
18 --- 88 18 --- 88
18 --- 153 18 --- 169
18 --- 170
18 x--> 137 18 x--> 137
19 --- 89 19 --- 89
19 --- 154 19 --- 171
19 --- 172
19 x--> 137 19 x--> 137
20 --- 90 20 --- 90
20 --- 155 20 --- 173
20 --- 174
20 x--> 137 20 x--> 137
21 --- 91 21 --- 91
21 --- 156 21 --- 175
21 --- 176
21 x--> 137 21 x--> 137
22 --- 92 22 --- 92
22 --- 157 22 --- 177
22 --- 178
22 x--> 137 22 x--> 137
23 --- 93 23 --- 93
23 --- 158 23 --- 179
23 --- 180
23 x--> 137 23 x--> 137
24 --- 94 24 --- 94
24 --- 159 24 --- 181
24 --- 182
24 x--> 137 24 x--> 137
25 --- 95 25 --- 95
25 --- 160 25 --- 183
25 --- 184
25 x--> 137 25 x--> 137
26 --- 96 26 --- 96
26 --- 161 26 --- 185
26 --- 186
26 x--> 137 26 x--> 137
27 --- 97 27 --- 97
27 --- 162 27 --- 187
27 --- 188
27 x--> 137 27 x--> 137
28 --- 98 28 --- 98
28 --- 163 28 --- 189
28 --- 190
28 x--> 137 28 x--> 137
29 --- 99 29 --- 99
29 --- 164 29 --- 191
29 --- 192
29 x--> 137 29 x--> 137
30 --- 100 30 --- 100
30 --- 165 30 --- 193
30 --- 194
30 x--> 137 30 x--> 137
31 --- 101 31 --- 101
31 --- 166 31 --- 195
31 --- 196
31 x--> 137 31 x--> 137
32 --- 102 32 --- 102
32 --- 167 32 --- 197
32 --- 198
32 x--> 137 32 x--> 137
33 --- 103 33 --- 103
33 --- 168 33 --- 199
33 --- 200
33 x--> 137 33 x--> 137
34 --- 104 34 --- 104
34 --- 169 34 --- 201
34 --- 202
34 x--> 137 34 x--> 137
35 --- 105 35 --- 105
35 --- 170 35 --- 203
35 --- 204
35 x--> 137 35 x--> 137
36 --- 106 36 --- 106
36 --- 171 36 --- 205
36 --- 206
36 x--> 137 36 x--> 137
37 --- 107 37 --- 107
37 --- 172 37 --- 207
37 --- 208
37 x--> 137 37 x--> 137
38 --- 108 38 --- 108
38 --- 173 38 --- 209
38 --- 210
38 x--> 137 38 x--> 137
39 --- 109 39 --- 109
39 --- 174 39 --- 211
39 --- 212
39 x--> 137 39 x--> 137
40 --- 110 40 --- 110
40 --- 175 40 --- 213
40 --- 214
40 x--> 137 40 x--> 137
41 --- 111 41 --- 111
41 --- 176 41 --- 215
41 --- 216
41 x--> 137 41 x--> 137
42 --- 112 42 --- 112
42 --- 177 42 --- 217
42 --- 218
42 x--> 137 42 x--> 137
43 --- 113 43 --- 113
43 --- 178 43 --- 219
43 --- 220
43 x--> 137 43 x--> 137
44 --- 114 44 --- 114
44 --- 179 44 --- 221
44 --- 222
44 x--> 137 44 x--> 137
45 --- 115 45 --- 115
45 --- 180 45 --- 223
45 --- 224
45 x--> 137 45 x--> 137
46 --- 116 46 --- 116
46 --- 181 46 --- 225
46 --- 226
46 x--> 137 46 x--> 137
47 --- 117 47 --- 117
47 --- 182 47 --- 227
47 --- 228
47 x--> 137 47 x--> 137
48 --- 118 48 --- 118
48 --- 183 48 --- 229
48 --- 230
48 x--> 137 48 x--> 137
49 --- 119 49 --- 119
49 --- 184 49 --- 231
49 --- 232
49 x--> 137 49 x--> 137
50 --- 120 50 --- 120
50 --- 185 50 --- 233
50 --- 234
50 x--> 137 50 x--> 137
51 --- 121 51 --- 121
51 --- 186 51 --- 235
51 --- 236
51 x--> 137 51 x--> 137
52 --- 122 52 --- 122
52 --- 187 52 --- 237
52 --- 238
52 x--> 137 52 x--> 137
53 --- 123 53 --- 123
53 --- 188 53 --- 239
53 --- 240
53 x--> 137 53 x--> 137
54 --- 124 54 --- 124
54 --- 189 54 --- 241
54 --- 242
54 x--> 137 54 x--> 137
55 --- 125 55 --- 125
55 --- 190 55 --- 243
55 --- 244
55 x--> 137 55 x--> 137
56 --- 126 56 --- 126
56 --- 191 56 --- 245
56 --- 246
56 x--> 137 56 x--> 137
57 --- 127 57 --- 127
57 --- 192 57 --- 247
57 --- 248
57 x--> 137 57 x--> 137
58 --- 128 58 --- 128
58 --- 193 58 --- 249
58 --- 250
58 x--> 137 58 x--> 137
59 --- 129 59 --- 129
59 --- 194 59 --- 251
59 --- 252
59 x--> 137 59 x--> 137
60 --- 130 60 --- 130
60 --- 195 60 --- 253
60 --- 254
60 x--> 137 60 x--> 137
61 --- 131 61 --- 131
61 --- 196 61 --- 255
61 --- 256
61 x--> 137 61 x--> 137
62 --- 132 62 --- 132
62 --- 197 62 --- 257
62 --- 258
62 x--> 137 62 x--> 137
63 --- 133 63 --- 133
63 --- 198 63 --- 259
63 --- 260
63 x--> 137 63 x--> 137
64 --- 134 64 --- 134
64 --- 199 64 --- 261
64 --- 262
64 x--> 137 64 x--> 137
65 --- 135 65 --- 135
65 --- 200 65 --- 263
65 --- 264
65 x--> 137 65 x--> 137
66 --- 136 66 --- 136
66 --- 201 66 --- 265
66 --- 266
66 x--> 137 66 x--> 137
69 --- 70 69 --- 70
69 --- 71 69 --- 71
@ -631,131 +759,292 @@ flowchart LR
72 --- 200 72 --- 200
72 --- 201 72 --- 201
72 --- 202 72 --- 202
139 <--x 74 72 --- 203
72 --- 204
72 --- 205
72 --- 206
72 --- 207
72 --- 208
72 --- 209
72 --- 210
72 --- 211
72 --- 212
72 --- 213
72 --- 214
72 --- 215
72 --- 216
72 --- 217
72 --- 218
72 --- 219
72 --- 220
72 --- 221
72 --- 222
72 --- 223
72 --- 224
72 --- 225
72 --- 226
72 --- 227
72 --- 228
72 --- 229
72 --- 230
72 --- 231
72 --- 232
72 --- 233
72 --- 234
72 --- 235
72 --- 236
72 --- 237
72 --- 238
72 --- 239
72 --- 240
72 --- 241
72 --- 242
72 --- 243
72 --- 244
72 --- 245
72 --- 246
72 --- 247
72 --- 248
72 --- 249
72 --- 250
72 --- 251
72 --- 252
72 --- 253
72 --- 254
72 --- 255
72 --- 256
72 --- 257
72 --- 258
72 --- 259
72 --- 260
72 --- 261
72 --- 262
72 --- 263
72 --- 264
72 --- 265
72 --- 266
139 <--x 73
139 <--x 138 139 <--x 138
140 <--x 75 140 <--x 73
140 <--x 138 140 <--x 74
141 <--x 76 141 <--x 74
141 <--x 138 141 <--x 138
142 <--x 77 142 <--x 74
142 <--x 138 142 <--x 75
143 <--x 78 143 <--x 75
143 <--x 138 143 <--x 138
144 <--x 79 144 <--x 75
144 <--x 138 144 <--x 76
145 <--x 80 145 <--x 76
145 <--x 138 145 <--x 138
146 <--x 81 146 <--x 76
146 <--x 138 146 <--x 77
147 <--x 82 147 <--x 77
147 <--x 138 147 <--x 138
148 <--x 83 149 <--x 78
148 <--x 138
149 <--x 84
149 <--x 138 149 <--x 138
150 <--x 85 151 <--x 79
150 <--x 138
151 <--x 86
151 <--x 138 151 <--x 138
152 <--x 87 153 <--x 80
152 <--x 138
153 <--x 88
153 <--x 138 153 <--x 138
154 <--x 89 155 <--x 81
154 <--x 138
155 <--x 90
155 <--x 138 155 <--x 138
156 <--x 91 157 <--x 82
156 <--x 138
157 <--x 92
157 <--x 138 157 <--x 138
158 <--x 93 159 <--x 83
158 <--x 138
159 <--x 94
159 <--x 138 159 <--x 138
160 <--x 95 161 <--x 84
160 <--x 138
161 <--x 96
161 <--x 138 161 <--x 138
162 <--x 97 163 <--x 85
162 <--x 138
163 <--x 98
163 <--x 138 163 <--x 138
164 <--x 99 164 <--x 85
164 <--x 138 164 <--x 86
165 <--x 100 165 <--x 86
165 <--x 138 165 <--x 138
166 <--x 101 166 <--x 86
166 <--x 138 166 <--x 87
167 <--x 102 167 <--x 87
167 <--x 138 167 <--x 138
168 <--x 103 168 <--x 87
168 <--x 138 168 <--x 88
169 <--x 104 169 <--x 88
169 <--x 138 169 <--x 138
170 <--x 105 170 <--x 88
170 <--x 138 170 <--x 89
171 <--x 106 171 <--x 89
171 <--x 138 171 <--x 138
172 <--x 107 172 <--x 89
172 <--x 138 172 <--x 90
173 <--x 108 173 <--x 90
173 <--x 138 173 <--x 138
174 <--x 109 174 <--x 90
174 <--x 138 174 <--x 91
175 <--x 110 175 <--x 91
175 <--x 138 175 <--x 138
176 <--x 111 176 <--x 91
176 <--x 138 176 <--x 92
177 <--x 112 177 <--x 92
177 <--x 138 177 <--x 138
178 <--x 113 178 <--x 92
178 <--x 138 178 <--x 93
179 <--x 114 179 <--x 93
179 <--x 138 179 <--x 138
180 <--x 115 181 <--x 94
180 <--x 138
181 <--x 116
181 <--x 138 181 <--x 138
182 <--x 117 183 <--x 95
182 <--x 138
183 <--x 118
183 <--x 138 183 <--x 138
184 <--x 119 185 <--x 96
184 <--x 138
185 <--x 120
185 <--x 138 185 <--x 138
186 <--x 121 187 <--x 97
186 <--x 138
187 <--x 122
187 <--x 138 187 <--x 138
188 <--x 123 189 <--x 98
188 <--x 138
189 <--x 124
189 <--x 138 189 <--x 138
190 <--x 125 191 <--x 99
190 <--x 138
191 <--x 126
191 <--x 138 191 <--x 138
192 <--x 127 193 <--x 100
192 <--x 138
193 <--x 128
193 <--x 138 193 <--x 138
194 <--x 129 195 <--x 101
194 <--x 138
195 <--x 130
195 <--x 138 195 <--x 138
196 <--x 131 196 <--x 101
196 <--x 138 196 <--x 102
197 <--x 132 197 <--x 102
197 <--x 138 197 <--x 138
198 <--x 133 198 <--x 102
198 <--x 138 198 <--x 103
199 <--x 134 199 <--x 103
199 <--x 138 199 <--x 138
200 <--x 135 200 <--x 103
200 <--x 138 200 <--x 104
201 <--x 136 201 <--x 104
201 <--x 138 201 <--x 138
202 <--x 203 202 <--x 104
202 <--x 105
203 <--x 105
203 <--x 138
204 <--x 105
204 <--x 106
205 <--x 106
205 <--x 138
206 <--x 106
206 <--x 107
207 <--x 107
207 <--x 138
208 <--x 107
208 <--x 108
209 <--x 108
209 <--x 138
210 <--x 108
210 <--x 109
211 <--x 109
211 <--x 138
213 <--x 110
213 <--x 138
215 <--x 111
215 <--x 138
217 <--x 112
217 <--x 138
219 <--x 113
219 <--x 138
221 <--x 114
221 <--x 138
223 <--x 115
223 <--x 138
225 <--x 116
225 <--x 138
227 <--x 117
227 <--x 138
228 <--x 117
228 <--x 118
229 <--x 118
229 <--x 138
230 <--x 118
230 <--x 119
231 <--x 119
231 <--x 138
232 <--x 119
232 <--x 120
233 <--x 120
233 <--x 138
234 <--x 120
234 <--x 121
235 <--x 121
235 <--x 138
236 <--x 121
236 <--x 122
237 <--x 122
237 <--x 138
238 <--x 122
238 <--x 123
239 <--x 123
239 <--x 138
240 <--x 123
240 <--x 124
241 <--x 124
241 <--x 138
242 <--x 124
242 <--x 125
243 <--x 125
243 <--x 138
245 <--x 126
245 <--x 138
247 <--x 127
247 <--x 138
249 <--x 128
249 <--x 138
251 <--x 129
251 <--x 138
253 <--x 130
253 <--x 138
255 <--x 131
255 <--x 138
257 <--x 132
257 <--x 138
259 <--x 133
259 <--x 138
260 <--x 133
260 <--x 134
261 <--x 134
261 <--x 138
262 <--x 134
262 <--x 135
263 <--x 135
263 <--x 138
264 <--x 135
264 <--x 136
265 <--x 136
265 <--x 138
266 <--x 73
266 <--x 136
152 <--x 267
154 <--x 268
156 <--x 269
158 <--x 270
184 <--x 271
186 <--x 272
188 <--x 273
190 <--x 274
216 <--x 275
218 <--x 276
220 <--x 277
222 <--x 278
248 <--x 279
250 <--x 280
252 <--x 281
254 <--x 282
148 <--x 283
150 <--x 284
160 <--x 285
162 <--x 286
180 <--x 287
182 <--x 288
192 <--x 289
194 <--x 290
212 <--x 291
214 <--x 292
224 <--x 293
226 <--x 294
244 <--x 295
246 <--x 296
256 <--x 297
258 <--x 298
``` ```

File diff suppressed because it is too large Load Diff

View File

@ -289,6 +289,15 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -299,6 +308,15 @@ description: Artifact commands ball-bearing.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -327,15 +345,6 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -346,6 +355,15 @@ description: Artifact commands ball-bearing.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -365,24 +383,6 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -526,6 +526,15 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -536,6 +545,15 @@ description: Artifact commands ball-bearing.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -564,15 +582,6 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -583,6 +592,15 @@ description: Artifact commands ball-bearing.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -602,24 +620,6 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -818,6 +818,15 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -828,6 +837,15 @@ description: Artifact commands ball-bearing.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -860,19 +878,19 @@ description: Artifact commands ball-bearing.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -907,19 +925,19 @@ description: Artifact commands ball-bearing.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -950,15 +968,6 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -969,6 +978,15 @@ description: Artifact commands ball-bearing.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -988,24 +1006,6 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1170,6 +1170,15 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1180,6 +1189,15 @@ description: Artifact commands ball-bearing.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1199,24 +1217,6 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1498,6 +1498,15 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1508,6 +1517,15 @@ description: Artifact commands ball-bearing.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1536,15 +1554,6 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1555,6 +1564,15 @@ description: Artifact commands ball-bearing.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1574,24 +1592,6 @@ description: Artifact commands ball-bearing.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -10,123 +10,178 @@ flowchart LR
6["Segment<br>[750, 796, 0]"] 6["Segment<br>[750, 796, 0]"]
7[Solid2d] 7[Solid2d]
end end
subgraph path13 [Path] subgraph path15 [Path]
13["Path<br>[980, 1036, 0]"] 15["Path<br>[980, 1036, 0]"]
14["Segment<br>[1042, 1101, 0]"] 16["Segment<br>[1042, 1101, 0]"]
15["Segment<br>[1107, 1114, 0]"] 17["Segment<br>[1107, 1114, 0]"]
16[Solid2d] 18[Solid2d]
end end
subgraph path21 [Path] subgraph path24 [Path]
21["Path<br>[1484, 1617, 0]"] 24["Path<br>[1484, 1617, 0]"]
22["Segment<br>[1623, 1683, 0]"] 25["Segment<br>[1623, 1683, 0]"]
23["Segment<br>[1689, 1720, 0]"] 26["Segment<br>[1689, 1720, 0]"]
24["Segment<br>[1726, 1754, 0]"] 27["Segment<br>[1726, 1754, 0]"]
25["Segment<br>[1760, 1767, 0]"] 28["Segment<br>[1760, 1767, 0]"]
26[Solid2d] 29[Solid2d]
end end
subgraph path33 [Path] subgraph path40 [Path]
33["Path<br>[2101, 2243, 0]"] 40["Path<br>[2101, 2243, 0]"]
34["Segment<br>[2101, 2243, 0]"] 41["Segment<br>[2101, 2243, 0]"]
35[Solid2d] 42[Solid2d]
end end
subgraph path41 [Path] subgraph path50 [Path]
41["Path<br>[2637, 2690, 0]"] 50["Path<br>[2637, 2690, 0]"]
42["Segment<br>[2637, 2690, 0]"] 51["Segment<br>[2637, 2690, 0]"]
43[Solid2d] 52[Solid2d]
end end
subgraph path44 [Path] subgraph path53 [Path]
44["Path<br>[2714, 2788, 0]"] 53["Path<br>[2714, 2788, 0]"]
45["Segment<br>[2714, 2788, 0]"] 54["Segment<br>[2714, 2788, 0]"]
46[Solid2d] 55[Solid2d]
end end
1["Plane<br>[610, 657, 0]"] 1["Plane<br>[610, 657, 0]"]
8["Sweep Extrusion<br>[848, 900, 0]"] 8["Sweep Extrusion<br>[848, 900, 0]"]
9[Wall] 9[Wall]
10["Cap Start"] 10["Cap Start"]
11["Cap End"] 11["Cap End"]
12["Plane<br>[957, 974, 0]"] 12["SweepEdge Opposite"]
17["Sweep Revolve<br>[1196, 1226, 0]"] 13["SweepEdge Adjacent"]
18[Wall] 14["Plane<br>[957, 974, 0]"]
19[Wall] 19["Sweep Revolve<br>[1196, 1226, 0]"]
20["Plane<br>[1461, 1478, 0]"] 20[Wall]
27["Sweep Revolve<br>[1809, 1839, 0]"] 21[Wall]
28[Wall] 22["SweepEdge Adjacent"]
29[Wall] 23["Plane<br>[1461, 1478, 0]"]
30[Wall] 30["Sweep Revolve<br>[1809, 1839, 0]"]
31[Wall] 31[Wall]
32["Plane<br>[2078, 2095, 0]"] 32[Wall]
36["Sweep Revolve<br>[2286, 2337, 0]"] 33[Wall]
37[Wall] 34[Wall]
38["Cap Start"] 35["SweepEdge Adjacent"]
39["Cap End"] 36["SweepEdge Adjacent"]
40["Plane<br>[2583, 2630, 0]"] 37["SweepEdge Adjacent"]
47["Sweep Extrusion<br>[2805, 2858, 0]"] 38["SweepEdge Adjacent"]
48[Wall] 39["Plane<br>[2078, 2095, 0]"]
49["Cap Start"] 43["Sweep Revolve<br>[2286, 2337, 0]"]
50["Cap End"] 44[Wall]
51["StartSketchOnPlane<br>[596, 658, 0]"] 45["Cap Start"]
52["StartSketchOnPlane<br>[2569, 2631, 0]"] 46["Cap End"]
47["SweepEdge Opposite"]
48["SweepEdge Adjacent"]
49["Plane<br>[2583, 2630, 0]"]
56["Sweep Extrusion<br>[2805, 2858, 0]"]
57[Wall]
58["Cap Start"]
59["Cap End"]
60["SweepEdge Opposite"]
61["SweepEdge Adjacent"]
62["StartSketchOnPlane<br>[596, 658, 0]"]
63["StartSketchOnPlane<br>[2569, 2631, 0]"]
1 --- 2 1 --- 2
1 --- 5 1 --- 5
2 --- 3 2 --- 3
2 ---- 8 2 ---- 8
2 --- 4 2 --- 4
3 --- 9 3 --- 9
3 --- 12
3 --- 13
3 x--> 10 3 x--> 10
5 --- 6 5 --- 6
5 --- 7 5 --- 7
8 --- 9 8 --- 9
8 --- 10 8 --- 10
8 --- 11 8 --- 11
12 --- 13 8 --- 12
13 --- 14 8 --- 13
13 --- 15 12 <--x 9
13 ---- 17 12 <--x 11
13 --- 16 13 <--x 9
14 --- 18 14 --- 15
15 --- 19 15 --- 16
17 --- 18 15 --- 17
17 --- 19 15 ---- 19
17 <--x 15 15 --- 18
20 --- 21 16 --- 20
21 --- 22 16 x--> 22
21 --- 23 17 --- 21
21 --- 24 17 --- 22
21 --- 25 19 --- 20
21 ---- 27 19 --- 21
21 --- 26 19 <--x 16
22 --- 28 19 --- 22
23 --- 29 19 <--x 17
24 --- 30 22 <--x 20
22 <--x 21
23 --- 24
24 --- 25
24 --- 26
24 --- 27
24 --- 28
24 ---- 30
24 --- 29
25 --- 31 25 --- 31
27 --- 28 25 --- 35
27 --- 29 26 --- 32
27 --- 30 26 --- 36
27 --- 31 27 --- 33
27 <--x 23 27 --- 37
27 <--x 24 28 --- 34
27 <--x 25 28 --- 38
32 --- 33 30 --- 31
33 --- 34 30 --- 32
33 ---- 36 30 --- 33
33 --- 35 30 --- 34
34 --- 37 30 <--x 25
34 x--> 38 30 --- 35
36 --- 37 30 <--x 26
36 --- 38 30 --- 36
36 --- 39 30 <--x 27
30 --- 37
30 <--x 28
30 --- 38
35 <--x 31
35 <--x 32
36 <--x 32
36 <--x 33
37 <--x 33
37 <--x 34
38 <--x 34
38 <--x 31
39 --- 40
40 --- 41 40 --- 41
40 --- 44 40 ---- 43
41 --- 42 40 --- 42
41 ---- 47 41 --- 44
41 --- 43 41 --- 47
42 --- 48 41 --- 48
42 x--> 49 41 x--> 45
44 --- 45 43 --- 44
44 --- 46 43 --- 45
47 --- 48 43 --- 46
47 --- 49 43 --- 47
47 --- 50 43 --- 48
1 <--x 51 47 <--x 44
40 <--x 52 47 <--x 46
48 <--x 44
49 --- 50
49 --- 53
50 --- 51
50 ---- 56
50 --- 52
51 --- 57
51 --- 60
51 --- 61
51 x--> 58
53 --- 54
53 --- 55
56 --- 57
56 --- 58
56 --- 59
56 --- 60
56 --- 61
60 <--x 57
60 <--x 59
61 <--x 57
1 <--x 62
49 <--x 63
``` ```

File diff suppressed because it is too large Load Diff

View File

@ -240,6 +240,15 @@ description: Artifact commands bottle.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -250,6 +259,15 @@ description: Artifact commands bottle.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -282,19 +300,19 @@ description: Artifact commands bottle.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -329,19 +347,19 @@ description: Artifact commands bottle.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -376,19 +394,19 @@ description: Artifact commands bottle.kcl
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_all_edge_faces", "type": "solid3d_get_opposite_edge",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]" "edge_id": "[uuid]",
"face_id": "[uuid]"
} }
}, },
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
"command": { "command": {
"type": "solid3d_get_opposite_edge", "type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]", "object_id": "[uuid]",
"edge_id": "[uuid]", "edge_id": "[uuid]"
"face_id": "[uuid]"
} }
}, },
{ {
@ -419,15 +437,6 @@ description: Artifact commands bottle.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -438,6 +447,15 @@ description: Artifact commands bottle.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -457,24 +475,6 @@ description: Artifact commands bottle.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -594,6 +594,15 @@ description: Artifact commands bottle.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -604,6 +613,15 @@ description: Artifact commands bottle.kcl
"face_id": "[uuid]" "face_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -623,24 +641,6 @@ description: Artifact commands bottle.kcl
"edge_id": "[uuid]" "edge_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "solid3d_get_all_edge_faces",
"object_id": "[uuid]",
"edge_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],

View File

@ -19,7 +19,9 @@ flowchart LR
13["Sweep Extrusion<br>[794, 821, 0]"] 13["Sweep Extrusion<br>[794, 821, 0]"]
14[Wall] 14[Wall]
15["Cap End"] 15["Cap End"]
16["StartSketchOnFace<br>[695, 732, 0]"] 16["SweepEdge Opposite"]
17["SweepEdge Adjacent"]
18["StartSketchOnFace<br>[695, 732, 0]"]
1 --- 2 1 --- 2
2 --- 3 2 --- 3
2 --- 4 2 --- 4
@ -32,8 +34,15 @@ flowchart LR
10 ---- 13 10 ---- 13
10 --- 12 10 --- 12
11 --- 14 11 --- 14
11 --- 16
11 --- 17
11 <--x 9 11 <--x 9
13 --- 14 13 --- 14
13 --- 15 13 --- 15
9 <--x 16 13 --- 16
13 --- 17
16 <--x 14
16 <--x 15
17 <--x 14
9 <--x 18
``` ```

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