Complete 3D face creation and editing

This commit is contained in:
ramox81 committed 2026-08-28 14:35:56 +03:00
1 parent cc430cdbe9
commit b8fb6f5ddb
6 files changed
+616 -45

No files matched your search

+25
View File
@@ -454,6 +454,31 @@ impl OpenCADStudio {
self.tabs[i].active_cmd = Some(Box::new(new_cmd));
}
"3DFACE" => {
use crate::modules::draw::draw::face3d::Face3dCommand;
let new_cmd = Face3dCommand::new();
self.command_line.push_info(&new_cmd.prompt());
self.tabs[i].active_cmd = Some(Box::new(new_cmd));
}
"EDGE" => {
use crate::modules::draw::draw::face3d::FaceEdgeCommand;
let faces = self.tabs[i]
.scene
.document
.entities()
.filter_map(|entity| match entity {
acadrust::EntityType::Face3D(face) => {
Some((face.common.handle, face.clone()))
}
_ => None,
})
.collect();
let new_cmd = FaceEdgeCommand::new(faces);
self.command_line.push_info(&new_cmd.prompt());
self.tabs[i].active_cmd = Some(Box::new(new_cmd));
}
// 2D filled solid. Reached via SO / SOLID2D — the bare SOLID verb is
// currently the shaded-display toggle (token collision tracked).
"SOLID" | "SOLID2D" => {
+3
View File
@@ -122,6 +122,9 @@ impl OpenCADStudio {
acadrust::EntityType::LwPolyline(polyline) => Some(polyline.vertices.len()),
acadrust::EntityType::Polyline2D(polyline) => Some(polyline.vertices.len()),
acadrust::EntityType::Leader(leader) => Some(leader.vertices.len()),
acadrust::EntityType::Face3D(face) => {
Some(if face.is_triangle() { 3 } else { 4 })
}
acadrust::EntityType::Spline(spline) => {
Some(if crate::entities::spline::shows_fit_points(spline) {
spline.fit_points.len()
+3
View File
@@ -4901,6 +4901,9 @@ impl OpenCADStudio {
match self.tabs[i].scene.document.get_entity(handles[0]) {
Some(acadrust::EntityType::LwPolyline(p)) => p.vertices.len(),
Some(acadrust::EntityType::Polyline2D(p)) => p.vertices.len(),
Some(acadrust::EntityType::Face3D(face)) => {
if face.is_triangle() { 3 } else { 4 }
}
Some(acadrust::EntityType::Table(table)) => {
table.row_count().saturating_mul(table.column_count())
}