forked from 1b-agent/opencadstudio-upstream
feat: BOX, SPHERE, CYLINDER primitives + EXTRUDE / REVOLVE commands
BOX, SPHERE, and CYLINDER build truck topology solids and tessellate them into MeshModels stored alongside a Solid3D placeholder entity so the GPU mesh pipeline renders them immediately. EXTRUDE picks any closed 2D profile (Circle, LwPolyline, etc.), attaches a planar face via try_attach_plane, and translational-sweeps it (tsweep Face → Solid) along Z by the given height. REVOLVE picks a profile, two axis points, and an angle (default 360°), then rotational-sweeps the wire (rsweep) around the axis. Three new CmdResult variants drive the operations: CommitSolid3D, ExtrudeEntity, RevolveEntity. Scene::layer_color() added to retrieve the active layer's RGBA color. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
1 parent
a773a1a1f1
commit
549ae38459
7 files changed
+592
-1
No files matched your search
@@ -1127,6 +1127,14 @@ impl Scene {
|
||||
handle
|
||||
}
|
||||
|
||||
/// Returns the RGBA color for the given layer name.
|
||||
pub fn layer_color(&self, layer: &str) -> [f32; 4] {
|
||||
let layer_entry = self.document.layers.get(layer);
|
||||
let color = layer_entry.map(|l| &l.color).unwrap_or(&acadrust::types::Color::WHITE);
|
||||
let [r, g, b, _] = crate::scene::tessellate::aci_to_rgba(color);
|
||||
[r, g, b, 1.0]
|
||||
}
|
||||
|
||||
pub fn custom_block_names(&self) -> Vec<String> {
|
||||
self.document
|
||||
.block_records
|
||||
|
||||
Reference in new issue
Block a user