mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-18 22:33:33 +00:00
Remove additional fuzz markup on halfspace operands and initially process with smaller fuzz. Fixes #601
This commit is contained in:
@@ -3938,7 +3938,7 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a, const TopoDS_Shap
|
|||||||
bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_, const TopTools_ListOfShape& b__, BOPAlgo_Operation op, TopoDS_Shape& result, double fuzziness) {
|
bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_, const TopTools_ListOfShape& b__, BOPAlgo_Operation op, TopoDS_Shape& result, double fuzziness) {
|
||||||
|
|
||||||
if (fuzziness < 0.) {
|
if (fuzziness < 0.) {
|
||||||
fuzziness = getValue(GV_PRECISION);
|
fuzziness = getValue(GV_PRECISION) / 10.;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @todo, it does seem a bit odd, we first triangulate non-planar faces
|
// @todo, it does seem a bit odd, we first triangulate non-planar faces
|
||||||
|
|||||||
@@ -609,8 +609,7 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcBooleanResult* l, TopoDS_Shape
|
|||||||
#if OCC_VERSION_HEX < 0x60900
|
#if OCC_VERSION_HEX < 0x60900
|
||||||
bool valid_result = boolean_operation(s1, s2, occ_op, shape);
|
bool valid_result = boolean_operation(s1, s2, occ_op, shape);
|
||||||
#else
|
#else
|
||||||
const double fuzz = has_halfspace_operand ? getValue(GV_PRECISION) * 10. : -1.;
|
bool valid_result = boolean_operation(s1, second_operand_shapes, occ_op, shape);
|
||||||
bool valid_result = boolean_operation(s1, second_operand_shapes, occ_op, shape, fuzz);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_DIFFERENCE) {
|
if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_DIFFERENCE) {
|
||||||
|
|||||||
Reference in New Issue
Block a user