Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

second revolve breaks the surface #680

Closed
zzj1213 opened this issue Aug 16, 2020 · 6 comments · Fixed by #737
Closed

second revolve breaks the surface #680

zzj1213 opened this issue Aug 16, 2020 · 6 comments · Fixed by #737
Milestone

Comments

@zzj1213
Copy link

zzj1213 commented Aug 16, 2020

As shown on the test file: the second revolve, based on the workplane resulted from the first resolve, breaks the surface.

Solvespave version: Version 3.0 (3.0~bc4924ae),
macOS Catalina Version 10.15.2

second_revolve_test_1

second_revolve_test

second_revolve_test.slvs.zip

@zzj1213
Copy link
Author

zzj1213 commented Aug 16, 2020

related to this issue: #439

This consecutive "revolve" workaround for Extrude along an arbitrary path seems a very important feature.

The path in #439 also has the same issue.

path

path.zip

@phkahler
Copy link
Member

This looks like a problem with coincident surfaces - the end face of one revolve and the "bottom" face of the next one. Unfortunately this is common. As we learn more about the NURBs kernel some of these issues might get fixed.

If you don't need STEP export this does work if you check "force NURBS to triangle mesh" on the 3rd revolve group and continue construction.

Path extrusion would offer a more reliable way to make this, but it's still a long way off. This is exactly the kind of thing I could see being created as one piece (hence no NURBS problems), but you'd still need a difference or intersection to cut the bottom flat.

@zzj1213
Copy link
Author

zzj1213 commented Aug 17, 2020

The first end and second begin faces are carbon copy, but the NURBS kernel treats them different. Is it because of approximation?

This brings up another important feature: stitch: filling the gap between NURBS faces when the faces are not a plane.

After using Solvespace intensively for two weeks, really love it. But in the meantime, found out these two major limitations to handle serious jobs:

  • path extrusion: revolve can be a workaround in some cases;
  • stitch: no workaround for now.

@zzj1213
Copy link
Author

zzj1213 commented Aug 17, 2020

Ran into this: https://github.com/wsteffe/solvespace_occ

First tests with opencascade bezier curves:

wsteffe/solvespace_occ@f186b74

@phkahler
Copy link
Member

The problem here is now understood. There is an extra edge being created at the intersection of two planes - the vertical one at the end of the previous revolve and the top surface of the new one. This "curve" is going beyond the area of the surface polygon, as can be seen in the original picture. A couple of hacks confirm this.

Commenting out the call to MakeFirstOrderRevolvedSurfaces() after Revolve operations "fixes" the problem at the expense of leaving those surface with order 1x2 which prevents merging planes and constraining to them - so not a fix. Also, going in SSurface::IntersectAgainst() and aborting surface-surface intersection:

    if(degm == 1 && degn == 1 && b->degm == 1 && b->degn == 1) {
        return;

Makes the problem go away, but again that's not a solution.

That intersection edge is not being split in two and if it was I'm not sure if the outside portion would be discarded.

Unrelated: That "path.slvs" sketch mentioned above as a crude substitute for extrusion along a path works really well with current SolveSpace master branch. No more red or missing surfaces.

@zzj1213
Copy link
Author

zzj1213 commented Oct 24, 2020

It works fine now, thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants