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$
  • 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$ – Aaron Havens Apr 27 '18 at 1:49
  • $\begingroup$ I want a print that looks like the graph. I have the data used in creating the graph. $\endgroup$ – Eric Johnson Apr 27 '18 at 16:22
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

| improve this answer | |
$\endgroup$
  • $\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$ – Carl Witthoft Apr 27 '18 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 Apr 27 '18 at 15:14
  • $\begingroup$ OpenSCAD has a surface function that does this, no need to re-implement! $\endgroup$ – esoterik Apr 30 '18 at 2:03
  • $\begingroup$ As per OP I was thinking about graph - so no harm here @esoterik $\endgroup$ – profesor79 Apr 30 '18 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.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.