MCPcopy Create free account
hub / github.com/OpenWebCAD/node-occ / createMesh

Method createMesh

src/Solid.cc:438–484  ·  view source on GitHub ↗

void Solid::Mesh() { TopExp_Explorer Ex; int numFaces = 0; for (Ex.Init(shape_, TopAbs_FACE); Ex.More(); Ex.Next()) { ++numFaces; } if (numFaces > 0) { BRepMesh().Mesh(shape_, 1.0); } }

Source from the content-addressed store, hash-verified

436// }
437//}
438v8::Local<v8::Object> Solid::createMesh(double factor, double angle, bool qualityNormals)
439{
440
441 Nan::EscapableHandleScope scope;
442
443 const unsigned argc = 0;
444 v8::Local<v8::Value> argv[1] = { };
445 v8::Local<v8::Object> theMesh = makeInstance(Mesh::_template);
446
447 Mesh *mesh = Mesh::Unwrap<Mesh>(theMesh);
448
449 const TopoDS_Shape& shape = this->shape();
450
451 try {
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 }
458
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);
467 }
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
478 mesh->optimize();
479
480 } CATCH_AND_RETHROW_NO_RETURN("Failed to mesh solid ");
481
482
483 return scope.Escape(theMesh);
484}
485
486
487NAN_METHOD(Solid::getShapeName)

Callers 2

NAN_PROPERTY_GETTERFunction · 0.45
NAN_METHODFunction · 0.45

Calls 6

makeInstanceFunction · 0.85
extractFaceMeshMethod · 0.80
optimizeMethod · 0.80
SolidClass · 0.70
FaceClass · 0.70
InitMethod · 0.45

Tested by

no test coverage detected