V8 ExtractSrf problem

@pascal,
this bug seems to be an issue that is manifesting in v8.

During the ExtractSrf command -

Window select right-left or left-right over a polysurface, hide extracted surfaces and some random surfaces are left behind.

I even tried this on a simple object like a cube and one of the faces will get left behind.

Same thing with window selecting over only have of the polysurface - some of the surfaces that should have been selected are not and remain attached to polysurface.

The ExtractSrf command will not allow you to select a single surface by directly picking on the surface - as would be expected - there is nothing to extract. But if you window select a single surface in the ExtractSrf command, it will allow it to be selected and the command line will report “Extracted one surface”. If you have copy=yes, it duplicates the surface.

Thanks,
John

This was fixed in V7 under https://mcneel.myjetbrains.com/youtrack/issue/RH-62083

This looks like maybe a regression from that fix.

I can not repeat this as you described in V8.

If you start ExtractSrf first and select one surface, it does what is expected.
If you start ExtractSrf and window select the entire polysurface, it acts like Explode, and Hide makes then all go away.

Please run SystemInfo in Rhino and post that in a reply.

Also please describe the steps you are following to duplicate the issue you are seeing.

Thanks

I have the same issue in v8–specifically in Shaded viewport. Extract doesn’t like to select surfaces that it can’t see, so the command either has to be done in Wireframe or spin the model around and manually select whatever surfaces weren’t initially selected.

Trying it a few more times, maybe it’s not a visibility issue–right now I have some geometry where a window selection isn’t grabbing the front surface, regardless of shaded or wireframe.

Is it “locked” so unselectable?
I’m banging on this in V7 and V8.
Both are doing what I think is correct behavior and the same.

I can repeat this to some degree - interesting. Below is a file with 1000 cubes, I used ExtractSrf and ran a right to left crossing selection. The red line is just there for reference (use the saved view), select from the bottom right to the upper left and hit the red line. In theory, as it’s a crossing window selection, all surfaces below the red line should be should be extracted and remain selected. But if I move the result to the right with the Gumball, there are a bunch of surfaces - all cube ‘tops’ - that are not selected. They remain there while all the surfaces around them are moved away. Same if I unselect first then SelLast, those surfaces are not selected. So actually they didn’t really get extracted, but the surfaces surrounding them did.

ExtractSrf

ExtractSrf-1000Cubes.zip (1021.5 KB)

Actually this happens with one single cube, you don’t need 1000. The top surface always stays. I guess that is sorta logical - all the other surfaces in the polysurface have been extracted (one-by-one I suppose) and what’s left is a single surface that cannot be ‘extracted’ because it’s no longer part of a polysurface…

I’m not seeing any other “occluded” surfaces not extracted yet though.

2 Likes

Rhino System Info.txt (2.9 KB)
system info attached.

Here’s another strange detail with the cube example. If I window select over the entire cube twice it extracts all surfaces. If I only window select over the cube once, the top surface does not get extracted.

1 Like

Hi John, Helvetosaur - thanks, I see…
I guess the logic must be that there should be some of the original object left after the extraction. The last face in the brep face list is the one left if all faces are selected.
I don’t know how this should be handled, to be honest… it kind of makes sense.
Hm - it is not consistent though, so it just became a bug…

RH-80584 ExtractSrf and window select
-Pascal

Yep…
With a box:
ExtractSrf - window select - 5 faces extracted. SelNone/SelLast, 5 faces selected
Command line: Extracted 5 surfaces from a polysurface.

ExtractSrf - mouse pick all 6 faces - SelNone/SelLast, 6 faces selected
Command line: Extracted 6 surfaces from a polysurface.

Window sub-object select - ExtractSrf - SelNone/SelLast, 5 faces selected
Command line: Extracted 5 surfaces from a polysurface.

And yes, the face not extracted is always the last face index in the list - for a box, 5

RH-80584 is fixed in Rhino 8 Service Release 5

1 Like

Was working right, but I just had a situation where 2 surfaces were left behind when I tried to extract half of a polysurface.

Hi Joel - please post an example file.

-Pascal

In this part I was trying to extract the entire pocket to copy it to another similar part. In wireframe I drag a box left-to-right that includes all the surfaces of the pocket, but the base of the pocket is not included in the selection. I moved the extracted surfaces to the right in this example for easy illustration.

I tried to replicate it using a simple cube-shaped pocket but then everything selected fine. That made me wonder, if the untrimmed version of the surface that makes up the trimmed base is larger than the window that I dragged, maybe a glitch was keeping it from selecting that trimmed surface. To test that theory I right-to-left dragged in the Extract command, but I get the same result so that’s not the problem.

^ This is a different example than the one I mentioned a few days ago about extracting half of a polysurface.

Can you post a file with just the part in question?

Can’t post anything proprietary.
When I water it down by taking away the rest of the part and then trim to a more simplified shape, the Extract actually works. All pocket surfaces, main adjacent surface, and opposite surface (away from camera) are all the same data as before just trimmed differently. For some reason now it extracts all the pocket surfaces with a single selection window.

If I trim any of the main part away, the Extract works. Even trimming away a tiny sliver on the opposite side of the part. See trim plane below.

Unfortunately the only way to be able to determine what the problem is is to have a repeatable example. Without that, nothing will get fixed, because there’s nothing to test and debug.

I’ll try to replicate it on a part that I can share.