View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0030419||Open CASCADE||OCCT:Shape Healing||public||2018-12-19 16:22||2022-10-24 10:43|
|Summary||0030419: ShapeFix_Face copies B-spline curves instead of splitting them on fix missing seam|
|Description||This issue originates from the following scenario:|
1. Load a STEP model from GrabCAD (https://grabcad.com/library/branco-bda-22-0-diesel-engine-1) in any our tools (CAD Assistant, CAD Processor, DMU Reviewer, OCCT Draw, etc.).
2. Resave the model back as a STEP file.
The initial STEP file (created in SIEMENS PLM Software NX 7.5 and translated to STEP with STEP Tools software) is ~90MiB. After resaving this file with OCCT translator (pcurves disabled) the file becomes ~190MiB (and much bigger if pcurves are enabled).
One of the probable reasons why this happens is in how ShapeFix works just after the STEP model is translated (i.e., the logic behind XSAlgo_AlgoContainer::ProcessShape()). In particular, there is a problem in Fix Missing Seam operator. For the attached face, it splits all B-spline curves to produce new edges. However, the resulting new edges still contain the full curve instead of containing just certain portions of it. The healed model is perfectly valid but it contains a lot of redundant data. As a result, shape healing creates 935,164 new points, each recorded as Cartesian Point STEP entity (hence the file size).
It looks reasonable to make Fix Missing Seam operator split the B-spline curves instead of just copying and trimming them. Does that make sense?
|Steps To Reproduce||restore ShapeFix_Face_21888_before.brep s|
fixshape r s -l -o -h +m -d -s -i -n
explode r e
# Check host curve for the edge 32.
mkcurve c_32 r_32
trim c_32 c_32
# Check host curve for the edge 29: it is duplicate of c_32.
mkcurve c_29 r_29
trim c_29 c_29
|Tags||No tags attached.|
|Test case number|
||Assigned To||=> szv|
||File Added: ShapeFix_Face_21888_before.brep|
||File Added: e32.png|
||File Added: e29.png|
|2019-09-04 15:43||abv||Target Version||7.4.0 => 7.5.0|
|2020-09-11 16:48||utverdov||Target Version||7.5.0 => 7.6.0|
|2021-02-18 13:00||bugmaster||Assigned To||szv => szy|
|2021-10-07 14:58||szy||Target Version||7.6.0 => 7.7.0|
|2022-10-24 10:43||szy||Target Version||7.7.0 => 7.8.0|