DiscussionsIssue archiveOCCT:Modeling Algorithms

Archived issue #0030270

Modeling Algorithms - BRepBndLib should provide an option for skipping infinite entities

Open CASCADEOCCT:Modeling Algorithmsclosed16 public notes

Search issues

Description

Currently, BRepBndLib for a shape having infinite sub-shapes (usually issues coming from Data Exchange - invalid files, or extra entities not expected to be displayed) returns an infinite Bounding Box.

This has several side effects on consequential usage of this Bounding Box in algorithms:
- Estimating relative Linear Deflection parameter for BRepMesh is not possible.
- Efficient spatial splitting of the model is not possible.

It is proposed adding a new mode to BRepBndLib allowing to skip infinite elements within the shape or reporting them independently as two bounding boxes.

Steps to reproduce

pload MODELING
restore Attachment 2 (BREP) s
bounding s
bounding s -obb

Output:
AABB:
  -1e+100 -1e+100 -1e+100 1e+100 1e+100 1e+100
OBB:
  Oriented bounding box
  Center: 0 0 0
  X-axis: 1 0 0
  Y-axis: 0 1 0
  Z-axis: 0 0 1
  Half X: 1e+100
  Half Y: 1e+100
  Half Z: 1e+100

Public activity

16 archived notes

Participants are labeled by their role within this record.

01Commenter 2
Branch [archived branch] has been created by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Tue Oct 23 17:39:36 2018 +0300

    0030270: Modeling Algorithms - BRepBndLib should provide an option for skipping infinite entities
    
    Bnd_Box now keeps calculating of finite part of bounding box after specifying it to be Open in some direction.
    The finite part can be retrieved using new method Bnd_Box::FinitePart().
    
    Prs3d::GetDeflection() now uses Bnd_Box::FinitePart() when applying relative deflection.
    
    Draw Harness command bounding has been extended with option -finite returing a finite part of AABB.
02Commenter 2
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
03Commenter 2
Branch [archived branch] has been updated forcibly by Author.

[revision removed]
04Author
pload MODELING
restore [locate_data_file bug27448_b1255.brep] s
bounding s -print

Output:
Axes-aligned bounding box
X-range: -1e+100 1e+100
Y-range: -51.436175481590702 -4.8637965353791994
Z-range: -1e+100 1e+100
Finite part
X-range: -545.91626374705004 13.037164480842099
Y-range: -51.436175481590702 -4.8637965353791994
Z-range: -13.037164480842099 411.65056290693906


pload MODELING
restore Attachment 2 (BREP) s
bounding s -print

Output:
Axes-aligned bounding box
X-range: -1e+100 1e+100
Y-range: -1e+100 1e+100
Z-range: -1e+100 1e+100
Finite part
X-range: -0.049719769446288579 -0.038880230553711419
Y-range: 0.0044607606027138886 0.011500299495291081
Z-range: 0.020980230553711419 0.028019769446288582
05Author
06Commenter 2
Branch [archived branch] has been updated by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Wed Oct 24 11:44:27 2018 +0300

    # remarks

07Commenter 2
Branch [archived branch] has been created by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Tue Oct 23 17:39:36 2018 +0300

    0030270: Modeling Algorithms - BRepBndLib should provide an option for skipping infinite entities
    
    Bnd_Box now keeps calculating of finite part of bounding box after specifying it to be Open in some direction.
    The finite part can be retrieved using new method Bnd_Box::FinitePart().
    
    Prs3d::GetDeflection() now uses Bnd_Box::FinitePart() when applying relative deflection.
    
    Draw Harness command bounding has been extended with option -finite returing a finite part of AABB.
08Author
Patch has been updated following remarks.
09Commenter 9
src/Bnd/Bnd_Box.cxx
- 81: use the same logic as in other Update method: first check IsVoid().

tests/bugs/modalg_7/bug30270
- 10: use smallview instead of axo to reduce snapshot size.
10Commenter 10
Reviewed.
11Commenter 1
Combination -
OCCT branch : [archived branch] SHA - [revision removed]
Products branch : [archived branch] SHA - [revision removed]
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

Test cases:
bugs modalg_7 bug30270 - OK

CPU differences:
Debian80-64:
OCCT
Total CPU difference: 17580.3099999998 / 17520.90999999988 [+0.34%]
Products
Total CPU difference: 7445.660000000032 / 7462.09000000004 [-0.22%]
Windows-64-VC14:
OCCT
Total CPU difference: 17488.07090229844 / 17666.582846598394 [-1.01%]
Products
Total CPU difference: 8364.243216599998 / 8372.402068899986 [-0.10%]

Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention
12Commenter 2
Branch [archived branch] has been updated by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Wed Oct 24 18:04:06 2018 +0300

    # BndLib::Add() - fixed Bnd_Box misuse

13Commenter 2
Branch [archived branch] has been created by Author.

[revision removed]


Detailed log of new commits:

Author: Author
Date: Tue Oct 23 17:39:36 2018 +0300

    0030270: Modeling Algorithms - BRepBndLib should provide an option for skipping infinite entities
    
    Bnd_Box now keeps calculating of finite part of bounding box after specifying it to be Open in some direction.
    The finite part can be retrieved using new method Bnd_Box::FinitePart().
    
    Prs3d::GetDeflection() now uses Bnd_Box::FinitePart() when applying relative deflection.
    
    Draw Harness command bounding has been extended with option -finite returing a finite part of AABB.
14Commenter 2
Branch [archived branch] has been deleted by Participant.

[revision removed]
15Commenter 2
Branch [archived branch] has been deleted by Participant.

[revision removed]
16Commenter 2
Branch [archived branch] has been deleted by Participant.

[revision removed]