Don't use old validation infrastructure in Shape

It doesn't do anything useful anymore, and has been replaced by the new
validation infrastructure, which validates automatically on insertion.
This commit is contained in:
Hanno Braun 2022-11-09 12:00:02 +01:00
parent 635c49035b
commit ee266a7da2
7 changed files with 28 additions and 33 deletions

View File

@ -5,7 +5,7 @@ use fj_kernel::{
algorithms::reverse::Reverse, algorithms::reverse::Reverse,
iter::ObjectIters, iter::ObjectIters,
objects::{Face, Objects, Sketch}, objects::{Face, Objects, Sketch},
validate::{Validate, Validated, ValidationConfig, ValidationError}, validate::{ValidationConfig, ValidationError},
}; };
use fj_math::Aabb; use fj_math::Aabb;
@ -19,7 +19,7 @@ impl Shape for fj::Difference2d {
config: &ValidationConfig, config: &ValidationConfig,
objects: &Objects, objects: &Objects,
debug_info: &mut DebugInfo, debug_info: &mut DebugInfo,
) -> Result<Validated<Self::Brep>, ValidationError> { ) -> Result<Self::Brep, ValidationError> {
// This method assumes that `b` is fully contained within `a`: // This method assumes that `b` is fully contained within `a`:
// https://github.com/hannobraun/Fornjot/issues/92 // https://github.com/hannobraun/Fornjot/issues/92
@ -87,7 +87,7 @@ impl Shape for fj::Difference2d {
} }
let difference = Sketch::builder(objects).with_faces(faces).build(); let difference = Sketch::builder(objects).with_faces(faces).build();
difference.deref().clone().validate_with_config(config) Ok(difference.deref().clone())
} }
fn bounding_volume(&self) -> Aabb<3> { fn bounding_volume(&self) -> Aabb<3> {

View File

@ -1,7 +1,7 @@
use fj_interop::debug::DebugInfo; use fj_interop::debug::DebugInfo;
use fj_kernel::{ use fj_kernel::{
objects::{FaceSet, Objects}, objects::{FaceSet, Objects},
validate::{Validate, Validated, ValidationConfig, ValidationError}, validate::{ValidationConfig, ValidationError},
}; };
use fj_math::Aabb; use fj_math::Aabb;
@ -15,16 +15,16 @@ impl Shape for fj::Group {
config: &ValidationConfig, config: &ValidationConfig,
objects: &Objects, objects: &Objects,
debug_info: &mut DebugInfo, debug_info: &mut DebugInfo,
) -> Result<Validated<Self::Brep>, ValidationError> { ) -> Result<Self::Brep, ValidationError> {
let mut faces = FaceSet::new(); let mut faces = FaceSet::new();
let a = self.a.compute_brep(config, objects, debug_info)?; let a = self.a.compute_brep(config, objects, debug_info)?;
let b = self.b.compute_brep(config, objects, debug_info)?; let b = self.b.compute_brep(config, objects, debug_info)?;
faces.extend(a.into_inner()); faces.extend(a);
faces.extend(b.into_inner()); faces.extend(b);
faces.validate_with_config(config) Ok(faces)
} }
fn bounding_volume(&self) -> Aabb<3> { fn bounding_volume(&self) -> Aabb<3> {

View File

@ -27,7 +27,7 @@ mod transform;
use fj_interop::debug::DebugInfo; use fj_interop::debug::DebugInfo;
use fj_kernel::{ use fj_kernel::{
objects::{FaceSet, Objects, Sketch}, objects::{FaceSet, Objects, Sketch},
validate::{Validate, Validated, ValidationConfig, ValidationError}, validate::{ValidationConfig, ValidationError},
}; };
use fj_math::Aabb; use fj_math::Aabb;
@ -42,7 +42,7 @@ pub trait Shape {
config: &ValidationConfig, config: &ValidationConfig,
objects: &Objects, objects: &Objects,
debug_info: &mut DebugInfo, debug_info: &mut DebugInfo,
) -> Result<Validated<Self::Brep>, ValidationError>; ) -> Result<Self::Brep, ValidationError>;
/// Access the axis-aligned bounding box of a shape /// Access the axis-aligned bounding box of a shape
/// ///
@ -59,28 +59,24 @@ impl Shape for fj::Shape {
config: &ValidationConfig, config: &ValidationConfig,
objects: &Objects, objects: &Objects,
debug_info: &mut DebugInfo, debug_info: &mut DebugInfo,
) -> Result<Validated<Self::Brep>, ValidationError> { ) -> Result<Self::Brep, ValidationError> {
match self { match self {
Self::Shape2d(shape) => shape Self::Shape2d(shape) => Ok(shape
.compute_brep(config, objects, debug_info)? .compute_brep(config, objects, debug_info)?
.into_inner()
.faces() .faces()
.clone() .clone()),
.validate_with_config(config),
Self::Group(shape) => { Self::Group(shape) => {
shape.compute_brep(config, objects, debug_info) shape.compute_brep(config, objects, debug_info)
} }
Self::Sweep(shape) => shape Self::Sweep(shape) => Ok(shape
.compute_brep(config, objects, debug_info)? .compute_brep(config, objects, debug_info)?
.into_inner()
.shells() .shells()
.map(|shell| shell.faces().clone()) .map(|shell| shell.faces().clone())
.reduce(|mut a, b| { .reduce(|mut a, b| {
a.extend(b); a.extend(b);
a a
}) })
.unwrap_or_default() .unwrap_or_default()),
.validate_with_config(config),
Self::Transform(shape) => { Self::Transform(shape) => {
shape.compute_brep(config, objects, debug_info) shape.compute_brep(config, objects, debug_info)
} }
@ -105,7 +101,7 @@ impl Shape for fj::Shape2d {
config: &ValidationConfig, config: &ValidationConfig,
objects: &Objects, objects: &Objects,
debug_info: &mut DebugInfo, debug_info: &mut DebugInfo,
) -> Result<Validated<Self::Brep>, ValidationError> { ) -> Result<Self::Brep, ValidationError> {
match self { match self {
Self::Difference(shape) => { Self::Difference(shape) => {
shape.compute_brep(config, objects, debug_info) shape.compute_brep(config, objects, debug_info)

View File

@ -46,7 +46,7 @@ impl ShapeProcessor {
let objects = Objects::new(); let objects = Objects::new();
let mut debug_info = DebugInfo::new(); let mut debug_info = DebugInfo::new();
let shape = shape.compute_brep(&config, &objects, &mut debug_info)?; let shape = shape.compute_brep(&config, &objects, &mut debug_info)?;
let mesh = (&shape.into_inner(), tolerance).triangulate(); let mesh = (&shape, tolerance).triangulate();
Ok(ProcessedShape { Ok(ProcessedShape {
aabb, aabb,

View File

@ -5,7 +5,7 @@ use fj_kernel::{
builder::HalfEdgeBuilder, builder::HalfEdgeBuilder,
objects::{Cycle, Face, HalfEdge, Objects, Sketch}, objects::{Cycle, Face, HalfEdge, Objects, Sketch},
partial::HasPartial, partial::HasPartial,
validate::{Validate, Validated, ValidationConfig, ValidationError}, validate::{ValidationConfig, ValidationError},
}; };
use fj_math::{Aabb, Point}; use fj_math::{Aabb, Point};
@ -16,10 +16,10 @@ impl Shape for fj::Sketch {
fn compute_brep( fn compute_brep(
&self, &self,
config: &ValidationConfig, _: &ValidationConfig,
objects: &Objects, objects: &Objects,
_: &mut DebugInfo, _: &mut DebugInfo,
) -> Result<Validated<Self::Brep>, ValidationError> { ) -> Result<Self::Brep, ValidationError> {
let surface = objects.surfaces.xy_plane(); let surface = objects.surfaces.xy_plane();
let face = match self.chain() { let face = match self.chain() {
@ -51,7 +51,7 @@ impl Shape for fj::Sketch {
}; };
let sketch = Sketch::builder(objects).with_faces([face]).build(); let sketch = Sketch::builder(objects).with_faces([face]).build();
sketch.deref().clone().validate_with_config(config) Ok(sketch.deref().clone())
} }
fn bounding_volume(&self) -> Aabb<3> { fn bounding_volume(&self) -> Aabb<3> {

View File

@ -4,7 +4,7 @@ use fj_interop::debug::DebugInfo;
use fj_kernel::{ use fj_kernel::{
algorithms::sweep::Sweep, algorithms::sweep::Sweep,
objects::{Objects, Solid}, objects::{Objects, Solid},
validate::{Validate, Validated, ValidationConfig, ValidationError}, validate::{ValidationConfig, ValidationError},
}; };
use fj_math::{Aabb, Vector}; use fj_math::{Aabb, Vector};
@ -18,14 +18,14 @@ impl Shape for fj::Sweep {
config: &ValidationConfig, config: &ValidationConfig,
objects: &Objects, objects: &Objects,
debug_info: &mut DebugInfo, debug_info: &mut DebugInfo,
) -> Result<Validated<Self::Brep>, ValidationError> { ) -> Result<Self::Brep, ValidationError> {
let sketch = self.shape().compute_brep(config, objects, debug_info)?; let sketch = self.shape().compute_brep(config, objects, debug_info)?;
let sketch = objects.sketches.insert(sketch.into_inner())?; let sketch = objects.sketches.insert(sketch)?;
let path = Vector::from(self.path()); let path = Vector::from(self.path());
let solid = sketch.sweep(path, objects)?; let solid = sketch.sweep(path, objects)?;
solid.deref().clone().validate_with_config(config) Ok(solid.deref().clone())
} }
fn bounding_volume(&self) -> Aabb<3> { fn bounding_volume(&self) -> Aabb<3> {

View File

@ -2,7 +2,7 @@ use fj_interop::debug::DebugInfo;
use fj_kernel::{ use fj_kernel::{
algorithms::transform::TransformObject, algorithms::transform::TransformObject,
objects::{FaceSet, Objects}, objects::{FaceSet, Objects},
validate::{Validate, Validated, ValidationConfig, ValidationError}, validate::{ValidationConfig, ValidationError},
}; };
use fj_math::{Aabb, Transform, Vector}; use fj_math::{Aabb, Transform, Vector};
@ -16,14 +16,13 @@ impl Shape for fj::Transform {
config: &ValidationConfig, config: &ValidationConfig,
objects: &Objects, objects: &Objects,
debug_info: &mut DebugInfo, debug_info: &mut DebugInfo,
) -> Result<Validated<Self::Brep>, ValidationError> { ) -> Result<Self::Brep, ValidationError> {
let faces = self let faces = self
.shape .shape
.compute_brep(config, objects, debug_info)? .compute_brep(config, objects, debug_info)?
.into_inner()
.transform(&make_transform(self), objects)?; .transform(&make_transform(self), objects)?;
faces.validate_with_config(config) Ok(faces)
} }
fn bounding_volume(&self) -> Aabb<3> { fn bounding_volume(&self) -> Aabb<3> {