camlib.html 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329
  1. <!DOCTYPE html>
  2. <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
  3. <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
  4. <head>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Camlib &mdash; Cirkuix 0.5 documentation</title>
  8. <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
  9. <script type="text/javascript">
  10. var DOCUMENTATION_OPTIONS = {
  11. URL_ROOT:'./',
  12. VERSION:'0.5',
  13. COLLAPSE_INDEX:false,
  14. FILE_SUFFIX:'.html',
  15. HAS_SOURCE: true
  16. };
  17. </script>
  18. <script type="text/javascript" src="_static/jquery.js"></script>
  19. <script type="text/javascript" src="_static/underscore.js"></script>
  20. <script type="text/javascript" src="_static/doctools.js"></script>
  21. <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
  22. <script type="text/javascript" src="_static/js/theme.js"></script>
  23. <script type="text/javascript">
  24. jQuery(function () {
  25. SphinxRtdTheme.StickyNav.enable();
  26. });
  27. </script>
  28. <link rel="top" title="Cirkuix 0.5 documentation" href="index.html"/>
  29. <link rel="next" title="FlatCAM Objects" href="flatcamobj.html"/>
  30. <link rel="prev" title="Welcome to FlatCAM’s documentation!" href="index.html"/>
  31. <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
  32. </head>
  33. <body class="wy-body-for-nav" role="document">
  34. <div class="wy-grid-for-nav">
  35. <nav data-toggle="wy-nav-shift" class="wy-nav-side">
  36. <div class="wy-side-nav-search">
  37. <a href="index.html" class="icon icon-home"> Cirkuix</a>
  38. <div role="search">
  39. <form id ="rtd-search-form" class="wy-form" action="search.html" method="get">
  40. <input type="text" name="q" placeholder="Search docs" />
  41. <input type="hidden" name="check_keywords" value="yes" />
  42. <input type="hidden" name="area" value="default" />
  43. </form>
  44. </div>
  45. </div>
  46. <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
  47. <ul class="current">
  48. <li class="toctree-l1 current"><a class="current reference internal" href="">Camlib</a><ul>
  49. <li class="toctree-l2"><a class="reference internal" href="#geometry">Geometry</a></li>
  50. <li class="toctree-l2"><a class="reference internal" href="#gerber">Gerber</a></li>
  51. <li class="toctree-l2"><a class="reference internal" href="#aperturemacro">ApertureMacro</a></li>
  52. <li class="toctree-l2"><a class="reference internal" href="#excellon">Excellon</a></li>
  53. <li class="toctree-l2"><a class="reference internal" href="#cncjob">CNCJob</a></li>
  54. </ul>
  55. </li>
  56. <li class="toctree-l1"><a class="reference internal" href="flatcamobj.html">FlatCAM Objects</a><ul>
  57. <li class="toctree-l2"><a class="reference internal" href="flatcamobj.html#flatcamobj">FlatCAMObj</a></li>
  58. <li class="toctree-l2"><a class="reference internal" href="flatcamobj.html#flatcamgerber">FlatCAMGerber</a></li>
  59. <li class="toctree-l2"><a class="reference internal" href="flatcamobj.html#flatcamexcellon">FlatCAMExcellon</a></li>
  60. <li class="toctree-l2"><a class="reference internal" href="flatcamobj.html#flatcamcncjob">FlatCAMCNCjob</a></li>
  61. <li class="toctree-l2"><a class="reference internal" href="flatcamobj.html#flatcamgeometry">FlatCAMGeometry</a></li>
  62. </ul>
  63. </li>
  64. <li class="toctree-l1"><a class="reference internal" href="app.html">FlatCAM Application</a><ul>
  65. <li class="toctree-l2"><a class="reference internal" href="app.html#app">App</a></li>
  66. <li class="toctree-l2"><a class="reference internal" href="app.html#plotcanvas">PlotCanvas</a></li>
  67. <li class="toctree-l2"><a class="reference internal" href="app.html#objectcollection">ObjectCollection</a></li>
  68. <li class="toctree-l2"><a class="reference internal" href="app.html#measurement">Measurement</a></li>
  69. </ul>
  70. </li>
  71. <li class="toctree-l1"><a class="reference internal" href="devman.html">FlatCAM Developer Manual</a><ul>
  72. <li class="toctree-l2"><a class="reference internal" href="devman.html#options">Options</a></li>
  73. <li class="toctree-l2"><a class="reference internal" href="devman.html#serialization">Serialization</a></li>
  74. <li class="toctree-l2"><a class="reference internal" href="devman.html#geometry-processing">Geometry Processing</a></li>
  75. </ul>
  76. </li>
  77. </ul>
  78. </div>
  79. &nbsp;
  80. </nav>
  81. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
  82. <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
  83. <i data-toggle="wy-nav-top" class="icon icon-reorder"></i>
  84. <a href="index.html">Cirkuix</a>
  85. </nav>
  86. <div class="wy-nav-content">
  87. <div class="rst-content">
  88. <div role="navigation" aria-label="breadcrumbs navigation">
  89. <ul class="wy-breadcrumbs">
  90. <li><a href="index.html">Docs</a> &raquo;</li>
  91. <li>Camlib</li>
  92. <li class="wy-breadcrumbs-aside">
  93. <a href="_sources/camlib.txt" rel="nofollow"> View page source</a>
  94. </li>
  95. </ul>
  96. <hr/>
  97. </div>
  98. <div role="main">
  99. <div class="section" id="module-camlib">
  100. <span id="camlib"></span><h1>Camlib<a class="headerlink" href="#module-camlib" title="Permalink to this headline">¶</a></h1>
  101. <div class="section" id="geometry">
  102. <h2>Geometry<a class="headerlink" href="#geometry" title="Permalink to this headline">¶</a></h2>
  103. <dl class="class">
  104. <dt id="camlib.Geometry">
  105. <em class="property">class </em><tt class="descclassname">camlib.</tt><tt class="descname">Geometry</tt><a class="headerlink" href="#camlib.Geometry" title="Permalink to this definition">¶</a></dt>
  106. <dd><dl class="method">
  107. <dt id="camlib.Geometry.bounds">
  108. <tt class="descname">bounds</tt><big>(</big><big>)</big><a class="headerlink" href="#camlib.Geometry.bounds" title="Permalink to this definition">¶</a></dt>
  109. <dd><p>Returns coordinates of rectangular bounds
  110. of geometry: (xmin, ymin, xmax, ymax).</p>
  111. </dd></dl>
  112. <dl class="method">
  113. <dt id="camlib.Geometry.clear_polygon">
  114. <tt class="descname">clear_polygon</tt><big>(</big><em>polygon</em>, <em>tooldia</em>, <em>overlap=0.15</em><big>)</big><a class="headerlink" href="#camlib.Geometry.clear_polygon" title="Permalink to this definition">¶</a></dt>
  115. <dd><p>Creates geometry inside a polygon for a tool to cover
  116. the whole area.</p>
  117. </dd></dl>
  118. <dl class="method">
  119. <dt id="camlib.Geometry.convert_units">
  120. <tt class="descname">convert_units</tt><big>(</big><em>units</em><big>)</big><a class="headerlink" href="#camlib.Geometry.convert_units" title="Permalink to this definition">¶</a></dt>
  121. <dd><p>Converts the units of the object to <tt class="docutils literal"><span class="pre">units</span></tt> by scaling all
  122. the geometry appropriately. This call <tt class="docutils literal"><span class="pre">scale()</span></tt>. Don&#8217;t call
  123. it again in descendents.</p>
  124. <table class="docutils field-list" frame="void" rules="none">
  125. <col class="field-name" />
  126. <col class="field-body" />
  127. <tbody valign="top">
  128. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>units</strong> (<em>str</em>) &#8211; &#8220;IN&#8221; or &#8220;MM&#8221;</td>
  129. </tr>
  130. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">Scaling factor resulting from unit change.</td>
  131. </tr>
  132. <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">float</td>
  133. </tr>
  134. </tbody>
  135. </table>
  136. </dd></dl>
  137. <dl class="method">
  138. <dt id="camlib.Geometry.from_dict">
  139. <tt class="descname">from_dict</tt><big>(</big><em>d</em><big>)</big><a class="headerlink" href="#camlib.Geometry.from_dict" title="Permalink to this definition">¶</a></dt>
  140. <dd><p>Sets object&#8217;s attributes from a dictionary.
  141. Attributes to include are listed in <tt class="docutils literal"><span class="pre">self.ser_attrs</span></tt>.
  142. This method will look only for only and all the
  143. attributes in <tt class="docutils literal"><span class="pre">self.ser_attrs</span></tt>. They must all
  144. be present. Use only for deserializing saved
  145. objects.</p>
  146. <table class="docutils field-list" frame="void" rules="none">
  147. <col class="field-name" />
  148. <col class="field-body" />
  149. <tbody valign="top">
  150. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>d</strong> (<em>dict</em>) &#8211; Dictionary of attributes to set in the object.</td>
  151. </tr>
  152. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  153. </tr>
  154. </tbody>
  155. </table>
  156. </dd></dl>
  157. <dl class="method">
  158. <dt id="camlib.Geometry.get_empty_area">
  159. <tt class="descname">get_empty_area</tt><big>(</big><em>boundary=None</em><big>)</big><a class="headerlink" href="#camlib.Geometry.get_empty_area" title="Permalink to this definition">¶</a></dt>
  160. <dd><p>Returns the complement of self.solid_geometry within
  161. the given boundary polygon. If not specified, it defaults to
  162. the rectangular bounding box of self.solid_geometry.</p>
  163. </dd></dl>
  164. <dl class="method">
  165. <dt id="camlib.Geometry.isolation_geometry">
  166. <tt class="descname">isolation_geometry</tt><big>(</big><em>offset</em><big>)</big><a class="headerlink" href="#camlib.Geometry.isolation_geometry" title="Permalink to this definition">¶</a></dt>
  167. <dd><p>Creates contours around geometry at a given
  168. offset distance.</p>
  169. <table class="docutils field-list" frame="void" rules="none">
  170. <col class="field-name" />
  171. <col class="field-body" />
  172. <tbody valign="top">
  173. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>offset</strong> (<em>float</em>) &#8211; Offset distance.</td>
  174. </tr>
  175. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">The buffered geometry.</td>
  176. </tr>
  177. <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">Shapely.MultiPolygon or Shapely.Polygon</td>
  178. </tr>
  179. </tbody>
  180. </table>
  181. </dd></dl>
  182. <dl class="method">
  183. <dt id="camlib.Geometry.offset">
  184. <tt class="descname">offset</tt><big>(</big><em>vect</em><big>)</big><a class="headerlink" href="#camlib.Geometry.offset" title="Permalink to this definition">¶</a></dt>
  185. <dd><p>Offset the geometry by the given vector. Override this method.</p>
  186. <table class="docutils field-list" frame="void" rules="none">
  187. <col class="field-name" />
  188. <col class="field-body" />
  189. <tbody valign="top">
  190. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>vect</strong> (<em>tuple</em>) &#8211; (x, y) vector by which to offset the object.</td>
  191. </tr>
  192. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  193. </tr>
  194. </tbody>
  195. </table>
  196. </dd></dl>
  197. <dl class="method">
  198. <dt id="camlib.Geometry.scale">
  199. <tt class="descname">scale</tt><big>(</big><em>factor</em><big>)</big><a class="headerlink" href="#camlib.Geometry.scale" title="Permalink to this definition">¶</a></dt>
  200. <dd><p>Scales all of the object&#8217;s geometry by a given factor. Override
  201. this method.
  202. :param factor: Number by which to scale.
  203. :type factor: float
  204. :return: None
  205. :rtype: None</p>
  206. </dd></dl>
  207. <dl class="method">
  208. <dt id="camlib.Geometry.size">
  209. <tt class="descname">size</tt><big>(</big><big>)</big><a class="headerlink" href="#camlib.Geometry.size" title="Permalink to this definition">¶</a></dt>
  210. <dd><p>Returns (width, height) of rectangular
  211. bounds of geometry.</p>
  212. </dd></dl>
  213. <dl class="method">
  214. <dt id="camlib.Geometry.to_dict">
  215. <tt class="descname">to_dict</tt><big>(</big><big>)</big><a class="headerlink" href="#camlib.Geometry.to_dict" title="Permalink to this definition">¶</a></dt>
  216. <dd><p>Returns a respresentation of the object as a dictionary.
  217. Attributes to include are listed in <tt class="docutils literal"><span class="pre">self.ser_attrs</span></tt>.</p>
  218. <table class="docutils field-list" frame="void" rules="none">
  219. <col class="field-name" />
  220. <col class="field-body" />
  221. <tbody valign="top">
  222. <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">A dictionary-encoded copy of the object.</td>
  223. </tr>
  224. <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body">dict</td>
  225. </tr>
  226. </tbody>
  227. </table>
  228. </dd></dl>
  229. </dd></dl>
  230. </div>
  231. <div class="section" id="gerber">
  232. <h2>Gerber<a class="headerlink" href="#gerber" title="Permalink to this headline">¶</a></h2>
  233. <dl class="class">
  234. <dt id="camlib.Gerber">
  235. <em class="property">class </em><tt class="descclassname">camlib.</tt><tt class="descname">Gerber</tt><big>(</big><em>Geometry</em><big>)</big><a class="headerlink" href="#camlib.Gerber" title="Permalink to this definition">¶</a></dt>
  236. <dd><p><strong>ATTRIBUTES</strong></p>
  237. <ul class="simple">
  238. <li><tt class="docutils literal"><span class="pre">apertures</span></tt> (dict): The keys are names/identifiers of each aperture.
  239. The values are dictionaries key/value pairs which describe the aperture. The
  240. type key is always present and the rest depend on the key:</li>
  241. </ul>
  242. <table border="1" class="docutils">
  243. <colgroup>
  244. <col width="24%" />
  245. <col width="76%" />
  246. </colgroup>
  247. <thead valign="bottom">
  248. <tr class="row-odd"><th class="head">Key</th>
  249. <th class="head">Value</th>
  250. </tr>
  251. </thead>
  252. <tbody valign="top">
  253. <tr class="row-even"><td>type</td>
  254. <td>(str) &#8220;C&#8221;, &#8220;R&#8221;, &#8220;O&#8221;, &#8220;P&#8221;, or &#8220;AP&#8221;</td>
  255. </tr>
  256. <tr class="row-odd"><td>others</td>
  257. <td>Depend on <tt class="docutils literal"><span class="pre">type</span></tt></td>
  258. </tr>
  259. </tbody>
  260. </table>
  261. <ul class="simple">
  262. <li><tt class="docutils literal"><span class="pre">paths</span></tt> (list): A path is described by a line an aperture that follows that
  263. line. Each paths[i] is a dictionary:</li>
  264. </ul>
  265. <table border="1" class="docutils">
  266. <colgroup>
  267. <col width="20%" />
  268. <col width="80%" />
  269. </colgroup>
  270. <thead valign="bottom">
  271. <tr class="row-odd"><th class="head">Key</th>
  272. <th class="head">Value</th>
  273. </tr>
  274. </thead>
  275. <tbody valign="top">
  276. <tr class="row-even"><td>linestring</td>
  277. <td>(Shapely.LineString) The actual path.</td>
  278. </tr>
  279. <tr class="row-odd"><td>aperture</td>
  280. <td>(str) The key for an aperture in apertures.</td>
  281. </tr>
  282. </tbody>
  283. </table>
  284. <ul class="simple">
  285. <li><tt class="docutils literal"><span class="pre">flashes</span></tt> (list): Flashes are single-point strokes of an aperture. Each
  286. is a dictionary:</li>
  287. </ul>
  288. <table border="1" class="docutils">
  289. <colgroup>
  290. <col width="20%" />
  291. <col width="80%" />
  292. </colgroup>
  293. <thead valign="bottom">
  294. <tr class="row-odd"><th class="head">Key</th>
  295. <th class="head">Value</th>
  296. </tr>
  297. </thead>
  298. <tbody valign="top">
  299. <tr class="row-even"><td>loc</td>
  300. <td>(Point) Shapely Point indicating location.</td>
  301. </tr>
  302. <tr class="row-odd"><td>aperture</td>
  303. <td>(str) The key for an aperture in apertures.</td>
  304. </tr>
  305. </tbody>
  306. </table>
  307. <ul class="simple">
  308. <li><tt class="docutils literal"><span class="pre">regions</span></tt> (list): Are surfaces defined by a polygon (Shapely.Polygon),
  309. which have an exterior and zero or more interiors. An aperture is also
  310. associated with a region. Each is a dictionary:</li>
  311. </ul>
  312. <table border="1" class="docutils">
  313. <colgroup>
  314. <col width="18%" />
  315. <col width="82%" />
  316. </colgroup>
  317. <thead valign="bottom">
  318. <tr class="row-odd"><th class="head">Key</th>
  319. <th class="head">Value</th>
  320. </tr>
  321. </thead>
  322. <tbody valign="top">
  323. <tr class="row-even"><td>polygon</td>
  324. <td>(Shapely.Polygon) The polygon defining the region.</td>
  325. </tr>
  326. <tr class="row-odd"><td>aperture</td>
  327. <td>(str) The key for an aperture in apertures.</td>
  328. </tr>
  329. </tbody>
  330. </table>
  331. <ul class="simple">
  332. <li><tt class="docutils literal"><span class="pre">aperture_macros</span></tt> (dictionary): Are predefined geometrical structures
  333. that can be instanciated with different parameters in an aperture
  334. definition. See <tt class="docutils literal"><span class="pre">apertures</span></tt> above. The key is the name of the macro,
  335. and the macro itself, the value, is a <tt class="docutils literal"><span class="pre">Aperture_Macro</span></tt> object.</li>
  336. <li><tt class="docutils literal"><span class="pre">flash_geometry</span></tt> (list): List of (Shapely) geometric object resulting
  337. from <tt class="docutils literal"><span class="pre">flashes</span></tt>. These are generated from <tt class="docutils literal"><span class="pre">flashes</span></tt> in <tt class="docutils literal"><span class="pre">do_flashes()</span></tt>.</li>
  338. <li><tt class="docutils literal"><span class="pre">buffered_paths</span></tt> (list): List of (Shapely) polygons resulting from
  339. <em>buffering</em> (or thickening) the <tt class="docutils literal"><span class="pre">paths</span></tt> with the aperture. These are
  340. generated from <tt class="docutils literal"><span class="pre">paths</span></tt> in <tt class="docutils literal"><span class="pre">buffer_paths()</span></tt>.</li>
  341. </ul>
  342. <p><strong>USAGE</strong>:</p>
  343. <div class="highlight-python"><div class="highlight"><pre><span class="n">g</span> <span class="o">=</span> <span class="n">Gerber</span><span class="p">()</span>
  344. <span class="n">g</span><span class="o">.</span><span class="n">parse_file</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
  345. <span class="n">g</span><span class="o">.</span><span class="n">create_geometry</span><span class="p">()</span>
  346. <span class="n">do_something</span><span class="p">(</span><span class="n">s</span><span class="o">.</span><span class="n">solid_geometry</span><span class="p">)</span>
  347. </pre></div>
  348. </div>
  349. <dl class="method">
  350. <dt id="camlib.Gerber.aperture_parse">
  351. <tt class="descname">aperture_parse</tt><big>(</big><em>apertureId</em>, <em>apertureType</em>, <em>apParameters</em><big>)</big><a class="headerlink" href="#camlib.Gerber.aperture_parse" title="Permalink to this definition">¶</a></dt>
  352. <dd><p>Parse gerber aperture definition into dictionary of apertures.
  353. The following kinds and their attributes are supported:</p>
  354. <ul class="simple">
  355. <li><em>Circular (C)</em>: size (float)</li>
  356. <li><em>Rectangle (R)</em>: width (float), height (float)</li>
  357. <li><em>Obround (O)</em>: width (float), height (float).</li>
  358. <li><em>Polygon (P)</em>: diameter(float), vertices(int), [rotation(float)]</li>
  359. <li><em>Aperture Macro (AM)</em>: macro (ApertureMacro), modifiers (list)</li>
  360. </ul>
  361. <table class="docutils field-list" frame="void" rules="none">
  362. <col class="field-name" />
  363. <col class="field-body" />
  364. <tbody valign="top">
  365. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  366. <li><strong>apertureId</strong> (<em>str</em>) &#8211; Id of the aperture being defined.</li>
  367. <li><strong>apertureType</strong> (<em>str</em>) &#8211; Type of the aperture.</li>
  368. <li><strong>apParameters</strong> (<em>str</em>) &#8211; Parameters of the aperture.</li>
  369. </ul>
  370. </td>
  371. </tr>
  372. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Identifier of the aperture.</p>
  373. </td>
  374. </tr>
  375. <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">str</p>
  376. </td>
  377. </tr>
  378. </tbody>
  379. </table>
  380. </dd></dl>
  381. <dl class="method">
  382. <dt id="camlib.Gerber.buffer_paths">
  383. <tt class="descname">buffer_paths</tt><big>(</big><big>)</big><a class="headerlink" href="#camlib.Gerber.buffer_paths" title="Permalink to this definition">¶</a></dt>
  384. <dd><p>This is part of the parsing process. &#8220;Thickens&#8221; the paths
  385. by their appertures. This will only work for circular appertures.</p>
  386. <table class="docutils field-list" frame="void" rules="none">
  387. <col class="field-name" />
  388. <col class="field-body" />
  389. <tbody valign="top">
  390. <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  391. </tr>
  392. </tbody>
  393. </table>
  394. </dd></dl>
  395. <dl class="method">
  396. <dt id="camlib.Gerber.create_geometry">
  397. <tt class="descname">create_geometry</tt><big>(</big><big>)</big><a class="headerlink" href="#camlib.Gerber.create_geometry" title="Permalink to this definition">¶</a></dt>
  398. <dd><p>Geometry from a Gerber file is made up entirely of polygons.
  399. Every stroke (linear or circular) has an aperture which gives
  400. it thickness. Additionally, aperture strokes have non-zero area,
  401. and regions naturally do as well.</p>
  402. <p>:rtype : None
  403. :return: None</p>
  404. </dd></dl>
  405. <dl class="method">
  406. <dt id="camlib.Gerber.do_flashes">
  407. <tt class="descname">do_flashes</tt><big>(</big><big>)</big><a class="headerlink" href="#camlib.Gerber.do_flashes" title="Permalink to this definition">¶</a></dt>
  408. <dd><p>Creates geometry for Gerber flashes (aperture on a single point).</p>
  409. </dd></dl>
  410. <dl class="method">
  411. <dt id="camlib.Gerber.fix_regions">
  412. <tt class="descname">fix_regions</tt><big>(</big><big>)</big><a class="headerlink" href="#camlib.Gerber.fix_regions" title="Permalink to this definition">¶</a></dt>
  413. <dd><p>Overwrites the region polygons with fixed
  414. versions if found to be invalid (according to Shapely).</p>
  415. <table class="docutils field-list" frame="void" rules="none">
  416. <col class="field-name" />
  417. <col class="field-body" />
  418. <tbody valign="top">
  419. <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  420. </tr>
  421. </tbody>
  422. </table>
  423. </dd></dl>
  424. <dl class="attribute">
  425. <dt id="camlib.Gerber.frac_digits">
  426. <tt class="descname">frac_digits</tt><em class="property"> = None</em><a class="headerlink" href="#camlib.Gerber.frac_digits" title="Permalink to this definition">¶</a></dt>
  427. <dd><p>Number of fraction digits in Gerber numbers. Used during parsing.</p>
  428. </dd></dl>
  429. <dl class="method">
  430. <dt id="camlib.Gerber.get_bounding_box">
  431. <tt class="descname">get_bounding_box</tt><big>(</big><em>margin=0.0</em>, <em>rounded=False</em><big>)</big><a class="headerlink" href="#camlib.Gerber.get_bounding_box" title="Permalink to this definition">¶</a></dt>
  432. <dd><p>Creates and returns a rectangular polygon bounding at a distance of
  433. margin from the object&#8217;s <tt class="docutils literal"><span class="pre">solid_geometry</span></tt>. If margin &gt; 0, the polygon
  434. can optionally have rounded corners of radius equal to margin.</p>
  435. <table class="docutils field-list" frame="void" rules="none">
  436. <col class="field-name" />
  437. <col class="field-body" />
  438. <tbody valign="top">
  439. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  440. <li><strong>margin</strong> (<em>float</em>) &#8211; Distance to enlarge the rectangular bounding
  441. box in both positive and negative, x and y axes.</li>
  442. <li><strong>rounded</strong> (<em>bool</em>) &#8211; Wether or not to have rounded corners.</li>
  443. </ul>
  444. </td>
  445. </tr>
  446. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The bounding box.</p>
  447. </td>
  448. </tr>
  449. <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">Shapely.Polygon</p>
  450. </td>
  451. </tr>
  452. </tbody>
  453. </table>
  454. </dd></dl>
  455. <dl class="attribute">
  456. <dt id="camlib.Gerber.int_digits">
  457. <tt class="descname">int_digits</tt><em class="property"> = None</em><a class="headerlink" href="#camlib.Gerber.int_digits" title="Permalink to this definition">¶</a></dt>
  458. <dd><p>Number of integer digits in Gerber numbers. Used during parsing.</p>
  459. </dd></dl>
  460. <dl class="method">
  461. <dt id="camlib.Gerber.mirror">
  462. <tt class="descname">mirror</tt><big>(</big><em>axis</em>, <em>point</em><big>)</big><a class="headerlink" href="#camlib.Gerber.mirror" title="Permalink to this definition">¶</a></dt>
  463. <dd><p>Mirrors the object around a specified axis passign through
  464. the given point. What is affected:</p>
  465. <ul class="simple">
  466. <li><tt class="docutils literal"><span class="pre">buffered_paths</span></tt></li>
  467. <li><tt class="docutils literal"><span class="pre">flash_geometry</span></tt></li>
  468. <li><tt class="docutils literal"><span class="pre">solid_geometry</span></tt></li>
  469. <li><tt class="docutils literal"><span class="pre">regions</span></tt></li>
  470. </ul>
  471. <p>NOTE:
  472. Does not modify the data used to create these elements. If these
  473. are recreated, the scaling will be lost. This behavior was modified
  474. because of the complexity reached in this class.</p>
  475. <table class="docutils field-list" frame="void" rules="none">
  476. <col class="field-name" />
  477. <col class="field-body" />
  478. <tbody valign="top">
  479. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  480. <li><strong>axis</strong> (<em>str</em>) &#8211; &#8220;X&#8221; or &#8220;Y&#8221; indicates around which axis to mirror.</li>
  481. <li><strong>point</strong> (<em>list</em>) &#8211; [x, y] point belonging to the mirror axis.</li>
  482. </ul>
  483. </td>
  484. </tr>
  485. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">None</p>
  486. </td>
  487. </tr>
  488. </tbody>
  489. </table>
  490. </dd></dl>
  491. <dl class="method">
  492. <dt id="camlib.Gerber.offset">
  493. <tt class="descname">offset</tt><big>(</big><em>vect</em><big>)</big><a class="headerlink" href="#camlib.Gerber.offset" title="Permalink to this definition">¶</a></dt>
  494. <dd><p>Offsets the objects&#8217; geometry on the XY plane by a given vector.
  495. These are:</p>
  496. <ul class="simple">
  497. <li><tt class="docutils literal"><span class="pre">buffered_paths</span></tt></li>
  498. <li><tt class="docutils literal"><span class="pre">flash_geometry</span></tt></li>
  499. <li><tt class="docutils literal"><span class="pre">solid_geometry</span></tt></li>
  500. <li><tt class="docutils literal"><span class="pre">regions</span></tt></li>
  501. </ul>
  502. <p>NOTE:
  503. Does not modify the data used to create these elements. If these
  504. are recreated, the scaling will be lost. This behavior was modified
  505. because of the complexity reached in this class.</p>
  506. <table class="docutils field-list" frame="void" rules="none">
  507. <col class="field-name" />
  508. <col class="field-body" />
  509. <tbody valign="top">
  510. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>vect</strong> (<em>tuple</em>) &#8211; (x, y) offset vector.</td>
  511. </tr>
  512. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  513. </tr>
  514. </tbody>
  515. </table>
  516. </dd></dl>
  517. <dl class="method">
  518. <dt id="camlib.Gerber.parse_file">
  519. <tt class="descname">parse_file</tt><big>(</big><em>filename</em><big>)</big><a class="headerlink" href="#camlib.Gerber.parse_file" title="Permalink to this definition">¶</a></dt>
  520. <dd><p>Calls Gerber.parse_lines() with array of lines
  521. read from the given file.</p>
  522. <table class="docutils field-list" frame="void" rules="none">
  523. <col class="field-name" />
  524. <col class="field-body" />
  525. <tbody valign="top">
  526. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> (<em>str</em>) &#8211; Gerber file to parse.</td>
  527. </tr>
  528. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  529. </tr>
  530. </tbody>
  531. </table>
  532. </dd></dl>
  533. <dl class="method">
  534. <dt id="camlib.Gerber.parse_lines">
  535. <tt class="descname">parse_lines</tt><big>(</big><em>glines</em><big>)</big><a class="headerlink" href="#camlib.Gerber.parse_lines" title="Permalink to this definition">¶</a></dt>
  536. <dd><p>Main Gerber parser. Reads Gerber and populates <tt class="docutils literal"><span class="pre">self.paths</span></tt>, <tt class="docutils literal"><span class="pre">self.apertures</span></tt>,
  537. <tt class="docutils literal"><span class="pre">self.flashes</span></tt>, <tt class="docutils literal"><span class="pre">self.regions</span></tt> and <tt class="docutils literal"><span class="pre">self.units</span></tt>.</p>
  538. <table class="docutils field-list" frame="void" rules="none">
  539. <col class="field-name" />
  540. <col class="field-body" />
  541. <tbody valign="top">
  542. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>glines</strong> (<em>list</em>) &#8211; Gerber code as list of strings, each element being
  543. one line of the source file.</td>
  544. </tr>
  545. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  546. </tr>
  547. <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">None</td>
  548. </tr>
  549. </tbody>
  550. </table>
  551. </dd></dl>
  552. <dl class="method">
  553. <dt id="camlib.Gerber.scale">
  554. <tt class="descname">scale</tt><big>(</big><em>factor</em><big>)</big><a class="headerlink" href="#camlib.Gerber.scale" title="Permalink to this definition">¶</a></dt>
  555. <dd><p>Scales the objects&#8217; geometry on the XY plane by a given factor.
  556. These are:</p>
  557. <ul class="simple">
  558. <li><tt class="docutils literal"><span class="pre">buffered_paths</span></tt></li>
  559. <li><tt class="docutils literal"><span class="pre">flash_geometry</span></tt></li>
  560. <li><tt class="docutils literal"><span class="pre">solid_geometry</span></tt></li>
  561. <li><tt class="docutils literal"><span class="pre">regions</span></tt></li>
  562. </ul>
  563. <p>NOTE:
  564. Does not modify the data used to create these elements. If these
  565. are recreated, the scaling will be lost. This behavior was modified
  566. because of the complexity reached in this class.</p>
  567. <table class="docutils field-list" frame="void" rules="none">
  568. <col class="field-name" />
  569. <col class="field-body" />
  570. <tbody valign="top">
  571. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>factor</strong> (<em>float</em>) &#8211; Number by which to scale.</td>
  572. </tr>
  573. </tbody>
  574. </table>
  575. <p>:rtype : None</p>
  576. </dd></dl>
  577. </dd></dl>
  578. </div>
  579. <div class="section" id="aperturemacro">
  580. <h2>ApertureMacro<a class="headerlink" href="#aperturemacro" title="Permalink to this headline">¶</a></h2>
  581. <dl class="class">
  582. <dt id="camlib.ApertureMacro">
  583. <em class="property">class </em><tt class="descclassname">camlib.</tt><tt class="descname">ApertureMacro</tt><big>(</big><em>name=None</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro" title="Permalink to this definition">¶</a></dt>
  584. <dd><dl class="method">
  585. <dt id="camlib.ApertureMacro.append">
  586. <tt class="descname">append</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.append" title="Permalink to this definition">¶</a></dt>
  587. <dd><p>Appends a string to the raw macro.</p>
  588. <table class="docutils field-list" frame="void" rules="none">
  589. <col class="field-name" />
  590. <col class="field-body" />
  591. <tbody valign="top">
  592. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>data</strong> (<em>str</em>) &#8211; Part of the macro.</td>
  593. </tr>
  594. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  595. </tr>
  596. </tbody>
  597. </table>
  598. </dd></dl>
  599. <dl class="staticmethod">
  600. <dt id="camlib.ApertureMacro.default2zero">
  601. <em class="property">static </em><tt class="descname">default2zero</tt><big>(</big><em>n</em>, <em>mods</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.default2zero" title="Permalink to this definition">¶</a></dt>
  602. <dd><p>Pads the <tt class="docutils literal"><span class="pre">mods</span></tt> list with zeros resulting in an
  603. list of length n.</p>
  604. <table class="docutils field-list" frame="void" rules="none">
  605. <col class="field-name" />
  606. <col class="field-body" />
  607. <tbody valign="top">
  608. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  609. <li><strong>n</strong> (<em>int</em>) &#8211; Length of the resulting list.</li>
  610. <li><strong>mods</strong> (<em>list</em>) &#8211; List to be padded.</li>
  611. </ul>
  612. </td>
  613. </tr>
  614. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">Zero-padded list.</p>
  615. </td>
  616. </tr>
  617. <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">list</p>
  618. </td>
  619. </tr>
  620. </tbody>
  621. </table>
  622. </dd></dl>
  623. <dl class="method">
  624. <dt id="camlib.ApertureMacro.from_dict">
  625. <tt class="descname">from_dict</tt><big>(</big><em>d</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.from_dict" title="Permalink to this definition">¶</a></dt>
  626. <dd><p>Populates the object from a serial representation created
  627. with <tt class="docutils literal"><span class="pre">self.to_dict()</span></tt>.</p>
  628. <table class="docutils field-list" frame="void" rules="none">
  629. <col class="field-name" />
  630. <col class="field-body" />
  631. <tbody valign="top">
  632. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>d</strong> &#8211; Serial representation of an ApertureMacro object.</td>
  633. </tr>
  634. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  635. </tr>
  636. </tbody>
  637. </table>
  638. </dd></dl>
  639. <dl class="staticmethod">
  640. <dt id="camlib.ApertureMacro.make_centerline">
  641. <em class="property">static </em><tt class="descname">make_centerline</tt><big>(</big><em>mods</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.make_centerline" title="Permalink to this definition">¶</a></dt>
  642. <dd><table class="docutils field-list" frame="void" rules="none">
  643. <col class="field-name" />
  644. <col class="field-body" />
  645. <tbody valign="top">
  646. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mods</strong> &#8211; (Exposure 0/1, width &gt;=0, height &gt;=0, x-center, y-center,
  647. rotation angle around origin in degrees)</td>
  648. </tr>
  649. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
  650. </tr>
  651. </tbody>
  652. </table>
  653. </dd></dl>
  654. <dl class="staticmethod">
  655. <dt id="camlib.ApertureMacro.make_circle">
  656. <em class="property">static </em><tt class="descname">make_circle</tt><big>(</big><em>mods</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.make_circle" title="Permalink to this definition">¶</a></dt>
  657. <dd><table class="docutils field-list" frame="void" rules="none">
  658. <col class="field-name" />
  659. <col class="field-body" />
  660. <tbody valign="top">
  661. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mods</strong> &#8211; (Exposure 0/1, Diameter &gt;=0, X-coord, Y-coord)</td>
  662. </tr>
  663. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
  664. </tr>
  665. </tbody>
  666. </table>
  667. </dd></dl>
  668. <dl class="method">
  669. <dt id="camlib.ApertureMacro.make_geometry">
  670. <tt class="descname">make_geometry</tt><big>(</big><em>modifiers</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.make_geometry" title="Permalink to this definition">¶</a></dt>
  671. <dd><p>Runs the macro for the given modifiers and generates
  672. the corresponding geometry.</p>
  673. <table class="docutils field-list" frame="void" rules="none">
  674. <col class="field-name" />
  675. <col class="field-body" />
  676. <tbody valign="top">
  677. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>modifiers</strong> (<em>list</em>) &#8211; Modifiers (parameters) for this macro</td>
  678. </tr>
  679. </tbody>
  680. </table>
  681. </dd></dl>
  682. <dl class="staticmethod">
  683. <dt id="camlib.ApertureMacro.make_lowerleftline">
  684. <em class="property">static </em><tt class="descname">make_lowerleftline</tt><big>(</big><em>mods</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.make_lowerleftline" title="Permalink to this definition">¶</a></dt>
  685. <dd><table class="docutils field-list" frame="void" rules="none">
  686. <col class="field-name" />
  687. <col class="field-body" />
  688. <tbody valign="top">
  689. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mods</strong> &#8211; (exposure 0/1, width &gt;=0, height &gt;=0, x-lowerleft, y-lowerleft,
  690. rotation angle around origin in degrees)</td>
  691. </tr>
  692. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
  693. </tr>
  694. </tbody>
  695. </table>
  696. </dd></dl>
  697. <dl class="staticmethod">
  698. <dt id="camlib.ApertureMacro.make_moire">
  699. <em class="property">static </em><tt class="descname">make_moire</tt><big>(</big><em>mods</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.make_moire" title="Permalink to this definition">¶</a></dt>
  700. <dd><p>Note: Specs indicate that rotation is only allowed if the center
  701. (x, y) == (0, 0). I will tolerate breaking this rule.</p>
  702. <table class="docutils field-list" frame="void" rules="none">
  703. <col class="field-name" />
  704. <col class="field-body" />
  705. <tbody valign="top">
  706. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mods</strong> &#8211; (x-center, y-center, outer_dia_outer_ring, ring thickness,
  707. gap, max_rings, crosshair_thickness, crosshair_len, rotation
  708. angle around origin in degrees)</td>
  709. </tr>
  710. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
  711. </tr>
  712. </tbody>
  713. </table>
  714. </dd></dl>
  715. <dl class="staticmethod">
  716. <dt id="camlib.ApertureMacro.make_outline">
  717. <em class="property">static </em><tt class="descname">make_outline</tt><big>(</big><em>mods</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.make_outline" title="Permalink to this definition">¶</a></dt>
  718. <dd><table class="docutils field-list" frame="void" rules="none">
  719. <col class="field-name" />
  720. <col class="field-body" />
  721. <tbody valign="top">
  722. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mods</strong> &#8211; </td>
  723. </tr>
  724. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
  725. </tr>
  726. </tbody>
  727. </table>
  728. </dd></dl>
  729. <dl class="staticmethod">
  730. <dt id="camlib.ApertureMacro.make_polygon">
  731. <em class="property">static </em><tt class="descname">make_polygon</tt><big>(</big><em>mods</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.make_polygon" title="Permalink to this definition">¶</a></dt>
  732. <dd><p>Note: Specs indicate that rotation is only allowed if the center
  733. (x, y) == (0, 0). I will tolerate breaking this rule.</p>
  734. <table class="docutils field-list" frame="void" rules="none">
  735. <col class="field-name" />
  736. <col class="field-body" />
  737. <tbody valign="top">
  738. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mods</strong> &#8211; (exposure 0/1, n_verts 3&lt;=n&lt;=12, x-center, y-center,
  739. diameter of circumscribed circle &gt;=0, rotation angle around origin)</td>
  740. </tr>
  741. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
  742. </tr>
  743. </tbody>
  744. </table>
  745. </dd></dl>
  746. <dl class="staticmethod">
  747. <dt id="camlib.ApertureMacro.make_thermal">
  748. <em class="property">static </em><tt class="descname">make_thermal</tt><big>(</big><em>mods</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.make_thermal" title="Permalink to this definition">¶</a></dt>
  749. <dd><p>Note: Specs indicate that rotation is only allowed if the center
  750. (x, y) == (0, 0). I will tolerate breaking this rule.</p>
  751. <table class="docutils field-list" frame="void" rules="none">
  752. <col class="field-name" />
  753. <col class="field-body" />
  754. <tbody valign="top">
  755. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mods</strong> &#8211; [x-center, y-center, diameter-outside, diameter-inside,
  756. gap-thickness, rotation angle around origin]</td>
  757. </tr>
  758. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
  759. </tr>
  760. </tbody>
  761. </table>
  762. </dd></dl>
  763. <dl class="staticmethod">
  764. <dt id="camlib.ApertureMacro.make_vectorline">
  765. <em class="property">static </em><tt class="descname">make_vectorline</tt><big>(</big><em>mods</em><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.make_vectorline" title="Permalink to this definition">¶</a></dt>
  766. <dd><table class="docutils field-list" frame="void" rules="none">
  767. <col class="field-name" />
  768. <col class="field-body" />
  769. <tbody valign="top">
  770. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mods</strong> &#8211; (Exposure 0/1, Line width &gt;= 0, X-start, Y-start, X-end, Y-end,
  771. rotation angle around origin in degrees)</td>
  772. </tr>
  773. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
  774. </tr>
  775. </tbody>
  776. </table>
  777. </dd></dl>
  778. <dl class="method">
  779. <dt id="camlib.ApertureMacro.parse_content">
  780. <tt class="descname">parse_content</tt><big>(</big><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.parse_content" title="Permalink to this definition">¶</a></dt>
  781. <dd><p>Creates numerical lists for all primitives in the aperture
  782. macro (in <tt class="docutils literal"><span class="pre">self.raw</span></tt>) by replacing all variables by their
  783. values iteratively and evaluating expressions. Results
  784. are stored in <tt class="docutils literal"><span class="pre">self.primitives</span></tt>.</p>
  785. <table class="docutils field-list" frame="void" rules="none">
  786. <col class="field-name" />
  787. <col class="field-body" />
  788. <tbody valign="top">
  789. <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  790. </tr>
  791. </tbody>
  792. </table>
  793. </dd></dl>
  794. <dl class="method">
  795. <dt id="camlib.ApertureMacro.to_dict">
  796. <tt class="descname">to_dict</tt><big>(</big><big>)</big><a class="headerlink" href="#camlib.ApertureMacro.to_dict" title="Permalink to this definition">¶</a></dt>
  797. <dd><p>Returns the object in a serializable form. Only the name and
  798. raw are required.</p>
  799. <table class="docutils field-list" frame="void" rules="none">
  800. <col class="field-name" />
  801. <col class="field-body" />
  802. <tbody valign="top">
  803. <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">Dictionary representing the object. JSON ready.</td>
  804. </tr>
  805. <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body">dict</td>
  806. </tr>
  807. </tbody>
  808. </table>
  809. </dd></dl>
  810. </dd></dl>
  811. </div>
  812. <div class="section" id="excellon">
  813. <h2>Excellon<a class="headerlink" href="#excellon" title="Permalink to this headline">¶</a></h2>
  814. <dl class="class">
  815. <dt id="camlib.Excellon">
  816. <em class="property">class </em><tt class="descclassname">camlib.</tt><tt class="descname">Excellon</tt><big>(</big><em>Geometry</em><big>)</big><a class="headerlink" href="#camlib.Excellon" title="Permalink to this definition">¶</a></dt>
  817. <dd><p><em>ATTRIBUTES</em></p>
  818. <ul class="simple">
  819. <li><tt class="docutils literal"><span class="pre">tools</span></tt> (dict): The key is the tool name and the value is
  820. a dictionary specifying the tool:</li>
  821. </ul>
  822. <table border="1" class="docutils">
  823. <colgroup>
  824. <col width="31%" />
  825. <col width="69%" />
  826. </colgroup>
  827. <thead valign="bottom">
  828. <tr class="row-odd"><th class="head">Key</th>
  829. <th class="head">Value</th>
  830. </tr>
  831. </thead>
  832. <tbody valign="top">
  833. <tr class="row-even"><td>C</td>
  834. <td>Diameter of the tool</td>
  835. </tr>
  836. <tr class="row-odd"><td>Others</td>
  837. <td>Not supported (Ignored).</td>
  838. </tr>
  839. </tbody>
  840. </table>
  841. <ul class="simple">
  842. <li><tt class="docutils literal"><span class="pre">drills</span></tt> (list): Each is a dictionary:</li>
  843. </ul>
  844. <table border="1" class="docutils">
  845. <colgroup>
  846. <col width="31%" />
  847. <col width="69%" />
  848. </colgroup>
  849. <thead valign="bottom">
  850. <tr class="row-odd"><th class="head">Key</th>
  851. <th class="head">Value</th>
  852. </tr>
  853. </thead>
  854. <tbody valign="top">
  855. <tr class="row-even"><td>point</td>
  856. <td>(Shapely.Point) Where to drill</td>
  857. </tr>
  858. <tr class="row-odd"><td>tool</td>
  859. <td>(str) A key in <tt class="docutils literal"><span class="pre">tools</span></tt></td>
  860. </tr>
  861. </tbody>
  862. </table>
  863. <dl class="method">
  864. <dt id="camlib.Excellon.create_geometry">
  865. <tt class="descname">create_geometry</tt><big>(</big><big>)</big><a class="headerlink" href="#camlib.Excellon.create_geometry" title="Permalink to this definition">¶</a></dt>
  866. <dd><p>Creates circles of the tool diameter at every point
  867. specified in <tt class="docutils literal"><span class="pre">self.drills</span></tt>.</p>
  868. <table class="docutils field-list" frame="void" rules="none">
  869. <col class="field-name" />
  870. <col class="field-body" />
  871. <tbody valign="top">
  872. <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  873. </tr>
  874. </tbody>
  875. </table>
  876. </dd></dl>
  877. <dl class="method">
  878. <dt id="camlib.Excellon.mirror">
  879. <tt class="descname">mirror</tt><big>(</big><em>axis</em>, <em>point</em><big>)</big><a class="headerlink" href="#camlib.Excellon.mirror" title="Permalink to this definition">¶</a></dt>
  880. <dd><table class="docutils field-list" frame="void" rules="none">
  881. <col class="field-name" />
  882. <col class="field-body" />
  883. <tbody valign="top">
  884. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  885. <li><strong>axis</strong> (<em>str</em>) &#8211; &#8220;X&#8221; or &#8220;Y&#8221; indicates around which axis to mirror.</li>
  886. <li><strong>point</strong> (<em>list</em>) &#8211; [x, y] point belonging to the mirror axis.</li>
  887. </ul>
  888. </td>
  889. </tr>
  890. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">None</p>
  891. </td>
  892. </tr>
  893. </tbody>
  894. </table>
  895. </dd></dl>
  896. <dl class="method">
  897. <dt id="camlib.Excellon.offset">
  898. <tt class="descname">offset</tt><big>(</big><em>vect</em><big>)</big><a class="headerlink" href="#camlib.Excellon.offset" title="Permalink to this definition">¶</a></dt>
  899. <dd><p>Offsets geometry on the XY plane in the object by a given vector.</p>
  900. <table class="docutils field-list" frame="void" rules="none">
  901. <col class="field-name" />
  902. <col class="field-body" />
  903. <tbody valign="top">
  904. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>vect</strong> (<em>tuple</em>) &#8211; (x, y) offset vector.</td>
  905. </tr>
  906. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  907. </tr>
  908. </tbody>
  909. </table>
  910. </dd></dl>
  911. <dl class="method">
  912. <dt id="camlib.Excellon.parse_file">
  913. <tt class="descname">parse_file</tt><big>(</big><em>filename</em><big>)</big><a class="headerlink" href="#camlib.Excellon.parse_file" title="Permalink to this definition">¶</a></dt>
  914. <dd><p>Reads the specified file as array of lines as
  915. passes it to <tt class="docutils literal"><span class="pre">parse_lines()</span></tt>.</p>
  916. <table class="docutils field-list" frame="void" rules="none">
  917. <col class="field-name" />
  918. <col class="field-body" />
  919. <tbody valign="top">
  920. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> (<em>str</em>) &#8211; The file to be read and parsed.</td>
  921. </tr>
  922. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  923. </tr>
  924. </tbody>
  925. </table>
  926. </dd></dl>
  927. <dl class="method">
  928. <dt id="camlib.Excellon.parse_lines">
  929. <tt class="descname">parse_lines</tt><big>(</big><em>elines</em><big>)</big><a class="headerlink" href="#camlib.Excellon.parse_lines" title="Permalink to this definition">¶</a></dt>
  930. <dd><p>Main Excellon parser.</p>
  931. <table class="docutils field-list" frame="void" rules="none">
  932. <col class="field-name" />
  933. <col class="field-body" />
  934. <tbody valign="top">
  935. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>elines</strong> (<em>list</em>) &#8211; List of strings, each being a line of Excellon code.</td>
  936. </tr>
  937. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  938. </tr>
  939. </tbody>
  940. </table>
  941. </dd></dl>
  942. <dl class="method">
  943. <dt id="camlib.Excellon.scale">
  944. <tt class="descname">scale</tt><big>(</big><em>factor</em><big>)</big><a class="headerlink" href="#camlib.Excellon.scale" title="Permalink to this definition">¶</a></dt>
  945. <dd><p>Scales geometry on the XY plane in the object by a given factor.
  946. Tool sizes, feedrates an Z-plane dimensions are untouched.</p>
  947. <table class="docutils field-list" frame="void" rules="none">
  948. <col class="field-name" />
  949. <col class="field-body" />
  950. <tbody valign="top">
  951. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>factor</strong> (<em>float</em>) &#8211; Number by which to scale the object.</td>
  952. </tr>
  953. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  954. </tr>
  955. <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">NOne</td>
  956. </tr>
  957. </tbody>
  958. </table>
  959. </dd></dl>
  960. </dd></dl>
  961. </div>
  962. <div class="section" id="cncjob">
  963. <h2>CNCJob<a class="headerlink" href="#cncjob" title="Permalink to this headline">¶</a></h2>
  964. <dl class="class">
  965. <dt id="camlib.CNCjob">
  966. <em class="property">class </em><tt class="descclassname">camlib.</tt><tt class="descname">CNCjob</tt><big>(</big><em>Geometry</em><big>)</big><a class="headerlink" href="#camlib.CNCjob" title="Permalink to this definition">¶</a></dt>
  967. <dd><p>Represents work to be done by a CNC machine.</p>
  968. <p><em>ATTRIBUTES</em></p>
  969. <ul class="simple">
  970. <li><tt class="docutils literal"><span class="pre">gcode_parsed</span></tt> (list): Each is a dictionary:</li>
  971. </ul>
  972. <table border="1" class="docutils">
  973. <colgroup>
  974. <col width="34%" />
  975. <col width="66%" />
  976. </colgroup>
  977. <thead valign="bottom">
  978. <tr class="row-odd"><th class="head">Key</th>
  979. <th class="head">Value</th>
  980. </tr>
  981. </thead>
  982. <tbody valign="top">
  983. <tr class="row-even"><td>geom</td>
  984. <td>(Shapely.LineString) Tool path (XY plane)</td>
  985. </tr>
  986. <tr class="row-odd"><td>kind</td>
  987. <td>(string) &#8220;AB&#8221;, A is &#8220;T&#8221; (travel) or
  988. &#8220;C&#8221; (cut). B is &#8220;F&#8221; (fast) or &#8220;S&#8221; (slow).</td>
  989. </tr>
  990. </tbody>
  991. </table>
  992. <dl class="method">
  993. <dt id="camlib.CNCjob.gcode_parse">
  994. <tt class="descname">gcode_parse</tt><big>(</big><big>)</big><a class="headerlink" href="#camlib.CNCjob.gcode_parse" title="Permalink to this definition">¶</a></dt>
  995. <dd><p>G-Code parser (from self.gcode). Generates dictionary with
  996. single-segment LineString&#8217;s and &#8220;kind&#8221; indicating cut or travel,
  997. fast or feedrate speed.</p>
  998. </dd></dl>
  999. <dl class="method">
  1000. <dt id="camlib.CNCjob.generate_from_excellon">
  1001. <tt class="descname">generate_from_excellon</tt><big>(</big><em>exobj</em><big>)</big><a class="headerlink" href="#camlib.CNCjob.generate_from_excellon" title="Permalink to this definition">¶</a></dt>
  1002. <dd><p>Generates G-code for drilling from Excellon object.
  1003. self.gcode becomes a list, each element is a
  1004. different job for each tool in the excellon code.</p>
  1005. </dd></dl>
  1006. <dl class="method">
  1007. <dt id="camlib.CNCjob.generate_from_excellon_by_tool">
  1008. <tt class="descname">generate_from_excellon_by_tool</tt><big>(</big><em>exobj</em>, <em>tools='all'</em><big>)</big><a class="headerlink" href="#camlib.CNCjob.generate_from_excellon_by_tool" title="Permalink to this definition">¶</a></dt>
  1009. <dd><p>Creates gcode for this object from an Excellon object
  1010. for the specified tools.</p>
  1011. <table class="docutils field-list" frame="void" rules="none">
  1012. <col class="field-name" />
  1013. <col class="field-body" />
  1014. <tbody valign="top">
  1015. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  1016. <li><strong>exobj</strong> (<em>Excellon</em>) &#8211; Excellon object to process</li>
  1017. <li><strong>tools</strong> &#8211; Comma separated tool names</li>
  1018. </ul>
  1019. </td>
  1020. </tr>
  1021. <tr class="field-even field"><th class="field-name">Type:</th><td class="field-body"><p class="first">tools: str</p>
  1022. </td>
  1023. </tr>
  1024. <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">None</p>
  1025. </td>
  1026. </tr>
  1027. <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">None</p>
  1028. </td>
  1029. </tr>
  1030. </tbody>
  1031. </table>
  1032. </dd></dl>
  1033. <dl class="method">
  1034. <dt id="camlib.CNCjob.generate_from_geometry">
  1035. <tt class="descname">generate_from_geometry</tt><big>(</big><em>geometry</em>, <em>append=True</em>, <em>tooldia=None</em>, <em>tolerance=0</em><big>)</big><a class="headerlink" href="#camlib.CNCjob.generate_from_geometry" title="Permalink to this definition">¶</a></dt>
  1036. <dd><p>Generates G-Code from a Geometry object. Stores in <tt class="docutils literal"><span class="pre">self.gcode</span></tt>.</p>
  1037. <table class="docutils field-list" frame="void" rules="none">
  1038. <col class="field-name" />
  1039. <col class="field-body" />
  1040. <tbody valign="top">
  1041. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  1042. <li><strong>geometry</strong> (<em>Geometry</em>) &#8211; Geometry defining the toolpath</li>
  1043. <li><strong>append</strong> (<em>bool</em>) &#8211; Wether to append to self.gcode or re-write it.</li>
  1044. <li><strong>tooldia</strong> (<em>bool</em>) &#8211; If given, sets the tooldia property but does
  1045. not affect the process in any other way.</li>
  1046. <li><strong>tolerance</strong> &#8211; All points in the simplified object will be within the
  1047. tolerance distance of the original geometry.</li>
  1048. </ul>
  1049. </td>
  1050. </tr>
  1051. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">None</p>
  1052. </td>
  1053. </tr>
  1054. <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">None</p>
  1055. </td>
  1056. </tr>
  1057. </tbody>
  1058. </table>
  1059. </dd></dl>
  1060. <dl class="method">
  1061. <dt id="camlib.CNCjob.linear2gcode">
  1062. <tt class="descname">linear2gcode</tt><big>(</big><em>linear</em>, <em>tolerance=0</em><big>)</big><a class="headerlink" href="#camlib.CNCjob.linear2gcode" title="Permalink to this definition">¶</a></dt>
  1063. <dd><p>Generates G-code to cut along the linear feature.</p>
  1064. <table class="docutils field-list" frame="void" rules="none">
  1065. <col class="field-name" />
  1066. <col class="field-body" />
  1067. <tbody valign="top">
  1068. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  1069. <li><strong>linear</strong> &#8211; The path to cut along.</li>
  1070. <li><strong>tolerance</strong> (<em>float</em>) &#8211; All points in the simplified object will be within the
  1071. tolerance distance of the original geometry.</li>
  1072. </ul>
  1073. </td>
  1074. </tr>
  1075. <tr class="field-even field"><th class="field-name">Type:</th><td class="field-body"><p class="first">Shapely.LinearRing or Shapely.Linear String</p>
  1076. </td>
  1077. </tr>
  1078. <tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">G-code to cut alon the linear feature.</p>
  1079. </td>
  1080. </tr>
  1081. <tr class="field-even field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">str</p>
  1082. </td>
  1083. </tr>
  1084. </tbody>
  1085. </table>
  1086. </dd></dl>
  1087. <dl class="method">
  1088. <dt id="camlib.CNCjob.offset">
  1089. <tt class="descname">offset</tt><big>(</big><em>vect</em><big>)</big><a class="headerlink" href="#camlib.CNCjob.offset" title="Permalink to this definition">¶</a></dt>
  1090. <dd><p>Offsets all the geometry on the XY plane in the object by the
  1091. given vector.</p>
  1092. <table class="docutils field-list" frame="void" rules="none">
  1093. <col class="field-name" />
  1094. <col class="field-body" />
  1095. <tbody valign="top">
  1096. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>vect</strong> (<em>tuple</em>) &#8211; (x, y) offset vector.</td>
  1097. </tr>
  1098. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  1099. </tr>
  1100. </tbody>
  1101. </table>
  1102. </dd></dl>
  1103. <dl class="method">
  1104. <dt id="camlib.CNCjob.plot2">
  1105. <tt class="descname">plot2</tt><big>(</big><em>axes, tooldia=None, dpi=75, margin=0.1, color={'C': ['#5E6CFF', '#4650BD'], 'T': ['#F0E24D', '#B5AB3A']}, alpha={'C': 1.0, 'T': 0.3}, tool_tolerance=0.0005</em><big>)</big><a class="headerlink" href="#camlib.CNCjob.plot2" title="Permalink to this definition">¶</a></dt>
  1106. <dd><p>Plots the G-code job onto the given axes.</p>
  1107. <table class="docutils field-list" frame="void" rules="none">
  1108. <col class="field-name" />
  1109. <col class="field-body" />
  1110. <tbody valign="top">
  1111. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  1112. <li><strong>axes</strong> &#8211; Matplotlib axes on which to plot.</li>
  1113. <li><strong>tooldia</strong> &#8211; Tool diameter.</li>
  1114. <li><strong>dpi</strong> &#8211; Not used!</li>
  1115. <li><strong>margin</strong> &#8211; Not used!</li>
  1116. <li><strong>color</strong> &#8211; Color specification.</li>
  1117. <li><strong>alpha</strong> &#8211; Transparency specification.</li>
  1118. <li><strong>tool_tolerance</strong> &#8211; Tolerance when drawing the toolshape.</li>
  1119. </ul>
  1120. </td>
  1121. </tr>
  1122. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">None</p>
  1123. </td>
  1124. </tr>
  1125. </tbody>
  1126. </table>
  1127. </dd></dl>
  1128. <dl class="method">
  1129. <dt id="camlib.CNCjob.polygon2gcode">
  1130. <tt class="descname">polygon2gcode</tt><big>(</big><em>polygon</em>, <em>tolerance=0</em><big>)</big><a class="headerlink" href="#camlib.CNCjob.polygon2gcode" title="Permalink to this definition">¶</a></dt>
  1131. <dd><p>Creates G-Code for the exterior and all interior paths
  1132. of a polygon.</p>
  1133. <table class="docutils field-list" frame="void" rules="none">
  1134. <col class="field-name" />
  1135. <col class="field-body" />
  1136. <tbody valign="top">
  1137. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
  1138. <li><strong>polygon</strong> (<em>Shapely.Polygon</em>) &#8211; A Shapely.Polygon</li>
  1139. <li><strong>tolerance</strong> (<em>float</em>) &#8211; All points in the simplified object will be within the
  1140. tolerance distance of the original geometry.</li>
  1141. </ul>
  1142. </td>
  1143. </tr>
  1144. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">G-code to cut along polygon.</p>
  1145. </td>
  1146. </tr>
  1147. <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">str</p>
  1148. </td>
  1149. </tr>
  1150. </tbody>
  1151. </table>
  1152. </dd></dl>
  1153. <dl class="method">
  1154. <dt id="camlib.CNCjob.pre_parse">
  1155. <tt class="descname">pre_parse</tt><big>(</big><em>gtext</em><big>)</big><a class="headerlink" href="#camlib.CNCjob.pre_parse" title="Permalink to this definition">¶</a></dt>
  1156. <dd><p>Separates parts of the G-Code text into a list of dictionaries.
  1157. Used by <tt class="docutils literal"><span class="pre">self.gcode_parse()</span></tt>.</p>
  1158. <table class="docutils field-list" frame="void" rules="none">
  1159. <col class="field-name" />
  1160. <col class="field-body" />
  1161. <tbody valign="top">
  1162. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>gtext</strong> &#8211; A single string with g-code</td>
  1163. </tr>
  1164. </tbody>
  1165. </table>
  1166. </dd></dl>
  1167. <dl class="method">
  1168. <dt id="camlib.CNCjob.scale">
  1169. <tt class="descname">scale</tt><big>(</big><em>factor</em><big>)</big><a class="headerlink" href="#camlib.CNCjob.scale" title="Permalink to this definition">¶</a></dt>
  1170. <dd><p>Scales all the geometry on the XY plane in the object by the
  1171. given factor. Tool sizes, feedrates, or Z-axis dimensions are
  1172. not altered.</p>
  1173. <table class="docutils field-list" frame="void" rules="none">
  1174. <col class="field-name" />
  1175. <col class="field-body" />
  1176. <tbody valign="top">
  1177. <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>factor</strong> (<em>float</em>) &#8211; Number by which to scale the object.</td>
  1178. </tr>
  1179. <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
  1180. </tr>
  1181. <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">None</td>
  1182. </tr>
  1183. </tbody>
  1184. </table>
  1185. </dd></dl>
  1186. </dd></dl>
  1187. </div>
  1188. </div>
  1189. </div>
  1190. <footer>
  1191. <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
  1192. <a href="flatcamobj.html" class="btn btn-neutral float-right" title="FlatCAM Objects"/>Next <span class="icon icon-circle-arrow-right"></span></a>
  1193. <a href="index.html" class="btn btn-neutral" title="Welcome to FlatCAM’s documentation!"><span class="icon icon-circle-arrow-left"></span> Previous</a>
  1194. </div>
  1195. <hr/>
  1196. <div role="contentinfo">
  1197. <p>
  1198. &copy; Copyright 2014, Juan Pablo Caram.
  1199. </p>
  1200. </div>
  1201. <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>
  1202. </footer>
  1203. </div>
  1204. </div>
  1205. </section>
  1206. </div>
  1207. </body>
  1208. </html>