本文整理汇总了C++中MeshDocument::delMesh方法的典型用法代码示例。如果您正苦于以下问题:C++ MeshDocument::delMesh方法的具体用法?C++ MeshDocument::delMesh怎么用?C++ MeshDocument::delMesh使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MeshDocument
的用法示例。
在下文中一共展示了MeshDocument::delMesh方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: applyFilter
//.........这里部分代码省略.........
pr.numRow=(int)(planeNum*1.0f/pr.numCol)+1;
pr.projDir = planeAxis;
pr.projCenter = m.mm()->cm.bbox.Center();
pr.enumeration = true;
MeshModel* cap, *cap2, *extr;
QString layername;
for(int pl = 0; pl < 2; ++pl)
{
// Log("################## PLANE %i", pl);
Plane3f slicingPlane;
Point3f planeCenter = bbox.Center() + planeAxis*planeOffset*lengthDiag;
int numAdd = 0;
// int i=4; //if I want to apply only the plan number i I decomment this variable and comment the cycle
for(int i = 0; i < planeNum; ++i) //cropping the plans
{
// Log("######## LAYER %i", i);
planeCenter[axis] = start + planeDist*i;;
slicingPlane.Init(planeCenter,planeAxis);
layername.sprintf("EdgeMesh_%d_%d",pl,numAdd);
cap= m.addNewMesh("",qPrintable(layername));
vcg::IntersectionPlaneMesh<CMeshO, CMeshO, float>(base->cm, slicingPlane, cap->cm );
tri::Clean<CMeshO>::RemoveDuplicateVertex(cap->cm);
if(cap->cm.edge.size()>= 3)
{
Incastri temp;
// int j=1; //if I want to apply only the rectangle number j I decomment this variable and comment the cycle
for(int j = 0; j <rectNum ; ++j) //clipping the rectangles
{
// Log("#### RECTANGLE %i", j);
float newDist = start + planeDist*j;
modifyOnY(lati, newDist+epsTmp, newDist-epsTmp);
temp = subtraction(cap->cm, lati, axis, axisOrthog, axisJoint, planeCenter[axis]);
if(temp == NOT_PLANE) {Log("ATTENTION! The IntersectionPlaneMesh did not return a plane silhouette in the current plane!"); m.delMesh(cap); break;}
if(temp== NOT_SAGOME) {Log("ATTENTION! The IntersectionPlaneMesh did not return a simple closed silhouette for the plane %i, on axis %i",i, pl); m.delMesh(cap); break;}
}
if(temp > NOT_SAGOME)
{
ev.push_back(&(cap->cm)); //add the silhouette to those for export to SVG
layername.sprintf("CappedSlice_%d_%d",pl,numAdd); //add the silhouettes converted in mesh
cap2= m.addNewMesh("",qPrintable(layername));
tri::CapEdgeMesh(cap->cm, cap2->cm);
layername.sprintf("Extruded_%d_%d",pl,numAdd++); //add the mesh extruded
extr= m.addNewMesh("",qPrintable(layername));
cap2->updateDataMask(MeshModel::MM_FACEFACETOPO);
extr->updateDataMask(MeshModel::MM_FACEFACETOPO);
tri::UpdateTopology<CMeshO>::FaceFace(cap2->cm);
tri::ExtrudeBoundary<CMeshO>(cap2->cm,extr->cm,eps,planeAxis);
if(hideEdge) cap->visible =false;
if(hidePlanes) cap2->visible =false;
if(hideExtrudes) extr->visible =false;
}
}else m.delMesh(cap); //if the intersection does not exist I reject the result
}
QString fname;//= parlst.getSaveFileName("filename");
if(fname=="") fname.sprintf("Slice_%d.svg",pl);
if (!fname.endsWith(".svg")) fname+=".svg";
tri::io::ExporterSVG<CMeshO>::Save(ev, fname.toStdString().c_str(), pr);
ev.clear();
planeAxis[axis] = 0.0f;
planeAxis[axisOrthog] = 1.0f;
flipOnX(lati);
pr.sizeCm = sizeCmOrth;
pr.projDir = planeAxis;
Axis aSwap = axis;
axis = axisOrthog;
axisOrthog = aSwap;
}
if(hideEdge) cap->visible =false;
if(hidePlanes) cap2->visible =false;
if(hideExtrudes) extr->visible =false;
if(hideBase) base->visible =false;
if(hideBase) base->visible =false;
}
break;
}
return true;
}