5
$\begingroup$

Given a large set of data, I was able to create a 3D graph in Microsoft Excel. How can I create a STL file similar to this graph to create a physical model of this graph? enter image description here

$\endgroup$
2
  • 1
    $\begingroup$ Are you wanting to print the negative object (clear space below) or the part above?" Do you have a sample of data that you used to generate it? $\endgroup$ Commented Apr 27, 2018 at 1:49
  • $\begingroup$ I want a print that looks like the graph. I have the data used in creating the graph. $\endgroup$ Commented Apr 27, 2018 at 16:22

2 Answers 2

1
$\begingroup$

for that you can use openSCAD. Data can be represented as a multi-array and we can iterate on it via for loop

// data structure is x,y,z where z is value 
arrayOfData=[[0,10,4],[0,21,9],[0,13,8],[0,41,2],[1,0,4],[2,0,180],[7,0,90]];    

for(a=[0:1:6])  translate([arrayOfData[a][0], arrayOfData[a][1],0])  cylinder(arrayOfData[a][2],2,.5,false);

And where you get the model it can be intersected with a cube to get the desired shape.

enter image description here

$\endgroup$
4
  • $\begingroup$ I think the trick is to ensure that your CAD tool creates a mesh connecting the desired data points (and not connecting where you don't want it to). Can you eleaborate on this? $\endgroup$ Commented Apr 27, 2018 at 15:07
  • $\begingroup$ that all depends on the desired output. As per attached example, I can see a series of cones. Playing with the cylinder will allow to connect -disconnect points and finally generated object can be intersected with cube. $\endgroup$
    – profesor79
    Commented Apr 27, 2018 at 15:14
  • $\begingroup$ OpenSCAD has a surface function that does this, no need to re-implement! $\endgroup$
    – esoterik
    Commented Apr 30, 2018 at 2:03
  • $\begingroup$ As per OP I was thinking about graph - so no harm here @esoterik $\endgroup$
    – profesor79
    Commented Apr 30, 2018 at 6:48
1
$\begingroup$

I was able to solve this using the openSCAD using the surface command.

From the openSCAD documentation:

//surface.scad
surface(file = "surface.dat", center = true, convexity = 5);
%translate([0, 0,5])cube([10,10,10], center =true);

And creating a space separated data file:

#surface.dat
10 9 8 7 6 5 5 5 5 5 
9 8 7 6 6 4 3 2 1 0 
8 7 6 6 4 3 2 1 0 0
7 6 6 4 3 2 1 0 0 0
6 6 4 3 2 1 1 0 0 0
6 6 3 2 1 1 1 0 0 0
6 6 2 1 1 1 1 0 0 0
6 6 1 0 0 0 0 0 0 0
3 1 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0

Then a STL can be exported of the data in openSCAD.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .