Skip to content

Commit 8108393

Browse files
authored
KCL.py: Fn to import then snapshot CAD files (#7962)
Closes #7939
1 parent 291c5d9 commit 8108393

File tree

6 files changed

+358
-22
lines changed

6 files changed

+358
-22
lines changed

rust/Cargo.lock

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ dashmap = { version = "6.1.0" }
3636
http = "1"
3737
indexmap = "2.10.0"
3838
kittycad = { version = "0.3.37", default-features = false, features = ["js", "requests"] }
39-
kittycad-modeling-cmds = { version = "0.2.128", features = ["ts-rs", "websocket"] }
39+
kittycad-modeling-cmds = { version = "=0.2.129", features = ["ts-rs", "websocket"] }
4040
lazy_static = "1.5.0"
4141
miette = "7.6.0"
42-
pyo3 = { version = "0.24.2" }
42+
pyo3 = { version = "0.25.1" }
4343
serde = { version = "1", features = ["derive"] }
4444
serde_json = { version = "1" }
4545
slog = "2.7.0"
@@ -59,7 +59,7 @@ iter_over_hash_type = "warn"
5959
lossy_float_literal = "warn"
6060
result_large_err = "allow"
6161

62-
# Example: how to point modeling-app at a different repo (e.g. a branch or a local clone)
62+
#Example: how to point modeling-app at a different repo (e.g. a branch or a local clone)
6363
#[patch.crates-io]
64-
# kittycad-modeling-cmds = { path = "../../modeling-api/modeling-cmds" }
64+
#kittycad-modeling-cmds = { path = "../../modeling-api/modeling-cmds" }
6565
#kittycad-modeling-session = { path = "../../../modeling-api/modeling-session" }

rust/kcl-python-bindings/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ kcl-lib = { path = "../kcl-lib", features = [
1919
"disable-println",
2020
] }
2121
#kcl-lib = { path = "../modeling-app/src/wasm-lib/kcl", default-features = false, features = ["pyo3", "engine", "disable-println"] }
22-
kittycad-modeling-cmds = { workspace = true }
22+
kittycad-modeling-cmds = { workspace = true, features = ["python"] }
2323
miette = { workspace = true, features = ["fancy"] }
2424
pyo3 = { workspace = true, features = ["serde", "experimental-async"] }
2525
serde = { workspace = true }
Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
ISO-10303-21;
2+
HEADER;
3+
FILE_DESCRIPTION((('zoo.dev export')), '2;1');
4+
FILE_NAME('dump.step', '2025-07-31T20:17:48.201203987+00:00', ('Author unknown'), ('Organization unknown'), 'zoo.dev beta', 'zoo.dev', 'Authorization unknown');
5+
FILE_SCHEMA(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF'));
6+
ENDSEC;
7+
DATA;
8+
#1 = (
9+
LENGTH_UNIT()
10+
NAMED_UNIT(*)
11+
SI_UNIT($, .METRE.)
12+
);
13+
#2 = (
14+
NAMED_UNIT(*)
15+
PLANE_ANGLE_UNIT()
16+
SI_UNIT($, .RADIAN.)
17+
);
18+
#3 = UNCERTAINTY_MEASURE_WITH_UNIT(0.00001, #1, 'DISTANCE_ACCURACY_VALUE', $);
19+
#4 = (
20+
GEOMETRIC_REPRESENTATION_CONTEXT(3)
21+
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#3))
22+
GLOBAL_UNIT_ASSIGNED_CONTEXT((#1, #2))
23+
REPRESENTATION_CONTEXT('', '3D')
24+
);
25+
#5 = CARTESIAN_POINT('NONE', (0, 0, -0));
26+
#6 = VERTEX_POINT('NONE', #5);
27+
#7 = CARTESIAN_POINT('NONE', (0.001, 0, -0));
28+
#8 = VERTEX_POINT('NONE', #7);
29+
#9 = CARTESIAN_POINT('NONE', (0.001, 0.001, -0));
30+
#10 = VERTEX_POINT('NONE', #9);
31+
#11 = CARTESIAN_POINT('NONE', (0, 0.001, -0));
32+
#12 = VERTEX_POINT('NONE', #11);
33+
#13 = CARTESIAN_POINT('NONE', (0.001, 0, -0.001));
34+
#14 = VERTEX_POINT('NONE', #13);
35+
#15 = CARTESIAN_POINT('NONE', (0.001, 0.001, -0.001));
36+
#16 = VERTEX_POINT('NONE', #15);
37+
#17 = CARTESIAN_POINT('NONE', (0, 0, -0.001));
38+
#18 = VERTEX_POINT('NONE', #17);
39+
#19 = CARTESIAN_POINT('NONE', (0, 0.001, -0.001));
40+
#20 = VERTEX_POINT('NONE', #19);
41+
#21 = DIRECTION('NONE', (1, 0, 0));
42+
#22 = VECTOR('NONE', #21, 1);
43+
#23 = CARTESIAN_POINT('NONE', (0, 0, -0));
44+
#24 = LINE('NONE', #23, #22);
45+
#25 = DIRECTION('NONE', (0, 1, 0));
46+
#26 = VECTOR('NONE', #25, 1);
47+
#27 = CARTESIAN_POINT('NONE', (0.001, 0, -0));
48+
#28 = LINE('NONE', #27, #26);
49+
#29 = DIRECTION('NONE', (1, 0, 0));
50+
#30 = VECTOR('NONE', #29, 1);
51+
#31 = CARTESIAN_POINT('NONE', (0, 0.001, -0));
52+
#32 = LINE('NONE', #31, #30);
53+
#33 = DIRECTION('NONE', (0, 1, 0));
54+
#34 = VECTOR('NONE', #33, 1);
55+
#35 = CARTESIAN_POINT('NONE', (0, 0, -0));
56+
#36 = LINE('NONE', #35, #34);
57+
#37 = DIRECTION('NONE', (0, 0, -1));
58+
#38 = VECTOR('NONE', #37, 1);
59+
#39 = CARTESIAN_POINT('NONE', (0.001, 0, -0));
60+
#40 = LINE('NONE', #39, #38);
61+
#41 = DIRECTION('NONE', (0, 1, 0));
62+
#42 = VECTOR('NONE', #41, 1);
63+
#43 = CARTESIAN_POINT('NONE', (0.001, 0, -0.001));
64+
#44 = LINE('NONE', #43, #42);
65+
#45 = DIRECTION('NONE', (0, 0, -1));
66+
#46 = VECTOR('NONE', #45, 1);
67+
#47 = CARTESIAN_POINT('NONE', (0.001, 0.001, -0));
68+
#48 = LINE('NONE', #47, #46);
69+
#49 = DIRECTION('NONE', (-1, 0, 0));
70+
#50 = VECTOR('NONE', #49, 1);
71+
#51 = CARTESIAN_POINT('NONE', (0.001, 0, -0.001));
72+
#52 = LINE('NONE', #51, #50);
73+
#53 = DIRECTION('NONE', (0, 1, 0));
74+
#54 = VECTOR('NONE', #53, 1);
75+
#55 = CARTESIAN_POINT('NONE', (0, 0, -0.001));
76+
#56 = LINE('NONE', #55, #54);
77+
#57 = DIRECTION('NONE', (-1, 0, 0));
78+
#58 = VECTOR('NONE', #57, 1);
79+
#59 = CARTESIAN_POINT('NONE', (0.001, 0.001, -0.001));
80+
#60 = LINE('NONE', #59, #58);
81+
#61 = DIRECTION('NONE', (0, 0, 1));
82+
#62 = VECTOR('NONE', #61, 1);
83+
#63 = CARTESIAN_POINT('NONE', (0, 0, -0.001));
84+
#64 = LINE('NONE', #63, #62);
85+
#65 = DIRECTION('NONE', (0, 0, 1));
86+
#66 = VECTOR('NONE', #65, 1);
87+
#67 = CARTESIAN_POINT('NONE', (0, 0.001, -0.001));
88+
#68 = LINE('NONE', #67, #66);
89+
#69 = EDGE_CURVE('NONE', #6, #8, #24, .T.);
90+
#70 = EDGE_CURVE('NONE', #8, #10, #28, .T.);
91+
#71 = EDGE_CURVE('NONE', #12, #10, #32, .T.);
92+
#72 = EDGE_CURVE('NONE', #6, #12, #36, .T.);
93+
#73 = EDGE_CURVE('NONE', #8, #14, #40, .T.);
94+
#74 = EDGE_CURVE('NONE', #14, #16, #44, .T.);
95+
#75 = EDGE_CURVE('NONE', #10, #16, #48, .T.);
96+
#76 = EDGE_CURVE('NONE', #14, #18, #52, .T.);
97+
#77 = EDGE_CURVE('NONE', #18, #20, #56, .T.);
98+
#78 = EDGE_CURVE('NONE', #16, #20, #60, .T.);
99+
#79 = EDGE_CURVE('NONE', #18, #6, #64, .T.);
100+
#80 = EDGE_CURVE('NONE', #20, #12, #68, .T.);
101+
#81 = CARTESIAN_POINT('NONE', (0.0005, 0.0005, -0));
102+
#82 = DIRECTION('NONE', (0, 0, 1));
103+
#83 = AXIS2_PLACEMENT_3D('NONE', #81, #82, $);
104+
#84 = PLANE('NONE', #83);
105+
#85 = CARTESIAN_POINT('NONE', (0.001, 0.0005, -0.0005));
106+
#86 = DIRECTION('NONE', (1, 0, 0));
107+
#87 = AXIS2_PLACEMENT_3D('NONE', #85, #86, $);
108+
#88 = PLANE('NONE', #87);
109+
#89 = CARTESIAN_POINT('NONE', (0.0005, 0.0005, -0.001));
110+
#90 = DIRECTION('NONE', (0, -0, -1));
111+
#91 = AXIS2_PLACEMENT_3D('NONE', #89, #90, $);
112+
#92 = PLANE('NONE', #91);
113+
#93 = CARTESIAN_POINT('NONE', (0, 0.0005, -0.0005));
114+
#94 = DIRECTION('NONE', (-1, 0, 0));
115+
#95 = AXIS2_PLACEMENT_3D('NONE', #93, #94, $);
116+
#96 = PLANE('NONE', #95);
117+
#97 = CARTESIAN_POINT('NONE', (0, 0, -0));
118+
#98 = DIRECTION('NONE', (0, 1, 0));
119+
#99 = AXIS2_PLACEMENT_3D('NONE', #97, #98, $);
120+
#100 = PLANE('NONE', #99);
121+
#101 = CARTESIAN_POINT('NONE', (0, 0.001, -0));
122+
#102 = DIRECTION('NONE', (0, 1, 0));
123+
#103 = AXIS2_PLACEMENT_3D('NONE', #101, #102, $);
124+
#104 = PLANE('NONE', #103);
125+
#105 = ORIENTED_EDGE('NONE', *, *, #69, .T.);
126+
#106 = ORIENTED_EDGE('NONE', *, *, #70, .T.);
127+
#107 = ORIENTED_EDGE('NONE', *, *, #71, .F.);
128+
#108 = ORIENTED_EDGE('NONE', *, *, #72, .F.);
129+
#109 = EDGE_LOOP('NONE', (#105, #106, #107, #108));
130+
#110 = FACE_BOUND('NONE', #109, .T.);
131+
#111 = ADVANCED_FACE('NONE', (#110), #84, .T.);
132+
#112 = ORIENTED_EDGE('NONE', *, *, #73, .T.);
133+
#113 = ORIENTED_EDGE('NONE', *, *, #74, .T.);
134+
#114 = ORIENTED_EDGE('NONE', *, *, #75, .F.);
135+
#115 = ORIENTED_EDGE('NONE', *, *, #70, .F.);
136+
#116 = EDGE_LOOP('NONE', (#112, #113, #114, #115));
137+
#117 = FACE_BOUND('NONE', #116, .T.);
138+
#118 = ADVANCED_FACE('NONE', (#117), #88, .T.);
139+
#119 = ORIENTED_EDGE('NONE', *, *, #76, .T.);
140+
#120 = ORIENTED_EDGE('NONE', *, *, #77, .T.);
141+
#121 = ORIENTED_EDGE('NONE', *, *, #78, .F.);
142+
#122 = ORIENTED_EDGE('NONE', *, *, #74, .F.);
143+
#123 = EDGE_LOOP('NONE', (#119, #120, #121, #122));
144+
#124 = FACE_BOUND('NONE', #123, .T.);
145+
#125 = ADVANCED_FACE('NONE', (#124), #92, .T.);
146+
#126 = ORIENTED_EDGE('NONE', *, *, #79, .T.);
147+
#127 = ORIENTED_EDGE('NONE', *, *, #72, .T.);
148+
#128 = ORIENTED_EDGE('NONE', *, *, #80, .F.);
149+
#129 = ORIENTED_EDGE('NONE', *, *, #77, .F.);
150+
#130 = EDGE_LOOP('NONE', (#126, #127, #128, #129));
151+
#131 = FACE_BOUND('NONE', #130, .T.);
152+
#132 = ADVANCED_FACE('NONE', (#131), #96, .T.);
153+
#133 = ORIENTED_EDGE('NONE', *, *, #79, .F.);
154+
#134 = ORIENTED_EDGE('NONE', *, *, #76, .F.);
155+
#135 = ORIENTED_EDGE('NONE', *, *, #73, .F.);
156+
#136 = ORIENTED_EDGE('NONE', *, *, #69, .F.);
157+
#137 = EDGE_LOOP('NONE', (#133, #134, #135, #136));
158+
#138 = FACE_BOUND('NONE', #137, .T.);
159+
#139 = ADVANCED_FACE('NONE', (#138), #100, .F.);
160+
#140 = ORIENTED_EDGE('NONE', *, *, #71, .T.);
161+
#141 = ORIENTED_EDGE('NONE', *, *, #75, .T.);
162+
#142 = ORIENTED_EDGE('NONE', *, *, #78, .T.);
163+
#143 = ORIENTED_EDGE('NONE', *, *, #80, .T.);
164+
#144 = EDGE_LOOP('NONE', (#140, #141, #142, #143));
165+
#145 = FACE_BOUND('NONE', #144, .T.);
166+
#146 = ADVANCED_FACE('NONE', (#145), #104, .T.);
167+
#147 = CLOSED_SHELL('NONE', (#111, #118, #125, #132, #139, #146));
168+
#148 = MANIFOLD_SOLID_BREP('NONE', #147);
169+
#149 = APPLICATION_CONTEXT('configuration controlled 3D design of mechanical parts and assemblies');
170+
#150 = PRODUCT_DEFINITION_CONTEXT('part definition', #149, 'design');
171+
#151 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ());
172+
#152 = PRODUCT_DEFINITION_FORMATION('', $, #151);
173+
#153 = PRODUCT_DEFINITION('design', $, #152, #150);
174+
#154 = PRODUCT_DEFINITION_SHAPE('NONE', $, #153);
175+
#155 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#148), #4);
176+
#156 = SHAPE_DEFINITION_REPRESENTATION(#154, #155);
177+
#157 = COLOUR_RGB('NONE', 0.8999999761581421, 0.8999999761581421, 0.8999999761581421);
178+
#158 = FILL_AREA_STYLE_COLOUR('NONE', #157);
179+
#159 = FILL_AREA_STYLE('NONE', (#158));
180+
#160 = SURFACE_STYLE_FILL_AREA(#159);
181+
#161 = SURFACE_SIDE_STYLE('NONE', (#160));
182+
#162 = SURFACE_STYLE_USAGE(.BOTH., #161);
183+
#163 = PRESENTATION_STYLE_ASSIGNMENT((#162));
184+
#164 = STYLED_ITEM('NONE', (#163), #148);
185+
#165 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('NONE', (#164), #4);
186+
ENDSEC;
187+
END-ISO-10303-21;

0 commit comments

Comments
 (0)