active.html 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>Active Bugs &mdash; FlatCAM Bugs 1 documentation</title>
  7. <link rel="stylesheet" href="_static/default.css" type="text/css" />
  8. <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
  9. <script type="text/javascript">
  10. var DOCUMENTATION_OPTIONS = {
  11. URL_ROOT: './',
  12. VERSION: '1',
  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="top" title="FlatCAM Bugs 1 documentation" href="index.html" />
  22. <link rel="prev" title="Welcome to FlatCAM Bugs’s documentation!" href="index.html" />
  23. </head>
  24. <body>
  25. <div class="related">
  26. <h3>Navigation</h3>
  27. <ul>
  28. <li class="right" style="margin-right: 10px">
  29. <a href="genindex.html" title="General Index"
  30. accesskey="I">index</a></li>
  31. <li class="right" >
  32. <a href="index.html" title="Welcome to FlatCAM Bugs’s documentation!"
  33. accesskey="P">previous</a> |</li>
  34. <li><a href="index.html">FlatCAM Bugs 1 documentation</a> &raquo;</li>
  35. </ul>
  36. </div>
  37. <div class="document">
  38. <div class="documentwrapper">
  39. <div class="bodywrapper">
  40. <div class="body">
  41. <div class="section" id="active-bugs">
  42. <h1>Active Bugs<a class="headerlink" href="#active-bugs" title="Permalink to this headline">¶</a></h1>
  43. <div class="section" id="drill-number-parsing">
  44. <h2>Drill number parsing<a class="headerlink" href="#drill-number-parsing" title="Permalink to this headline">¶</a></h2>
  45. <p>The screenshot below show the problematic file:</p>
  46. <img alt="_images/drill_parse_problem1.png" class="align-center" src="_images/drill_parse_problem1.png" />
  47. <p>The file reads:</p>
  48. <div class="highlight-python"><pre>G81
  49. M48
  50. METRIC
  51. T1C00.127
  52. T2C00.889
  53. T3C00.900
  54. T4C01.524
  55. T5C01.600
  56. T6C02.032
  57. T7C02.540
  58. %
  59. T002
  60. X03874Y08092
  61. X03874Y23333
  62. X06414Y08092
  63. X06414Y23333
  64. X08954Y08092
  65. ...
  66. T007
  67. X02664Y03518
  68. X02664Y41618
  69. X76324Y03518
  70. X76324Y41618
  71. ...</pre>
  72. </div>
  73. <p>After scaling by 10.0:</p>
  74. <img alt="_images/drill_parse_problem2.png" class="align-center" src="_images/drill_parse_problem2.png" />
  75. <p>The code involved is:</p>
  76. <div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  77. <span class="o">...</span>
  78. <span class="bp">self</span><span class="o">.</span><span class="n">zeros</span> <span class="o">=</span> <span class="s">&quot;T&quot;</span>
  79. <span class="o">...</span>
  80. <span class="k">def</span> <span class="nf">parse_number</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">number_str</span><span class="p">):</span>
  81. <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">zeros</span> <span class="o">==</span> <span class="s">&quot;L&quot;</span><span class="p">:</span>
  82. <span class="n">match</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">leadingzeros_re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">number_str</span><span class="p">)</span>
  83. <span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="n">number_str</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="mi">10</span><span class="o">**</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span><span class="o">-</span><span class="mi">2</span><span class="o">+</span><span class="nb">len</span><span class="p">(</span><span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">))))</span>
  84. <span class="k">else</span><span class="p">:</span> <span class="c"># Trailing</span>
  85. <span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="n">number_str</span><span class="p">)</span><span class="o">/</span><span class="mi">10000</span>
  86. </pre></div>
  87. </div>
  88. <p>The numbers are being divided by 10000. If &#8220;L&#8221; had been specified,
  89. the following regex would have applied:</p>
  90. <div class="highlight-python"><div class="highlight"><pre><span class="c"># Parse coordinates</span>
  91. <span class="bp">self</span><span class="o">.</span><span class="n">leadingzeros_re</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s">r&#39;^(0*)(\d*)&#39;</span><span class="p">)</span>
  92. </pre></div>
  93. </div>
  94. <p>Then the number 02664 would have been divided by 10**(4-2+1) = 10**3 = 1000,
  95. which is what is desired.</p>
  96. <p>Leading zeros weren&#8217;t specified, but www.excellon.com says:</p>
  97. <blockquote>
  98. <div>The CNC-7 uses leading zeros unless you specify
  99. otherwise through a part program or the console.</div></blockquote>
  100. <div class="admonition note">
  101. <p class="first admonition-title">Note</p>
  102. <p class="last">The parser has been modified to default to leading
  103. zeros.</p>
  104. </div>
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. <div class="sphinxsidebar">
  111. <div class="sphinxsidebarwrapper">
  112. <h3><a href="index.html">Table Of Contents</a></h3>
  113. <ul>
  114. <li><a class="reference internal" href="#">Active Bugs</a><ul>
  115. <li><a class="reference internal" href="#drill-number-parsing">Drill number parsing</a></li>
  116. </ul>
  117. </li>
  118. </ul>
  119. <h4>Previous topic</h4>
  120. <p class="topless"><a href="index.html"
  121. title="previous chapter">Welcome to FlatCAM Bugs&#8217;s documentation!</a></p>
  122. <h3>This Page</h3>
  123. <ul class="this-page-menu">
  124. <li><a href="_sources/active.txt"
  125. rel="nofollow">Show Source</a></li>
  126. </ul>
  127. <div id="searchbox" style="display: none">
  128. <h3>Quick search</h3>
  129. <form class="search" action="search.html" method="get">
  130. <input type="text" name="q" />
  131. <input type="submit" value="Go" />
  132. <input type="hidden" name="check_keywords" value="yes" />
  133. <input type="hidden" name="area" value="default" />
  134. </form>
  135. <p class="searchtip" style="font-size: 90%">
  136. Enter search terms or a module, class or function name.
  137. </p>
  138. </div>
  139. <script type="text/javascript">$('#searchbox').show(0);</script>
  140. </div>
  141. </div>
  142. <div class="clearer"></div>
  143. </div>
  144. <div class="related">
  145. <h3>Navigation</h3>
  146. <ul>
  147. <li class="right" style="margin-right: 10px">
  148. <a href="genindex.html" title="General Index"
  149. >index</a></li>
  150. <li class="right" >
  151. <a href="index.html" title="Welcome to FlatCAM Bugs’s documentation!"
  152. >previous</a> |</li>
  153. <li><a href="index.html">FlatCAM Bugs 1 documentation</a> &raquo;</li>
  154. </ul>
  155. </div>
  156. <div class="footer">
  157. &copy; Copyright 2014, Juan Pablo Caram.
  158. Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
  159. </div>
  160. </body>
  161. </html>