Compare commits

...

1 Commits

Author SHA1 Message Date
319ffe6670 trying this out 2024-12-13 13:51:57 -08:00
3 changed files with 156 additions and 99 deletions

159
src/wasm-lib/Cargo.lock generated
View File

@ -121,9 +121,9 @@ dependencies = [
[[package]]
name = "anyhow"
version = "1.0.93"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775"
checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7"
dependencies = [
"backtrace",
]
@ -176,7 +176,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -187,7 +187,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -204,7 +204,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -401,9 +401,9 @@ dependencies = [
[[package]]
name = "chrono"
version = "0.4.38"
version = "0.4.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825"
dependencies = [
"android-tzdata",
"iana-time-zone",
@ -474,7 +474,7 @@ dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -665,7 +665,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -676,7 +676,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
dependencies = [
"darling_core",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -737,7 +737,7 @@ dependencies = [
"rustfmt-wrapper",
"serde",
"serde_tokenstream",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -748,7 +748,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -791,7 +791,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -829,7 +829,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -990,7 +990,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -1086,7 +1086,7 @@ dependencies = [
"inflections",
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -1112,7 +1112,7 @@ dependencies = [
"fnv",
"futures-core",
"futures-sink",
"http 1.1.0",
"http 1.2.0",
"indexmap 2.7.0",
"slab",
"tokio",
@ -1215,9 +1215,9 @@ dependencies = [
[[package]]
name = "http"
version = "1.1.0"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea"
dependencies = [
"bytes",
"fnv",
@ -1242,7 +1242,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
dependencies = [
"bytes",
"http 1.1.0",
"http 1.2.0",
]
[[package]]
@ -1253,7 +1253,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
dependencies = [
"bytes",
"futures-util",
"http 1.1.0",
"http 1.2.0",
"http-body 1.0.1",
"pin-project-lite",
]
@ -1303,7 +1303,7 @@ dependencies = [
"futures-channel",
"futures-util",
"h2",
"http 1.1.0",
"http 1.2.0",
"http-body 1.0.1",
"httparse",
"itoa",
@ -1320,7 +1320,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333"
dependencies = [
"futures-util",
"http 1.1.0",
"http 1.2.0",
"hyper 1.4.1",
"hyper-util",
"rustls",
@ -1340,7 +1340,7 @@ dependencies = [
"bytes",
"futures-channel",
"futures-util",
"http 1.1.0",
"http 1.2.0",
"http-body 1.0.1",
"hyper 1.4.1",
"pin-project-lite",
@ -1494,7 +1494,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -1705,7 +1705,7 @@ dependencies = [
"git_rev",
"gltf-json",
"handlebars",
"http 1.1.0",
"http 1.2.0",
"iai",
"image",
"indexmap 2.7.0",
@ -1792,7 +1792,7 @@ dependencies = [
"data-encoding",
"format_serde_error",
"futures",
"http 1.1.0",
"http 1.2.0",
"itertools 0.13.0",
"log",
"mime_guess",
@ -1818,9 +1818,8 @@ dependencies = [
[[package]]
name = "kittycad-modeling-cmds"
version = "0.2.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b77259b37acafa360d98af27431ac394bc8899eeed7037513832ddbee856811"
version = "0.2.80"
source = "git+https://github.com/KittyCAD/modeling-api.git?branch=mike/multi-extrude-experimentation2#e2dd07d25f76b87f69eccdbd9f6b526da02f226c"
dependencies = [
"anyhow",
"chrono",
@ -1828,7 +1827,7 @@ dependencies = [
"enum-iterator",
"enum-iterator-derive",
"euler",
"http 1.1.0",
"http 1.2.0",
"kittycad-modeling-cmds-macros",
"kittycad-unit-conversion-derive",
"measurements",
@ -1844,24 +1843,22 @@ dependencies = [
[[package]]
name = "kittycad-modeling-cmds-macros"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb9bb1a594541b878adc1c8dcb821328774bf7aa09b65b104a206b1291a5235c"
source = "git+https://github.com/KittyCAD/modeling-api.git?branch=mike/multi-extrude-experimentation2#e2dd07d25f76b87f69eccdbd9f6b526da02f226c"
dependencies = [
"kittycad-modeling-cmds-macros-impl",
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
name = "kittycad-modeling-cmds-macros-impl"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6607507a8a0e4273b943179f0a3ef8e90712308d1d3095246040c29cfdbf985b"
source = "git+https://github.com/KittyCAD/modeling-api.git?branch=mike/multi-extrude-experimentation2#e2dd07d25f76b87f69eccdbd9f6b526da02f226c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -2011,7 +2008,7 @@ checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -2310,7 +2307,7 @@ dependencies = [
"regex",
"regex-syntax 0.8.5",
"structmeta",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -2324,7 +2321,7 @@ dependencies = [
"regex",
"regex-syntax 0.8.5",
"structmeta",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -2364,7 +2361,7 @@ dependencies = [
"pest_meta",
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -2422,7 +2419,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -2552,14 +2549,14 @@ dependencies = [
"proc-macro-error-attr2",
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
name = "proc-macro2"
version = "1.0.89"
version = "1.0.92"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
dependencies = [
"unicode-ident",
]
@ -2611,7 +2608,7 @@ dependencies = [
"proc-macro2",
"pyo3-macros-backend",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -2624,7 +2621,7 @@ dependencies = [
"proc-macro2",
"pyo3-build-config",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -2862,7 +2859,7 @@ dependencies = [
"futures-core",
"futures-util",
"h2",
"http 1.1.0",
"http 1.2.0",
"http-body 1.0.1",
"http-body-util",
"hyper 1.4.1",
@ -2904,7 +2901,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f67ad7fdf5c0a015763fcd164bee294b13fb7b6f89f1b55961d40f00c3e32d6b"
dependencies = [
"async-trait",
"http 1.1.0",
"http 1.2.0",
"reqwest",
"reqwest-middleware",
]
@ -2917,7 +2914,7 @@ checksum = "d1ccd3b55e711f91a9885a2fa6fbbb2e39db1776420b062efc058c6410f7e5e3"
dependencies = [
"anyhow",
"async-trait",
"http 1.1.0",
"http 1.2.0",
"reqwest",
"serde",
"thiserror 1.0.68",
@ -2934,7 +2931,7 @@ dependencies = [
"async-trait",
"futures",
"getrandom",
"http 1.1.0",
"http 1.2.0",
"hyper 1.4.1",
"parking_lot 0.11.2",
"reqwest",
@ -2955,7 +2952,7 @@ dependencies = [
"anyhow",
"async-trait",
"getrandom",
"http 1.1.0",
"http 1.2.0",
"matchit",
"opentelemetry",
"reqwest",
@ -3159,7 +3156,7 @@ dependencies = [
"proc-macro2",
"quote",
"serde_derive_internals",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3199,9 +3196,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
[[package]]
name = "serde"
version = "1.0.215"
version = "1.0.216"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e"
dependencies = [
"serde_derive",
]
@ -3217,13 +3214,13 @@ dependencies = [
[[package]]
name = "serde_derive"
version = "1.0.215"
version = "1.0.216"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3234,7 +3231,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3258,7 +3255,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3279,7 +3276,7 @@ dependencies = [
"proc-macro2",
"quote",
"serde",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3428,7 +3425,7 @@ dependencies = [
"proc-macro2",
"quote",
"structmeta-derive",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3439,7 +3436,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3461,7 +3458,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustversion",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3504,9 +3501,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.87"
version = "2.0.90"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
dependencies = [
"proc-macro2",
"quote",
@ -3530,7 +3527,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3638,7 +3635,7 @@ checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3649,7 +3646,7 @@ checksum = "22efd00f33f93fa62848a7cab956c3d38c8d43095efda1decfc2b3a5dc0b8972"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3761,7 +3758,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3903,7 +3900,7 @@ checksum = "84fd902d4e0b9a4b27f2f440108dc034e1758628a9b702f8ec61ad66355422fa"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -3931,7 +3928,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -4014,7 +4011,7 @@ checksum = "0ea0b99e8ec44abd6f94a18f28f7934437809dd062820797c52401298116f70e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
"termcolor",
]
@ -4027,7 +4024,7 @@ dependencies = [
"byteorder",
"bytes",
"data-encoding",
"http 1.1.0",
"http 1.2.0",
"httparse",
"log",
"rand 0.8.5",
@ -4193,7 +4190,7 @@ dependencies = [
"proc-macro-error2",
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -4255,7 +4252,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
"wasm-bindgen-shared",
]
@ -4290,7 +4287,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@ -4671,7 +4668,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
"synstructure",
]
@ -4693,7 +4690,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]
@ -4713,7 +4710,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
"synstructure",
]
@ -4742,7 +4739,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.90",
]
[[package]]

View File

@ -76,7 +76,7 @@ members = [
[workspace.dependencies]
http = "1"
kittycad = { version = "0.3.28", default-features = false, features = ["js", "requests"] }
kittycad-modeling-cmds = { version = "0.2.77", features = ["websocket"] }
kittycad-modeling-cmds = { version = "0.2.80", features = ["websocket"] }
[workspace.lints.clippy]
assertions_on_result_states = "warn"
@ -93,6 +93,7 @@ name = "modify"
path = "tests/modify/main.rs"
# Example: how to point modeling-api at a different repo (e.g. a branch or a local clone)
#[patch.crates-io]
[patch.crates-io]
kittycad-modeling-cmds = { git = "https://github.com/KittyCAD/modeling-api.git", branch = "mike/multi-extrude-experimentation2" }
#kittycad-modeling-cmds = { path = "../../../modeling-api/modeling-cmds" }
#kittycad-modeling-session = { path = "../../../modeling-api/modeling-session" }

View File

@ -1,6 +1,6 @@
//! Functions related to extruding.
use std::collections::HashMap;
use std::collections::{ HashMap, HashSet };
use anyhow::Result;
use derive_docs::stdlib;
@ -87,7 +87,12 @@ async fn inner_extrude(
// Extrude the element(s).
let sketches: Vec<Sketch> = sketch_set.into();
let sketch_on_ids: HashSet<_> = sketches.iter().map(|sketch| sketch.on.id()).collect();
let consistent_sketch_base = sketch_on_ids.len() == 1;
let mut solids = Vec::new();
if !consistent_sketch_base || sketches.len() == 1 {
for sketch in &sketches {
// Before we extrude, we need to enable the sketch mode.
// We do this here in case extrude is called out of order.
@ -113,6 +118,7 @@ async fn inner_extrude(
ModelingCmd::from(mcmd::Extrude {
target: sketch.id.into(),
distance: LengthUnit(length),
faces: None,
}),
)
.await?;
@ -123,8 +129,61 @@ async fn inner_extrude(
ModelingCmd::SketchModeDisable(mcmd::SketchModeDisable {}),
)
.await?;
//everything inside this call is EXTREMELY inefficient - mike
//we should be doing this on demand as we need it, not upfront
solids.push(do_post_extrude(sketch.clone(), length, exec_state, args.clone()).await?);
}
} else {
args.batch_modeling_cmd(
exec_state.id_generator.next_uuid(),
ModelingCmd::from(mcmd::EnableSketchMode {
animated: false,
ortho: false,
entity_id: *sketch_on_ids.iter().next().unwrap(), //someone else can make this better
adjust_camera: false,
planar_normal: None, //TODO - handle this too
}),
)
.await?;
let sketch_ids: Vec<_> = sketches.iter().map(|sketch| sketch.id).collect();
args.batch_modeling_cmd(
id,
ModelingCmd::from(mcmd::MultiExtrude {
target_ids: sketch_ids,
distance: LengthUnit(length),
}),
)
.await?;
args.batch_modeling_cmd(
exec_state.id_generator.next_uuid(),
ModelingCmd::SketchModeDisable(mcmd::SketchModeDisable {}),
)
.await?;
//HACK - not doing this for patterns. see above - mike
//for sketch in &sketches {
//solids.push(do_post_extrude(sketch.clone(), length, exec_state, args.clone()).await?);
//}
/*let solid = Box::new(Solid {
// Ok so you would think that the id would be the id of the solid,
// that we passed in to the function, but it's actually the id of the
// sketch.
id: sketch.id,
value: new_value,
meta: sketch.meta.clone(),
sketch,
height: length,
start_cap_id,
end_cap_id,
edge_cuts: vec![],
});
solids.push(solid);*/
}
Ok(solids.into())
}