Here you go.
Pretty generic, but parameters, trial and error, or calculate. Based on
Adrian's stacked slices, no bosl2. You may or may not get z fighting
with other shapes.
module one(){
import("C:/Users/ray/Desktop/TestSurface.stl");
}
// Parameters
t = 0.9; // Thickness of each thin layer (allow for overlap)
layers = 40; // Number of layers to stack
slice=30; //level to slice
////////////////////////
module some(){
// Stack the layers to make a solid
union() {
for (i = [0:layers-1]) {
translate([0, 0, i * t])
one();
}
}
}
module prof(){
projection(cut=true)translate([0,0,-slice])some();
}
module base(){
linear_extrude(slice)prof();
}
module under(){
difference(){
scale([0.999,0.999,0.999])base(); //to avoid z fighting
some();
}
}
under();
On 30/05/2026 20:14, Lee DeRaud via Discuss wrote:
I’ve attached an example surface. What I want is to fill the volume
between it and the XY plane. I realize that creating this particular
shape as the top surface of a cuboid can be done easily: that’s how I
generated it in the first place. But I’m looking for a generalized
that works with a surface extracted from a 3D scan.
And yes, I understand that this kind of surface is not 2D. Linear
extruding the projection of it works right up until you get to the
lower bound of the surface. If you go past that point, the extrusion
wipes out part of the surface, if you stop there, there will be gaps
between the extrusion and the surface. Difference is zero help, as it
just leaves a cuboid with a surface-shaped slice through it and no way
to separate the two disjoint portions.
*From:*Raymond West via Discuss discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 11:37 AM
To: Lee DeRaud via Discuss discuss@lists.openscad.org
Cc: Raymond West raywest@raywest.com
Subject: [OpenSCAD] Re: beginners question
On 30/05/2026 18:30, Lee DeRaud via Discuss wrote:
(A picture would be worth a thousand words, but if I could draw
the picture in OpenSCAD, I wouldn’t be asking the question. 😊)
draw the picture with pen and paper, post a photo, or scan.
Picture an arbitrary bounded non-planar surface hovering above a
plane. Projection gives you its “shadow” on that plane (X/Y by
convention). What I want is to fill the space between the surface
and the shadow in the Z direction to produce a solid.
if you are thinking that the non-planar surface is 2d, I've no idea
how you work with that in a 3d world. If it is the surface of a 3d
object, then linear extrude the projection, and difference the object.
Maybe a better way to describe it is a 3D extrusion, although even
that assumes the surface, and by extension the derived solid, is
convex in Z.
And yet another conceptual picture: in CorelDraw, draw a square
and then draw a non-linear curve through it, forming two new 2D
shapes. Fill one of them and export as an SVG. (“Smart Fill” in
Corel creates a new filled 2D object, I assume Inkscape has a
similar function.) I just want to extend that concept to 3D.
*From:*Adrian Mariano via Discuss <discuss@lists.openscad.org>
<mailto:discuss@lists.openscad.org>
*Sent:* Saturday, May 30, 2026 9:35 AM
*To:* OpenSCAD general discussion Mailing-list
<discuss@lists.openscad.org> <mailto:discuss@lists.openscad.org>
*Cc:* Adrian Mariano <avm4@cornell.edu> <mailto:avm4@cornell.edu>
*Subject:* [OpenSCAD] Re: beginners question
I don't understand the question you're asking, or the description
in the 3rd paragraph. If you slice a cube into two pieces....it's
two pieces...and...? If you project a manifold onto an arbitrary
plane you'll get a set of points on the plane. Then what...? You
want a triangle mesh for the projection?
On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss
<discuss@lists.openscad.org> wrote:
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two
pieces using an arbitrary surface. And by arbitrary, I mean
like a bounded chunk of mesh or surface points coming from a
3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’
from an arbitrary non convex surface. I can compute a ‘line’
(more precisely a sequence of points) projecting from any
given point on the surface to an arbitrary base plane.
Repeating at any desired density eventually gives me a dense,
more-or-less solid point-cloud. But how do I then generate a
triangle mesh that wraps that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle
either case. Most likely I’d end up using something like open3d.)
*From:*Adrian Mariano via Discuss <discuss@lists.openscad.org>
*Sent:* Saturday, May 30, 2026 7:10 AM
*To:* OpenSCAD general discussion Mailing-list
<discuss@lists.openscad.org>
*Cc:* Adrian Mariano <avm4@cornell.edu>
*Subject:* [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional
manifold is a surface that looks locally like a plane at every
point, or more formally, one where you can map a neighborhood
of every point continuously into the plane. In 3d modeling we
are using the 2d manifold to define a 3d object by specifying
its boundary. If the manifold is bounded (and orientable--a
technical condition) then it has an inside and an outside and
the points inside will form a well-behaved bounded 3d solid.
(Examples of unbounded manifolds: plane, paraboloid,
infinitely long cylinder. Bounded: sphere, torus. Bounded
but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss
<discuss@lists.openscad.org> wrote:
One thing about this subject in general: my brain persists
in the illusion(?) that a closed surface and a solid
object are not *quite* the same thing, i.e. that a
manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss <discuss@lists.openscad.org>
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org
Cc: Glenn Butcher <glenn.butcher@gmail.com>
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of
mesh, stone walls, and ran into all the fussiness of
making 'manifold' meshes. I then wrote a short blog post
on why STL files are problematic representing object
boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions,
post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric
concept, means, that I learned and seems simple and
understandable, is that an ant walking on the surface will
never fall off an edge, and will never be presented with
multiple choices of which surface to walk on next. A bit
more formally, every edge is connected to exactly two
faces, and the surface never intersects itself.
With respect to Manifold, the library, and CGAL:
OpenSCAD supports those two libraries for doing geometric
operations like unions, differences, and so on. CGAL is
the library that it has used for many years; Manifold is a
newer and far faster library. Manifold (or perhaps the way
that OpenSCAD uses it) seems to be more tolerant of
imperfection.
OpenSCAD mailing list
To unsubscribe send an email to
discuss-leave@lists.openscad.org
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to
discuss-leave@lists.openscad.org
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to
discuss-leave@lists.openscad.org
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email todiscuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email todiscuss-leave@lists.openscad.org
Yeah, the example shape was math-derived, just to get something with complex curvatures and convex in Z. (If it isn’t convex along the projection axis, things get REALLY ugly.) Regarding the assumption that “no points on the surface are below the bounding edge”, note that the example violates that already. But I think “convex in Z” might be enough to let that translated-copy method work for most useful scans. I need to wrap my head around what inputs and/or manual operations I’d need in the general case.
I can certainly extract the surface as a point list, but we’re talking about a LOT of points, in the 250K->1M range. My eyes glazed over when I first encountered VNF, so I’m not sure exactly how that applies here. Maybe it’s time to revisit that particular learning curve.
I’ll go away now and ponder the whole thing for awhile…you may return to your normally scheduled programming. 😊
From: Adrian Mariano via Discuss discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 12:30 PM
To: OpenSCAD general discussion Mailing-list discuss@lists.openscad.org
Cc: Adrian Mariano avm4@cornell.edu
Subject: [OpenSCAD] Re: beginners question
If you have a surface with an edge defined as a point list it's a simple matter in openscad to make that into a solid by extending it down to the xy plane---assuming that no points on the surface are below the bounding edge by building a polyhedron for your original surface and then adding edges and a base. BOSL2 provides textured_tile() and plot3d() that can do this directly and handle the annoying bookkeeping of building the polyhedron. You can also potentially have more flexibility (and more work) with vnf_vertex_array().
If you don't have the surface as a point list then it's going to be a lot more difficult, especially in the general case. The shape you posted you could do by taking the union of a bunch of translated copies. Other folks are better at figuring out complex ways to get stuff done in vanilla OpenSCAD.... But that shape also looks like it was (or could be) constructed mathematically in which case it would be ideally suited to using textured_tile() or plot3d().
Here's the method of translated copies:
include<BOSL2/std.scad>
module thing(){
import("TestSurface.stl");
}
zcopies(n=30,spacing=.9) thing();
down(20)linear_extrude(height=30)projection()thing();
On Sat, May 30, 2026 at 1:31 PM Lee DeRaud via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org > wrote:
(A picture would be worth a thousand words, but if I could draw the picture in OpenSCAD, I wouldn’t be asking the question. 😊)
Picture an arbitrary bounded non-planar surface hovering above a plane. Projection gives you its “shadow” on that plane (X/Y by convention). What I want is to fill the space between the surface and the shadow in the Z direction to produce a solid.
Maybe a better way to describe it is a 3D extrusion, although even that assumes the surface, and by extension the derived solid, is convex in Z.
And yet another conceptual picture: in CorelDraw, draw a square and then draw a non-linear curve through it, forming two new 2D shapes. Fill one of them and export as an SVG. (“Smart Fill” in Corel creates a new filled 2D object, I assume Inkscape has a similar function.) I just want to extend that concept to 3D.
From: Adrian Mariano via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Sent: Saturday, May 30, 2026 9:35 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Cc: Adrian Mariano <avm4@cornell.edu mailto:avm4@cornell.edu >
Subject: [OpenSCAD] Re: beginners question
I don't understand the question you're asking, or the description in the 3rd paragraph. If you slice a cube into two pieces....it's two pieces...and...? If you project a manifold onto an arbitrary plane you'll get a set of points on the plane. Then what...? You want a triangle mesh for the projection?
On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org > wrote:
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two pieces using an arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or surface points coming from a 3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’ from an arbitrary non convex surface. I can compute a ‘line’ (more precisely a sequence of points) projecting from any given point on the surface to an arbitrary base plane. Repeating at any desired density eventually gives me a dense, more-or-less solid point-cloud. But how do I then generate a triangle mesh that wraps that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle either case. Most likely I’d end up using something like open3d.)
From: Adrian Mariano via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Sent: Saturday, May 30, 2026 7:10 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Cc: Adrian Mariano <avm4@cornell.edu mailto:avm4@cornell.edu >
Subject: [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional manifold is a surface that looks locally like a plane at every point, or more formally, one where you can map a neighborhood of every point continuously into the plane. In 3d modeling we are using the 2d manifold to define a 3d object by specifying its boundary. If the manifold is bounded (and orientable--a technical condition) then it has an inside and an outside and the points inside will form a well-behaved bounded 3d solid. (Examples of unbounded manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere, torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org > wrote:
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not quite the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org mailto:discuss@lists.openscad.org
Cc: Glenn Butcher <glenn.butcher@gmail.com mailto:glenn.butcher@gmail.com >
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
Thanks.
I’m pretty sure the general case requires convexity in Z* to work properly. I can cobble up some code in open3d to test for that as a preprocess step. Worst case, the scans may need careful rotation and/or splitting into properly behaved chunks to get around that.
*I’ve been assuming people understand what I mean by that, but I may be using the wrong terminology.
By “surface is convex in Z”, I mean “any line parallel with the Z-axis intersects the surface at most once”. (The other two axes don’t matter: if it is convex in all three, I’d just hull() it.)
From: Raymond West via Discuss discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 1:45 PM
To: Lee DeRaud via Discuss discuss@lists.openscad.org
Cc: Raymond West raywest@raywest.com
Subject: [OpenSCAD] Re: beginners question
Here you go.
Pretty generic, but parameters, trial and error, or calculate. Based on Adrian's stacked slices, no bosl2. You may or may not get z fighting with other shapes.
module one(){
import("C:/Users/ray/Desktop/TestSurface.stl");
}
// Parameters
t = 0.9; // Thickness of each thin layer (allow for overlap)
layers = 40; // Number of layers to stack
slice=30; //level to slice
////////////////////////
module some(){
// Stack the layers to make a solid
union() {
for (i = [0:layers-1]) {
translate([0, 0, i * t])
one();
}
}
}
module prof(){
projection(cut=true)translate([0,0,-slice])some();
}
module base(){
linear_extrude(slice)prof();
}
module under(){
difference(){
scale([0.999,0.999,0.999])base(); //to avoid z fighting
some();
}
}
under();
On 30/05/2026 20:14, Lee DeRaud via Discuss wrote:
I’ve attached an example surface. What I want is to fill the volume between it and the XY plane. I realize that creating this particular shape as the top surface of a cuboid can be done easily: that’s how I generated it in the first place. But I’m looking for a generalized that works with a surface extracted from a 3D scan.
And yes, I understand that this kind of surface is not 2D. Linear extruding the projection of it works right up until you get to the lower bound of the surface. If you go past that point, the extrusion wipes out part of the surface, if you stop there, there will be gaps between the extrusion and the surface. Difference is zero help, as it just leaves a cuboid with a surface-shaped slice through it and no way to separate the two disjoint portions.
From: Raymond West via Discuss mailto:discuss@lists.openscad.org discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 11:37 AM
To: Lee DeRaud via Discuss mailto:discuss@lists.openscad.org discuss@lists.openscad.org
Cc: Raymond West mailto:raywest@raywest.com raywest@raywest.com
Subject: [OpenSCAD] Re: beginners question
On 30/05/2026 18:30, Lee DeRaud via Discuss wrote:
(A picture would be worth a thousand words, but if I could draw the picture in OpenSCAD, I wouldn’t be asking the question. 😊)
draw the picture with pen and paper, post a photo, or scan.
Picture an arbitrary bounded non-planar surface hovering above a plane. Projection gives you its “shadow” on that plane (X/Y by convention). What I want is to fill the space between the surface and the shadow in the Z direction to produce a solid.
if you are thinking that the non-planar surface is 2d, I've no idea how you work with that in a 3d world. If it is the surface of a 3d object, then linear extrude the projection, and difference the object.
Maybe a better way to describe it is a 3D extrusion, although even that assumes the surface, and by extension the derived solid, is convex in Z.
And yet another conceptual picture: in CorelDraw, draw a square and then draw a non-linear curve through it, forming two new 2D shapes. Fill one of them and export as an SVG. (“Smart Fill” in Corel creates a new filled 2D object, I assume Inkscape has a similar function.) I just want to extend that concept to 3D.
From: Adrian Mariano via Discuss mailto:discuss@lists.openscad.org discuss@lists.openscad.org
Sent: Saturday, May 30, 2026 9:35 AM
To: OpenSCAD general discussion Mailing-list mailto:discuss@lists.openscad.org discuss@lists.openscad.org
Cc: Adrian Mariano mailto:avm4@cornell.edu avm4@cornell.edu
Subject: [OpenSCAD] Re: beginners question
I don't understand the question you're asking, or the description in the 3rd paragraph. If you slice a cube into two pieces....it's two pieces...and...? If you project a manifold onto an arbitrary plane you'll get a set of points on the plane. Then what...? You want a triangle mesh for the projection?
On Sat, May 30, 2026 at 11:35 AM Lee DeRaud via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org > wrote:
Yeah, we’re kinda getting into some theoretical weeds here…
Change of perspective: consider slicing a cuboid into two pieces using an arbitrary surface. And by arbitrary, I mean like a bounded chunk of mesh or surface points coming from a 3D scanner.
Alternatively, consider it as a 3D extension of ‘projection()’ from an arbitrary non convex surface. I can compute a ‘line’ (more precisely a sequence of points) projecting from any given point on the surface to an arbitrary base plane. Repeating at any desired density eventually gives me a dense, more-or-less solid point-cloud. But how do I then generate a triangle mesh that wraps that quasi-solid?
(Note: I have no real confidence that OpenSCAD can handle either case. Most likely I’d end up using something like open3d.)
From: Adrian Mariano via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Sent: Saturday, May 30, 2026 7:10 AM
To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Cc: Adrian Mariano <avm4@cornell.edu mailto:avm4@cornell.edu >
Subject: [OpenSCAD] Re: beginners question
Lee, the technical mathematical definition of a 2-dimensional manifold is a surface that looks locally like a plane at every point, or more formally, one where you can map a neighborhood of every point continuously into the plane. In 3d modeling we are using the 2d manifold to define a 3d object by specifying its boundary. If the manifold is bounded (and orientable--a technical condition) then it has an inside and an outside and the points inside will form a well-behaved bounded 3d solid. (Examples of unbounded manifolds: plane, paraboloid, infinitely long cylinder. Bounded: sphere, torus. Bounded but not orientable: klein bottle.)
On Fri, May 29, 2026 at 10:35 PM Lee DeRaud via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org > wrote:
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not quite the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
-----Original Message-----
From: Glenn Butcher via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org >
Sent: Friday, May 29, 2026 6:03 PM
To: discuss@lists.openscad.org mailto:discuss@lists.openscad.org
Cc: Glenn Butcher <glenn.butcher@gmail.com mailto:glenn.butcher@gmail.com >
Subject: [OpenSCAD] Re: beginners question
I recently finished writing code to do a specific sort of mesh, stone walls, and ran into all the fussiness of making 'manifold' meshes. I then wrote a short blog post on why STL files are problematic representing object boundaries:
https://glenn.pulpitrock.net/blog/posts/2025-12-21-whats-so-bad-about-stl-files/
Tried to make it understandable; anyone has questions, post them here.
Glenn
On 5/29/2026 5:29 PM, Jordan Brown via Discuss wrote:
The explanation of what “manifold”, the geometric concept, means, that I learned and seems simple and understandable, is that an ant walking on the surface will never fall off an edge, and will never be presented with multiple choices of which surface to walk on next. A bit more formally, every edge is connected to exactly two faces, and the surface never intersects itself.
With respect to Manifold, the library, and CGAL: OpenSCAD supports those two libraries for doing geometric operations like unions, differences, and so on. CGAL is the library that it has used for many years; Manifold is a newer and far faster library. Manifold (or perhaps the way that OpenSCAD uses it) seems to be more tolerant of imperfection.
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
On 5/29/2026 8:34 PM, Lee DeRaud via Discuss wrote:
One thing about this subject in general: my brain persists in the illusion(?) that a closed surface and a solid object are not quite the same thing, i.e. that a manifold STL is inherently hollow.
Is this a distinction without a difference?
I don't think so. I think the difference starts to matter when you
start trying to really support color, because then you have the question
of whether colors apply to the surfaces, or also to the space inside the
shape. For most 3D graphics what you're interested in is the color on
the surface, but I think that for 3D printing what you're interested in
is the color of the volume. (And then it gets even harder if you try to
overlap at the boundaries for better strength.)
On 5/30/2026 11:30 AM, Lee DeRaud via Discuss wrote:
(A picture would be worth a thousand words, but if I could draw the
picture in OpenSCAD, I wouldn’t be asking the question. 😊)
Picture an arbitrary bounded non-planar surface hovering above a
plane. Projection gives you its “shadow” on that plane (X/Y by
convention). What I want is to fill the space between the surface and
the shadow in the Z direction to produce a solid.
It doesn't (yet?) work for OpenSCAD data, only for imported data, but
what you described is the surface() operation. Well, at least when the
surface is defined as a grid.
Mostly, it shouldn't be too hard to build an appropriate polyhedron.
Just, as always when building polyhedra, tedious.