MCPcopy Create free account
hub / github.com/ad-si/LuaCAD / parse_cylinder_args

Function parse_cylinder_args

crates/luacad/src/lua_engine.rs:144–192  ·  view source on GitHub ↗

Returns (r1, r2, height, segments, center).

(
  args: &mlua::MultiValue,
)

Source from the content-addressed store, hash-verified

142
143 // size = {w, d, h}
144 if let Ok(LuaValue::Table(size_t)) = t.get::<mlua::Value>("size") {
145 return read(&size_t, count);
146 }
147 // size = n, the same length along every axis
148 if let Ok(size) = t.get::<f32>("size") {
149 return vec![Some(size); count];
150 }
151 // {{w, d, h}, center = true}
152 if let Ok(LuaValue::Table(inner)) = t.get::<mlua::Value>(1) {
153 return read(&inner, count);
154 }
155 // {w, d, h}
156 read(t, count)
157}
158
159// ---------------------------------------------------------------------------
160// cube() argument parsing
161// ---------------------------------------------------------------------------
162
163/// Parse cube() arguments: supports all LuaCAD forms.
164/// Returns (w, d, h, center).
165fn parse_cube_args(
166 args: &mlua::MultiValue,
167) -> mlua::Result<(f32, f32, f32, bool)> {
168 if args.is_empty() {
169 return Err(mlua::Error::RuntimeError(
170 "cube() requires at least 1 argument".to_string(),
171 ));
172 }
173
174 let first = &args[0];
175
176 if let LuaValue::Table(t) = first {
177 check_table_keys(t, "cube", &["size", "center"])?;
178
179 let size = table_size_components(t, 3);
180 let w = size[0].unwrap_or(1.0);
181 let d = size[1].unwrap_or(1.0);
182 let h = size[2].unwrap_or(1.0);
183 let center = table_get_bool(t, "cube", "center")?;
184 return Ok((w, d, h, center));
185 }
186
187 // Number forms
188 let s = lua_val_to_f32(first).ok_or_else(|| {
189 mlua::Error::RuntimeError(
190 "cube() argument must be a number, three numbers, or a table".to_string(),
191 )
192 })?;
193
194 // cube(w, d, h) — three separate number args
195 if args.len() >= 3 {

Callers 1

execute_luaFunction · 0.85

Calls 5

table_segmentsFunction · 0.85
lua_val_to_f32Function · 0.85
is_emptyMethod · 0.80
table_get_f32Function · 0.70
table_get_boolFunction · 0.70

Tested by

no test coverage detected