Since #261/#257, a warped authored polygon face or a warped B-rep face without a surface compiles with a certified slab-width bound. Under a boolean, the same operand makes the whole result None/Unbounded: the exact compiler refuses those nodes, and the slab width is not carried into the boolean's report. A consumer (axioval) currently compiles every authored operand alone to detect warp, and refuses warped operands under booleans.
Done when
- A boolean with a warped operand reports a certified bound that includes the operand's slab width. It goes through the operand-perturbation contract (ADR 0080,
BooleanReport): the result is the exact boolean of operands perturbed within the reported deviation. Otherwise it is refused by name, with the reason stated in the deviation report; no Unbounded is returned without one.
- Tests cover a warped authored box (one corner lifted, and a saddle) unioned and subtracted with a planar box. The bound must be at least each warped operand's slab width,
meets_requested() must follow from it, and an unwarped pair must stay exact.
- The doc for
DeviationPath/deviation notes states how an operand's certified bound composes into a boolean's bound.
Since #261/#257, a warped authored polygon face or a warped B-rep face without a surface compiles with a certified slab-width bound. Under a boolean, the same operand makes the whole result
None/Unbounded: the exact compiler refuses those nodes, and the slab width is not carried into the boolean's report. A consumer (axioval) currently compiles every authored operand alone to detect warp, and refuses warped operands under booleans.Done when
BooleanReport): the result is the exact boolean of operands perturbed within the reported deviation. Otherwise it is refused by name, with the reason stated in the deviation report; noUnboundedis returned without one.meets_requested()must follow from it, and an unwarped pair must stay exact.DeviationPath/deviation notes states how an operand's certified bound composes into a boolean's bound.