View Issue Details

IDProjectCategoryView StatusLast Update
0031479CommunityOCCT:Modeling Algorithmspublic2022-07-07 07:11
ReporterVico Liang Assigned Toazv  
PrioritynormalSeverityminor 
Status assignedResolutionopen 
Product Version6.3.1 
Target Version7.7.0 
Summary0031479: Modeling Algorithms - exception on geometry transformation of triangulation-only shapes (without geometry surface)
DescriptionThe uploaded file just with shape with triangles, without geometry surface.

It works when apply move and rotate operation. it's break with scale or mirror.

Neither BRepBuilderAPI_Transform or BRepBuilderAPI_GTransform works with scale or mirror transform.
Steps To Reproduce
test de_mesh obj_read prism 1
XGetOneShape s D
tscale s 0 0 0 10


Result:
An exception was caught 000001F39E054090 : OSD_Exception_ACCESS_VIOLATION: ACCESS VIOLATION at address 0x0000000000000000 during 'READ' operation
** Exception ** 000001F39E054090 : OSD_Exception_ACCESS_VIOLATION: ACCESS VIOLATION at address 0x0000000000000000 during 'READ' operation
TagsNo tags attached.
Test case number

Attached Files

  • P-51 Mustang 2.brep (611,453 bytes)

Relationships

related to 0032716 assignedazv Open CASCADE Modeling Algorithms - BRepBuilderAPI_Transform discards triangulation 
related to 0032717 verifiedsmoskvin Open CASCADE Modeling Algorithms - BRepBuilderAPI_Copy should not remove triangulation from surface-less faces 
child of 0028125 newmsv Open CASCADE Modeling Algorithms - support of BRep shapes based on tessellated geometry 

Activities

Vico Liang

2020-04-01 18:40

developer  

P-51 Mustang 2.brep (611,453 bytes)

git

2022-06-29 15:39

administrator   ~0109385

Branch CR31479 has been created by abulychev-ext.

SHA-1: c2491d80fcd9e53fdd512427e2051264ad711276


Detailed log of new commits:

Author: abulyche
Date: Wed Apr 20 17:14:07 2022 +0300

    0031479: Modeling Algorithms - exception on geometry transformation of triangulation-only shapes (without geometry surface)
    
    Added the test to reproduce this problem.
    The methods for BRepTools_TrsfModification are defined and modified to keep the triangulation during 'tscale' operation (without geometry).

git

2022-06-29 16:13

administrator   ~0109391

Branch CR31479 has been updated forcibly by abulychev-ext.

SHA-1: 4efe578d4e0bddbfe35bada66ee20c92d5a628c9

git

2022-06-30 11:47

administrator   ~0109412

Branch CR31479 has been updated forcibly by abulychev-ext.

SHA-1: e8adcb8b64adc916eec8ab61cc62da03f6626ba6

azv

2022-07-05 12:41

administrator   ~0109566

Please, review OCCT branch CR32716_2.
Test results: http://jenkins-test-occt/view/CR32716_2-master-AZV/view/COMPARE/

msv

2022-07-06 17:50

developer   ~0109624

src/BRepTools/BRepTools_GTrsfModification.hxx
Please use coding rules for new code.

It is needed to invalidate myCachedMinMax of the copy.
  theTriangulation = theTriangulation->Copy();

Use const&
      Poly_Triangle aTria = theTriangulation->Triangle(anInd);

It is needed to check if the face contains a surface. Also, newUV returns bool that is not checked.
  if (theTri->HasUVNodes())
  {
    Standard_Real aTol = BRep_Tool::Tolerance(theFace);
    for (Standard_Integer anInd = 1; anInd <= theTri->NbNodes(); ++anInd)
    {
      gp_Pnt2d aP2d = theTri->UVNode(anInd);
      newUV(aP2d, theFace, myMap, aTol);
      theTri->SetUVNode(anInd, aP2d);
    }
  }

