Don't merge coincident surfaces when combining two shells as
"assemble". And don't show "naked" (not occuring in anti-parallel pairs) edges when just testing for interference. [git-p4: depot-paths = "//depot/solvespace/": change = 1967]solver
parent
2d653eada8
commit
2f7a6bb61d
|
@ -168,7 +168,9 @@ void Group::GenerateShellAndMesh(void) {
|
||||||
|
|
||||||
GenerateForStepAndRepeat<SShell>
|
GenerateForStepAndRepeat<SShell>
|
||||||
(prev, toStep, &runningShell, src->meshCombine);
|
(prev, toStep, &runningShell, src->meshCombine);
|
||||||
|
if(meshCombine != COMBINE_AS_ASSEMBLE) {
|
||||||
runningShell.MergeCoincidentSurfaces();
|
runningShell.MergeCoincidentSurfaces();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
SMesh prevm, stepm;
|
SMesh prevm, stepm;
|
||||||
ZERO(&prevm);
|
ZERO(&prevm);
|
||||||
|
@ -288,7 +290,9 @@ void Group::GenerateShellAndMesh(void) {
|
||||||
thisShell.RemapFaces(this, 0);
|
thisShell.RemapFaces(this, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(meshCombine != COMBINE_AS_ASSEMBLE) {
|
||||||
thisShell.MergeCoincidentSurfaces();
|
thisShell.MergeCoincidentSurfaces();
|
||||||
|
}
|
||||||
|
|
||||||
// So now we've got the mesh or shell for this group. Combine it with
|
// So now we've got the mesh or shell for this group. Combine it with
|
||||||
// the previous group's mesh or shell with the requested Boolean, and
|
// the previous group's mesh or shell with the requested Boolean, and
|
||||||
|
@ -298,7 +302,10 @@ void Group::GenerateShellAndMesh(void) {
|
||||||
if(pg->runningMesh.IsEmpty() && thisMesh.IsEmpty() && !forceToMesh) {
|
if(pg->runningMesh.IsEmpty() && thisMesh.IsEmpty() && !forceToMesh) {
|
||||||
SShell *prevs = &(pg->runningShell);
|
SShell *prevs = &(pg->runningShell);
|
||||||
GenerateForBoolean<SShell>(prevs, &thisShell, &runningShell);
|
GenerateForBoolean<SShell>(prevs, &thisShell, &runningShell);
|
||||||
|
|
||||||
|
if(meshCombine != COMBINE_AS_ASSEMBLE) {
|
||||||
runningShell.MergeCoincidentSurfaces();
|
runningShell.MergeCoincidentSurfaces();
|
||||||
|
}
|
||||||
|
|
||||||
// If the Boolean failed, then we should note that in the text screen
|
// If the Boolean failed, then we should note that in the text screen
|
||||||
// for this group.
|
// for this group.
|
||||||
|
|
|
@ -466,6 +466,10 @@ void SolveSpace::MenuAnalyze(int id) {
|
||||||
Error("%d edges interfere with other triangles, bad.",
|
Error("%d edges interfere with other triangles, bad.",
|
||||||
SS.nakedEdges.l.n);
|
SS.nakedEdges.l.n);
|
||||||
} else {
|
} else {
|
||||||
|
// MakeCertainEdgesInto also reports "naked" edges, which
|
||||||
|
// will include some types of coincident geometry that are
|
||||||
|
// not errors.
|
||||||
|
SS.nakedEdges.Clear();
|
||||||
Message("The assembly does not interfere, good.");
|
Message("The assembly does not interfere, good.");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue