@@ -450,35 +450,46 @@ v8::Local<v8::Object> Solid::createMesh(double factor, double angle, bool qualit
450
450
451
451
try {
452
452
453
- if (angle == 0.0 ) {
454
- BRepMesh_IncrementalMesh m1 (shape,factor,Standard_True);
455
- } else {
456
- BRepMesh_IncrementalMesh m2 (shape,factor,Standard_True,angle, Standard_True);
457
- }
453
+ if (angle == 0.0 ) {
454
+ BRepMesh_IncrementalMesh m1 (shape,factor,Standard_True);
455
+ } else {
456
+ BRepMesh_IncrementalMesh m2 (shape,factor,Standard_True,angle, Standard_True);
457
+ }
458
+
458
459
459
- if (shape.ShapeType () == TopAbs_COMPSOLID || shape.ShapeType () == TopAbs_COMPOUND) {
460
- TopExp_Explorer exSolid, exFace;
461
- for (exSolid.Init (shape, TopAbs_SOLID); exSolid.More (); exSolid.Next ()) {
462
- const TopoDS_Solid& solid = TopoDS::Solid (exSolid.Current ());
463
- for (exFace.Init (solid, TopAbs_FACE); exFace.More (); exFace.Next ()) {
464
- const TopoDS_Face& face = TopoDS::Face (exFace.Current ());
465
- if (face.IsNull ()) continue ;
466
- mesh->extractFaceMesh (face, qualityNormals);
460
+ if (shape.ShapeType () == TopAbs_COMPSOLID || shape.ShapeType () == TopAbs_COMPOUND) {
461
+ TopExp_Explorer exSolid, exFace;
462
+ for (exSolid.Init (shape, TopAbs_SOLID); exSolid.More (); exSolid.Next ()) {
463
+ const TopoDS_Solid& solid = TopoDS::Solid (exSolid.Current ());
464
+ for (exFace.Init (solid, TopAbs_FACE); exFace.More (); exFace.Next ()) {
465
+ const TopoDS_Face& face = TopoDS::Face (exFace.Current ());
466
+ if (face.IsNull ()) continue ;
467
+ mesh->extractFaceMesh (face, qualityNormals);
468
+ }
469
+ }
470
+ } else {
471
+ TopExp_Explorer exFace;
472
+ for (exFace.Init (shape, TopAbs_FACE); exFace.More (); exFace.Next ()) {
473
+
474
+ const TopoDS_Face& face = TopoDS::Face (exFace.Current ());
475
+ if (face.IsNull ()) continue ;
476
+ try {
477
+ mesh->extractFaceMesh (face, qualityNormals);
478
+ } catch (Standard_Failure const & anException) {
479
+
480
+ }
481
+ }
467
482
}
468
- }
469
- } else {
470
- TopExp_Explorer exFace;
471
- for (exFace.Init (shape, TopAbs_FACE); exFace.More (); exFace.Next ()) {
472
- const TopoDS_Face& face = TopoDS::Face (exFace.Current ());
473
- if (face.IsNull ()) continue ;
474
- mesh->extractFaceMesh (face, qualityNormals);
475
- }
476
- }
477
483
478
- mesh->optimize ();
484
+ mesh->optimize ();
479
485
480
- } CATCH_AND_RETHROW_NO_RETURN (" Failed to mesh solid " );
481
486
487
+ } catch (Standard_Failure const & anException) {
488
+ Standard_SStream aMsg;
489
+ aMsg << " EXCEPTION in Solid::createMesh" << endl;
490
+ aMsg << anException << endl;
491
+ Nan::ThrowError (aMsg.str ().c_str ());
492
+ }
482
493
483
494
return scope.Escape (theMesh);
484
495
}
0 commit comments