Most effective method to extrude complex 2D pattern to 3D

I have a 2D pattern of a bunch of tiny holes that I would like to extrude into 3D, but because of the number of spots I have, the extrusion takes a long time. I wonder if there’s a more effective method to extruding other than extrudecrv

Also, what would be the recommended method if I would like to have a twisted 3D geometry with this pattern? I tried flowalongsurface, which works, but like extrusions, it takes forever to do.

Attached is a portion of the file I would like to make into 3D, there are 17137 closed curves.

2Dpattern.3dm (5.3 MB)

I would extrude only one of the squares, get its ID, then use something like this script to place a copy of the extrusion at each square centroid.

I created an extrusion of one of the squares, it’s ID in my document is e829d7e8-4c32-40bc-a821-495276c8860b. I moved it off to the side. Then I selected all the squares that create patters and ran the script:

import scriptcontext as sc
import Rhino.Geometry as rg
import System

amp = rg.AreaMassProperties
vmp = rg.VolumeMassProperties

# Set the GUID of the source object to the one you create
src = sc.doc.Objects.FindId(System.Guid("e829d7e8-4c32-40bc-a821-495276c8860b"))
src_centroid = vmp.Compute(src.Geometry).Centroid

selobs = [(ob, amp.Compute(ob.Geometry).Centroid) for ob in sc.doc.Objects if ob.IsSelected(True)]

# disable view redraw until after all objects have been added
sc.doc.Views.EnableRedraw(False, False, False)

for o, c in selobs:
    ng = src.DuplicateGeometry()
    ng.Translate(c - src_centroid)

sc.doc.Views.EnableRedraw(True, True, True)

Thanks, Nathan, but to clarify, I want the reverse, I want a solid with the curves as hole openings. I tried booleandifference the square extrusion, but it wouldn’t finish.

breaking the patterns into squares, I’m able to create surfaces, but then trying to extrude+join them together takes forever…

Normally, the fastest way (IIRC) is to create a planar surface from the curves and then extrude the surface. Unfortunately, this number of curves is still too much for Rhino, trying to create the planar surface directly or trying to split a rectangular plane both hang Rhino for a long time.

(By the way, you have 15 dupe curves in there, but removing them doesn’t seem to change things)

Interestingly enough, extruding the curves with the Gumball extrusion dot in V7 extrudes them all instantly, but unfortunately since V7 Gumball is not designed to extrude solid, it only produces 17K open extrusions, and you’re back to square one trying to cap.

So, I tried it in the V8 WIP using the solid extrude ball and Rhino simply thought about it for awhile, then gave up. Well, sorta, it actually MOVED the curves up the extrusion distance without actually extruding anything. (This is a bug @wim )

It does actually finish by extruding with the normal Extrude (solid) command, I have no idea how long it took, as I just left it running this afternoon and forgot about it… Let’s see if it will let me upload it here. Ahh, looks like it did: (9.5 MB)

1 Like

Thanks, Mitch.
I’ve added this to RH-72628 Extrude numerically with Gumball doesn’t work with SubD

Thanks, I guess I need to be more patient when working with large amounts of curves.

If I now want to deform/twist, the extruded shape, would you recommend starting from the curves by using flowalongsurface + split, or cageedit on the extruded shape? or is there another method?

Well, if you imagine why the simple extrusion takes so long - there’s a lot of calculation necessary to create one single surface that has 68,540 edges - which is what the top and bottom surfaces of the solid have. If you extrude open, it only takes a few seconds to do because all the surfaces are simple 4 sided planes. This is perhaps a limitation of how Rhino works - I don’t know if it can be improved.

That will then apply to anything else you do with the object - as soon as you go to modify it in any way, everything will need to be recalculated. So you will need to arm yourself with a lot of patience.

The question to ask is what you need this object for? According to the file units (meters), it’s pretty big, so I guess you’re not going to be doing to do something like 3D printing it. So is there any way you could avoid having to have this complex 3D “solid” and work with something like textures/decals with the ‘perforations’ applied to a shape instead?

RH-72628 is fixed in the latest WIP