It is needed to check if the surface and curve 2d are not null.
  if (thePoly->HasParameters())
  {
    Standard_Real aTol = Max(BRep_Tool::Tolerance(theEdge), thePoly->Deflection());
    TopLoc_Location aLoc;
    Handle(Geom_Surface) aSurf = BRep_Tool::Surface(theFace, aLoc);
    Standard_Real aFirst, aLast;
    Handle(Geom2d_Curve) aC2d = BRep_Tool::CurveOnSurface(theEdge, theFace, aFirst, aLast);

The edge can be not SameParameter. Therefore, it is incorrect to project 3D point on 3D curve. Instead, it is needed to project the 2D point on the new 2D curve. Or, may be project 3D point on new surface, and then the result new 2D point to the new 2D curve.
      Standard_Real aParam = thePoly->Parameter(anInd);
      gp_Pnt2d aUV = aC2d->Value(aParam);
      gp_Pnt aPoint = aSurf->Value(aUV.X(), aUV.Y());
      newParameter(aPoint, theEdge, myMap, aParam, aTol);
      thePoly->SetParameter(anInd, aParam);

git

2022-07-06 22:26

administrator   ~0109632

Branch CR31479_2 has been created by azv.

SHA-1: 7e67daf439289153bdb47927a345afedc0bdbd6d


Detailed log of new commits:

Author: azv
Date: Wed Jul 6 17:25:10 2022 +0300

    # remarks

Author: azv
Date: Fri Jul 1 16:46:55 2022 +0300

    0031479: Modeling Algorithms - exception on geometry transformation of triangulation-only shapes (without geometry surface)
    
    * Avoid crash in BRepBuilderAPI_GTransform algorithm. The crash in BRepBuilder_Transform has been solved by 0032716.
    * Move copying modifier to BRepTools package.
    * Implement copying of triangulation in BRepTools_NurbsConvertModification.
    * Implement transformation of a triangulation in BRepTools_GTrsfModification.
    * Update test case bugs/mesh/bug22778 to clean the triangulation after conversion to NURBS (reproduce the same behavior as before).

git

2022-07-07 07:11

administrator   ~0109643

Branch CR31479_2 has been updated forcibly by azv.

SHA-1: 8bc2a6d2cad07fba6fff16266e41c2362dd9d7f6

Issue History

Date Modified Username Field Change
2020-04-01 18:40 Vico Liang New Issue
2020-04-01 18:40 Vico Liang Assigned To => msv
2020-04-01 18:40 Vico Liang File Added: P-51 Mustang 2.brep
2020-05-08 00:24 kgv Summary Throw when scale or mirror shapes without geometry surface. => Modeling Algorithms - Throw when scale or mirror shapes without geometry surface.
2020-05-08 00:28 kgv Relationship added child of 0028125
2020-05-08 00:29 kgv Summary Modeling Algorithms - Throw when scale or mirror shapes without geometry surface. => Modeling Algorithms - exception on geometry transformation of triangulation-only shapes (without geometry surface)
2020-05-08 00:36 kgv Steps to Reproduce Updated
2020-05-08 00:36 kgv Product Version => 6.3.1
2020-09-15 11:58 msv Target Version 7.5.0 => 7.6.0
2021-08-29 18:53 msv Target Version 7.6.0 => 7.7.0
2022-03-24 11:54 azv Relationship added related to 0032716
2022-03-24 11:54 azv Relationship added related to 0032717
2022-04-15 12:42 azv Assigned To msv => abulychev-ext
2022-06-29 15:39 git Note Added: 0109385
2022-06-29 16:13 git Note Added: 0109391
2022-06-30 11:47 git Note Added: 0109412
2022-07-02 15:44 azv Assigned To abulychev-ext => azv
2022-07-02 15:44 azv Status new => assigned
2022-07-05 12:41 azv Assigned To azv => msv
2022-07-05 12:41 azv Status assigned => resolved
2022-07-05 12:41 azv Note Added: 0109566
2022-07-06 17:50 msv Note Added: 0109624
2022-07-06 17:50 msv Assigned To msv => azv
2022-07-06 17:50 msv Status resolved => assigned
2022-07-06 22:26 git Note Added: 0109632
2022-07-07 07:11 git Note Added: 0109643