<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="utf-8" />
<title>OpenSCAD</title>
</head>
<body>
<main>
<article>
	<h1>OpenSCAD</h1>
	<address class="h-card">
		by
		<a rel="author" class="u-url" href="http://changelog.ca/"><span class="p-given-name">Charles</span> <span class="p-additional-name">Iliya</span> <span class="p-family-name">Krempeaux</span></a>
	</address>
	<p>
		<strong>OpenSCAD</strong> is an open-source computer-aided design (<abbr title="computer-aided design">CAD</abbr>) software application with its own built-in programming-language.
	</p>
	<p>
		Unlike many other <abbr title="computer-aided design">CAD</abbr> software applications which use a <abbr title="graphical user interface">GUI</abbr> to create, edit, and manipulate objects, <strong>OpenSCAD</strong> creates, edits, and manipulates objects via a scripting programming-language.
		For example:
	</p>
	<figure>
<pre><code>
cube([50,75,100]);
</code></pre>
	</figure>
	<p>
		<strong>OpenSCAD</strong> scripts are usually stored in <code>.scad</code> files.
	</p>
	<p>
		<strong>OpenSCAD</strong> includes many features similar to many imperative programming-languages; including:
	</p>
	<ul>
		<li>variables,</li>
		<li>control structures (such as if-statements and loops),</li>
		<li>modules, and</li>
		<li>libraries.</li>
	</ul>
	<p>
		For those already familiar with programming-languages such as C, C++, C#, D, Dart, Go, Java, JavaScript, PHP, and others — <strong>OpenSCAD</strong> uses curly-brackets.
		For example:
	</p>
	<figure>
<pre><code>
for (a =[x1,x2,x3]){echo(a);}
</code></pre>
	</figure>
	<p>
		<strong>OpenSCAD</strong> provides two main methods for 3D-modeling:
	</p>
	<ul>
		<li>creating complex object from combinations of simpler shapes, and</li>
		<li>extruding 2D shapes (contained in .dxf or .svg files) into 3D shapes.</li>
	</ul>
	<p>
		<strong>OpenSCAD</strong> is especially geared towards mechanical, rather than artistic, aspects of 3D computer-aided design.
		Thus <strong>OpenSCAD</strong> can be useful when one wants to create a model that one wants to 3D-print.
	</p>
	<section>
		<h2>Units</h2>
		<p>
			All dimensions in <strong>OpenSCAD</strong> are measured in (the somewhat confusingly named) "unit".
		</p>
		<p>
			The <em>convention</em> used by a lot of people doing 3D-printing is:
		</p>
		<figure>
			1 unit = 1 millimeter
		</figure>
		<p>
			But <strong>OpenSCAD</strong> is in a sense unit-less.
		</p>
		<p>
			And it is a good idea to explicitly size your model when preparing it for 3D-printing.
		</p>
	</section>
</article>
</main>
</body>
</html>