3D Manufacturing Format

3D Manufacturing Format or 3MF is an open source file format standard developed and published by the 3MF Consortium.[1][2]

3MF is an XML-based data format designed specifically for additive manufacturing. It includes information about materials, colors, and other information that cannot be represented in the STL format.[3][4] 3MF is not intended to compete in the traditional CAD space which are represented by neutral formats.[5]

As of today, CAD software related companies such as Autodesk, Dassault Systèmes, PTC, and Netfabb are part of the 3MF Consortium. Other firms in the 3MF Consortium are Microsoft (for operating system and 3D modeling support), SLM and HP, whilst Shapeways are also included to give insight from a 3D printing background.[6] Other key players in the 3D printing and additive manufacturing business, such as Materialise, 3D Systems, Siemens PLM Software and Stratasys have recently joined the consortium.[7] To facilitate the adoption, 3MF Consortium has also published a C++ implementation of the 3MF file format.[8]

Features

Below are a list of some of the advantages of the 3MF format, supplied by the consortium.[9]

  • Full color and texture support in a single file
  • Support structures attached to part data
  • Full tray support for direct machine preparation
  • Thumbnails, viewing, and printing in Microsoft Windows
  • Efficient storage of beam lattices
  • Multiple material support
  • Designed for industrial manufacturing
  • Native integration in Microsoft Office and Paint 3D

Sample file

Below is the 3D payload for a simple 3MF file describing a rectangular cuboid, adapted from the 3MF Core specification. The rectangular cuboid has the dimensions of a 1-2-3 block.

<?xml version="1.0" encoding="UTF-8"?>
<model unit="inch"
       xml:lang="en-US"
       xmlns="http://schemas.microsoft.com/3dmanufacturing/core/2015/02">
	<metadata name="Copyright">
		Copyright (c) 2015 3MF Consortium. All rights reserved.
	</metadata>
	<resources>
		<object id="1" type="model">
			<mesh>
				<vertices>
		          		<vertex x="0" y="0" z="0" />
		          		<vertex x="1" y="0" z="0" />
		          		<vertex x="1" y="2" z="0" />
		          		<vertex x="0" y="2" z="0" />
		     			<vertex x="0" y="0" z="3" />
		          		<vertex x="1" y="0" z="3" />
		          		<vertex x="1" y="2" z="3" />
		          		<vertex x="0" y="2" z="3" />
				</vertices>
				<triangles>
		          		<triangle v1="3" v2="2" v3="1" />
		          		<triangle v1="1" v2="0" v3="3" />
		          		<triangle v1="4" v2="5" v3="6" />
		          		<triangle v1="6" v2="7" v3="4" />
		          		<triangle v1="0" v2="1" v3="5" />
		          		<triangle v1="5" v2="4" v3="0" />
		          		<triangle v1="1" v2="2" v3="6" />
		          		<triangle v1="6" v2="5" v3="1" />
		          		<triangle v1="2" v2="3" v3="7" />
		          		<triangle v1="7" v2="6" v3="2" />
		          		<triangle v1="3" v2="0" v3="4" />
		          		<triangle v1="4" v2="7" v3="3" />
				</triangles>
			</mesh>
		</object>
	</resources>
	<build>
		<item objectid="1" />
	</build>
</model>

See also

References