Unexpected tunnel when extruding along border in Meshlib #4419
-
When I use the Extrude function in Meshlib, it creates a tunnel in the middle instead of only extruding along the border line. I expect the extrusion to follow only the border edges, but instead, some inner geometry is being extruded as well, resulting in an unwanted tunnel-like structure. |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 3 replies
-
Hello! Could you please provide the file, so we could investigate this issue? (you can send it to our email Also you might be interested in combination of |
Beta Was this translation helpful? Give feedback.
-
```c++
FixUndercuts::findUndercuts(meshIn, Vector3f(pvtrExtrudeDir.x,
pvtrExtrudeDir.y, pvtrExtrudeDir.z), FBS);
FixUndercuts::fixUndercuts(meshIn, FBS, Vector3f(pvtrExtrudeDir.x,
pvtrExtrudeDir.y, pvtrExtrudeDir.z), 0.00f, dExtrudeLength);
```
…On Fri, Apr 11, 2025 at 4:08 PM Grant Karapetyan ***@***.***> wrote:
We've got the files, but cannot reproduce the issue, could you please
specify what exact steps you have done to get this tunnel?
(actually it looks like you filled hole first, and this hole filling led
to inversed face appearing on top of mesh)
—
Reply to this email directly, view it on GitHub
<#4419 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BKHA2QJ5ATHE6OAV7AC34LL2Y5TAXAVCNFSM6AAAAAB222GMPWVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTEOBQGAYTSMA>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
```c++
vector<Vector3f> vtrOrgBoundaryPos;
{
EdgePath edgePath = meshIn.topology.findHoleRepresentiveEdges();
if (edgePath.size() == 0)
{
FaceBitSet FBS;
FixUndercuts::findUndercuts(meshIn, Vector3f(pvtrExtrudeDir.x,
pvtrExtrudeDir.y, pvtrExtrudeDir.z), FBS);
FixUndercuts::fixUndercuts(meshIn, FBS, Vector3f(pvtrExtrudeDir.x,
pvtrExtrudeDir.y, pvtrExtrudeDir.z), 0.00f, dExtrudeLength);
VxConvertMRMeshToVx(meshIn, pCMeshIn);
return true;
}
EdgeLoop edgeLoop = trackRightBoundaryLoop(meshIn.topology, edgePath.at(0));
for (EdgeId e : edgeLoop)
{
vtrOrgBoundaryPos.push_back(meshIn.orgPnt(e));
}
}
```
|
Beta Was this translation helpful? Give feedback.
I think you should just use
FixUndercuts::fixUndercuts(meshIn, Vector3f(pvtrExtrudeDir.x, pvtrExtrudeDir.y, pvtrExtrudeDir.z), 0.00f, dExtrudeLength);
Note that you don't need to fix holes, and don't need to find undercuts (cause anyway you will fix them all)