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> {