Out of memory during JOIN

I’m still running Rhino 4 on a Dell XPS 8500, Win 7 Pro, 15 Gb RAM, Intel i7 quad core processor. I was building a model of a brick wall for 3D printing. It consisted of about 60,000 rectangular surfaces. I had Joined sections of it looking for naked edges (found none) and when I attempted to join the entire model I got an out of memory message and Rhino had to quit. Each rectangle should be defined with 4 points (32 bytes). That comes to about 8Mb. Even if the process had to make a copy of the model during the join process it still comes to only 16 Mb. Photos I work with run 64 Mb and I can handle many of them at once so I don’t understand why it ran out of memory. Is Rhino 4 limited to the amount of memory it can access? Will Rhino 5 correct this problem?

Each surface, no matter how simple, is defined as a BREP, a boundary representation (extrusions, introduced in rhino5 afaik, are an exception). These objects, and their render meshes, take significantly more memory than 4 points do (which take 96 bytes btw: 4 (points) x3 (xyz) x8 bytes (double precision floating point number))

You may have more luck trying to join smaller parts first, then joining these into a single object. Or change your modeling strategy.

Nope. Even if it’s a simple plane surface, it needs a lot more info than just 4 point location, it is NURBS (Brep) geometry, and it also has attributes such as color, layer, render mesh etc… Simple plane surfaces might take 50Kb or so each just saved in the file… By my calculations 50 Kb per surface x 60,000 surfaces = ~ 3Gb… And it needs a lot more to have it open in RAM and to do calculations such as joining.

Yes. Rhino 4 is 32 bit only, so it can’t access more than about 1.8 Gb of memory on a 32 bit system, and 3.6 Gb on a 64 bit system.

Yes, Rhino 5 is available in 64 bit. Memory is limited to the amount you have in the machine.

In any case joining all at once is difficult to do because Rhino has to try and find what edges correspond and the difficulty goes up exponentially with the number of edges. Best is to join them in smaller groups and then join the groups in sequence as Menno suggested.

Otherwise you might try working with meshes, they are a lot more compact way of storing and working with large faceted types of objects.


I don’t knowingly work with meshes (Rhino may create them in the
background) as things I work with all have geometrically defined surfaces.

As I said, if you’re working with a collection of joined “rectangular surfaces” as you put in your first post, meshes are pretty good at representing those just as accurately as NURBS, but far more compactly. --Mitch

1 Like

If you are using anything else than the wireframe view mode, you are looking at the mesh representation of your NURBS surfaces.

Thanks for the information. I tried my demo copy of 64 bit Rhino 5 and it didn’t do any better than Rhino 4 when joining large numbers of surfaces. I tried menno’s suggestion, joining smaller sections and then joining the sections together, and it worked nicely. It’s not elegant, but it works.

Thanks for the help…