View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0032933 | Community | OCCT:Modeling Algorithms | public | 2022-04-13 15:33 | 2022-04-13 16:02 |
Reporter | CharlemagneLasse | Assigned To | |||
Priority | normal | Severity | minor | ||
Status | new | Resolution | open | ||
Platform | Linux | OS | Debian bullseye amd64 | ||
Product Version | 7.5.3 | ||||
Summary | 0032933: Fillet fails in ChFi3d_IsInFront because no face was found | ||||
Description | (This problem was seen with the version bundled with FreeCAD 0.20.28445 but can be reproduced easily with the master version directly from OCCT) The ChFi3d_IsInFront code is currently not handling all the combinations correctly. For example, if `if(fd1->IndexOfS2() == fd2->IndexOfS2())` is true, it can happen that the `TopoDS::Face(DStr.Shape(fd1->Index(jf1)))` returns a Face with entity == NULL. Without the change from 0032931, the process will simply segfault. But even with the changes from 0032931, the fillet will not be created. More information (including how it was debugged) can be found at: * https://github.com/FreeCAD/FreeCAD/issues/6625#issuecomment-1094139670 * https://forum.freecadweb.org/viewtopic.php?p=584239#p584239 | ||||
Steps To Reproduce | # get most recent OCCT $ cd /tmp/ $ git clone https://git.dev.opencascade.org/repos/occt.git OCCT # get build dependencies based on opencascade package in the Debian package source (deb-src) repository. will most likely work differently on whatever Distro you are using $ sudo apt build-dep opencascade # build everything (I only have 4 cores - you might change it if you are not working on a system with a 10 year old CPU) $ cd OCCT $ mkdir build $ cd build $ cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_VERBOSE_MAKEFILE=true && make -j4 # prepare reproducer script $ cd /tmp/OCCT/ $ cat > test.script << "EOF" # load the brp, get edges and then try to add fillet on the problematic edges pload ALL restore /tmp/Body.Shape.brp b explode b E blend b2 b 1 b_10 1 b_18 1 b_19 1 b_20 1 b_21 1 b_17 # REMARK: following line is also good enough to cause a crash (inner two edges of the L shape). But it is not the operation from the original reporter: # blend b2 b 1 b_19 1 b_20 EOF # start DRAWEXE shell # usually I would have done it like that. But it is then not 100% reproducible due to various system effects. # So I just use gdb in the actual command to improve my live and make it 100% reproducible #$ LD_LIBRARY_PATH=/tmp/OCCT/build/lin64/gcc/libd/ CASROOT=/tmp/OCCT ./build/lin64/gcc/bind/DRAWEXE -f test.script $ LD_LIBRARY_PATH=/tmp/OCCT/build/lin64/gcc/libd/ CASROOT=/tmp/OCCT gdb -q --ex run --args ./build/lin64/gcc/bind/DRAWEXE -f test.script | ||||
Tags | No tags attached. | ||||
Test case number | |||||
Date Modified | Username | Field | Change |
---|---|---|---|
2022-04-13 15:33 | CharlemagneLasse | New Issue | |
2022-04-13 15:33 | CharlemagneLasse | Assigned To | => msv |
2022-04-13 16:02 |
|
Assigned To | msv => azv |