Multiple material 3D model files

From RepRap
Revision as of 13:52, 18 November 2010 by DavidCary (talk | contribs) (suggest merge)
Jump to: navigation, search

This page has been flagged as containing duplicate material. An editor has suggested merging this page or section into A community specification for an improvement to STL files.. (Discuss)

Fab@Home and RepRap Multiple Material File Format

We are getting together with the Fab@Home team to try and establish a common standard for multiple material data exchange.

To print objects using multiple materials we need also to represent objects made by more than one material. This page sets out and discusses the file-format definitions for that. Our preliminary approach is to create a hybrid file that contains one STL for each material type. There is also a legend in the file that tells which STL is which material, and where it is positioned.

RepRap/Fab@Home Object Format v0.1

The file type extension is: .rfo
The mime type should be: model/reprap-fab-at-home-object

The file itself is a .zip file, that contains the following files: legend.xml and any required STL files.

[[File:MultipleMaterialsFiles-legend.xml|thumb]]

Better than STL

Well. Almost any format really. STL is the worst data structure ever devised. However, what I (AB) would like to do next is to have a format that goes:

The file type extension is: .csg
The mime type should be: model/reprap-fab-at-home-item

Which would be a CSG tree with planar half-spaces as leaves. It is easy to convert (correct) STL files to this format using Tony Woo's alternating sum-of-volumes algorithm.

CSG has a number of advantages:

  • Always solid - the item may not be the right shape if you make a mistake, but it never has open faces, missing edges and so on.
  • Fast to evaluate for 3D printing - CSG lets you know very fast if any given point in space is inside or outside.
  • Easy offsetting - to offset a CSG object made from planar faces, you just change the constant term in the face equations; everything then sorts itself out automatically.
  • Easy to slice - you just set the Z terms in the CSG expression to the height you want, and you get a slice immediately.
  • Easy to infill - you cast rays across for the infill zig-zag; you membership test the middle of each ray segment and never get a dud one.
  • Potential function - at any given point in the object, you know which surface generated the potential at that point. That allows you easily to do things like specifying variable material properties through a solid so (for example) it's rigid polymer at one end gradually becoming bendy as you approach the other.


-- Main.AdrianBowyer - 09 Aug 2007