start updating lib to use solidLib.settings

This commit is contained in:
2021-02-14 10:38:18 +01:00
parent 4e2fa79419
commit 89af799c44
31 changed files with 325 additions and 244 deletions
+40 -43
View File
@@ -122,8 +122,10 @@
<span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">solid</span> <span class="k">as</span> <span class="nn">scad</span>
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">primitives</span> <span class="k">as</span> <span class="n">slp</span>
<span class="kn">import</span> <span class="nn">solidLib</span> <span class="k">as</span> <span class="nn">sl</span>
<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Iterable</span>
<span class="c1"># import .primitives as slp</span>
@@ -133,8 +135,6 @@
<span class="n">w</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
<span class="n">h</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1.5</span><span class="p">,</span>
<span class="n">fillet</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<span class="n">dim</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">59</span><span class="p">,</span>
<span class="n">segments</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">36</span><span class="p">,</span>
<span class="p">):</span>
<span class="sd">&quot;&quot;&quot;generate a grid of (flattened) triangles with or without fillet</span>
@@ -149,7 +149,7 @@
<span class="n">out</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">polygon</span><span class="p">([[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="n">w</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="n">w</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">-</span> <span class="n">h</span><span class="p">,</span> <span class="n">h</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">h</span><span class="p">]])</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">out</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">polygon</span><span class="p">([[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="n">w</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">h</span><span class="p">]])</span>
<span class="n">out</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">linear_extrude</span><span class="p">(</span><span class="n">dim</span><span class="p">)(</span><span class="n">out</span><span class="p">)</span>
<span class="n">out</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">linear_extrude</span><span class="p">(</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">)(</span><span class="n">out</span><span class="p">)</span>
<span class="n">out</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">rotate</span><span class="p">([</span><span class="mi">90</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">90</span><span class="p">])(</span><span class="n">out</span><span class="p">)</span>
<span class="k">if</span> <span class="n">fillet</span><span class="p">:</span>
@@ -158,25 +158,25 @@
<span class="n">scallop</span> <span class="o">=</span> <span class="n">slp</span><span class="o">.</span><span class="n">pill</span><span class="p">(</span>
<span class="p">[</span>
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
<span class="p">[</span><span class="n">dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">h</span> <span class="o">-</span> <span class="p">(</span><span class="n">w</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">h</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
<span class="p">[</span><span class="n">dsl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">h</span> <span class="o">-</span> <span class="p">(</span><span class="n">w</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">h</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
<span class="c1"># [0,0,h], [dim - 2 * h - (w - 2 * h),0,h]</span>
<span class="p">],</span>
<span class="n">h</span><span class="p">,</span>
<span class="n">segments</span><span class="o">=</span><span class="n">segments</span><span class="p">,</span>
<span class="n">segments</span><span class="o">=</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">segments</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">scallop</span> <span class="o">+=</span> <span class="n">scad</span><span class="o">.</span><span class="n">rotate</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">90</span><span class="p">,</span> <span class="mi">0</span><span class="p">))(</span><span class="n">scallop</span><span class="p">)</span> <span class="o">+</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="n">dim</span> <span class="o">-</span> <span class="n">w</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">])(</span>
<span class="n">scallop</span> <span class="o">+=</span> <span class="n">scad</span><span class="o">.</span><span class="n">rotate</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">90</span><span class="p">,</span> <span class="mi">0</span><span class="p">))(</span><span class="n">scallop</span><span class="p">)</span> <span class="o">+</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">-</span> <span class="n">w</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">])(</span>
<span class="n">scad</span><span class="o">.</span><span class="n">rotate</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">90</span><span class="p">,</span> <span class="mi">0</span><span class="p">])(</span><span class="n">scallop</span><span class="p">)</span>
<span class="p">)</span>
<span class="n">scallop</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">((</span><span class="n">w</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span> <span class="n">w</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span> <span class="n">h</span><span class="p">))(</span><span class="n">scallop</span><span class="p">)</span>
<span class="n">out</span> <span class="o">-=</span> <span class="n">scallop</span>
<span class="n">out</span> <span class="o">+=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="n">dim</span><span class="p">,</span> <span class="mi">0</span><span class="p">))(</span><span class="n">scad</span><span class="o">.</span><span class="n">rotate</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">90</span><span class="p">))(</span><span class="n">out</span><span class="p">))</span>
<span class="n">out</span> <span class="o">+=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">((</span><span class="n">dim</span><span class="p">,</span> <span class="n">dim</span><span class="p">,</span> <span class="mi">0</span><span class="p">))(</span><span class="n">scad</span><span class="o">.</span><span class="n">rotate</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">180</span><span class="p">))(</span><span class="n">out</span><span class="p">))</span>
<span class="n">out</span> <span class="o">+=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">,</span> <span class="mi">0</span><span class="p">))(</span><span class="n">scad</span><span class="o">.</span><span class="n">rotate</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">90</span><span class="p">))(</span><span class="n">out</span><span class="p">))</span>
<span class="n">out</span> <span class="o">+=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">((</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">,</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">,</span> <span class="mi">0</span><span class="p">))(</span><span class="n">scad</span><span class="o">.</span><span class="n">rotate</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">180</span><span class="p">))(</span><span class="n">out</span><span class="p">))</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">out</span>
<span class="k">for</span> <span class="n">dx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">x_dim</span><span class="p">):</span>
<span class="k">for</span> <span class="n">dy</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">y</span><span class="p">):</span>
<span class="n">result</span> <span class="o">+=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">((</span><span class="n">dim</span> <span class="o">*</span> <span class="n">dx</span><span class="p">,</span> <span class="n">dim</span> <span class="o">*</span> <span class="n">dy</span><span class="p">,</span> <span class="mi">0</span><span class="p">))(</span><span class="n">out</span><span class="p">)</span>
<span class="n">result</span> <span class="o">+=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">((</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">dx</span><span class="p">,</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">dy</span><span class="p">,</span> <span class="mi">0</span><span class="p">))(</span><span class="n">out</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result</span></div>
@@ -187,29 +187,28 @@
<span class="n">w</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
<span class="n">h</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1.5</span><span class="p">,</span>
<span class="n">fillet</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<span class="n">dim</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">59</span><span class="p">,</span>
<span class="n">segments</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">36</span><span class="p">,</span>
<span class="p">):</span>
<span class="n">g</span> <span class="o">=</span> <span class="n">grid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">fillet</span><span class="p">,</span> <span class="n">dim</span><span class="p">,</span> <span class="n">segments</span><span class="p">)</span>
<span class="k">return</span> <span class="n">scad</span><span class="o">.</span><span class="n">cube</span><span class="p">([</span><span class="n">x</span> <span class="o">*</span> <span class="n">dim</span><span class="p">,</span> <span class="n">y</span> <span class="o">*</span> <span class="n">dim</span><span class="p">,</span> <span class="n">h</span><span class="p">])</span> <span class="o">-</span> <span class="n">g</span></div>
<span class="n">g</span> <span class="o">=</span> <span class="n">grid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">fillet</span><span class="p">,</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">,</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">segments</span><span class="p">)</span>
<span class="k">return</span> <span class="n">scad</span><span class="o">.</span><span class="n">cube</span><span class="p">([</span><span class="n">x</span> <span class="o">*</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">,</span> <span class="n">y</span> <span class="o">*</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">,</span> <span class="n">h</span><span class="p">])</span> <span class="o">-</span> <span class="n">g</span></div>
<div class="viewcode-block" id="bin"><a class="viewcode-back" href="../../solidLib.html#solidLib.assortment.bin">[docs]</a><span class="k">def</span> <span class="nf">bin</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">h</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">67</span><span class="p">,</span> <span class="n">segments</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">36</span><span class="p">,</span> <span class="n">dim</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">59</span><span class="p">):</span>
<div class="viewcode-block" id="bin"><a class="viewcode-back" href="../../solidLib.html#solidLib.assortment.bin">[docs]</a><span class="k">def</span> <span class="nf">bin</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">h</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">67</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> standardized container</span>
<span class="sd"> .. image:: img/bin.png</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">class</span> <span class="nc">dims</span><span class="p">:</span>
<span class="n">wall</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">r_in</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">r_out</span> <span class="o">=</span> <span class="n">r_in</span> <span class="o">+</span> <span class="n">wall</span>
<span class="n">bulk</span> <span class="o">=</span> <span class="n">slp</span><span class="o">.</span><span class="n">round_flat_box</span><span class="p">(</span><span class="n">dim</span> <span class="o">*</span> <span class="n">x</span><span class="p">,</span> <span class="n">dim</span> <span class="o">*</span> <span class="n">y</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">dims</span><span class="o">.</span><span class="n">r_out</span><span class="p">)</span>
<span class="n">hole</span> <span class="o">=</span> <span class="n">slp</span><span class="o">.</span><span class="n">round_box</span><span class="p">(</span><span class="n">dim</span> <span class="o">*</span> <span class="n">x</span> <span class="o">-</span> <span class="n">dims</span><span class="o">.</span><span class="n">wall</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> <span class="n">dim</span> <span class="o">*</span> <span class="n">y</span> <span class="o">-</span> <span class="n">dims</span><span class="o">.</span><span class="n">wall</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">dims</span><span class="o">.</span><span class="n">r_in</span><span class="p">)</span>
<span class="n">bulk</span> <span class="o">=</span> <span class="n">slp</span><span class="o">.</span><span class="n">rfcube</span><span class="p">([</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">x</span><span class="p">,</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">y</span><span class="p">,</span> <span class="n">h</span><span class="p">],</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="o">.</span><span class="n">r_out</span><span class="p">)</span>
<span class="n">hole</span> <span class="o">=</span> <span class="n">slp</span><span class="o">.</span><span class="n">rcube</span><span class="p">([</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">x</span> <span class="o">-</span> <span class="n">dims</span><span class="o">.</span><span class="n">wall</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">y</span> <span class="o">-</span> <span class="n">dims</span><span class="o">.</span><span class="n">wall</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> <span class="n">h</span><span class="p">],</span> <span class="n">dims</span><span class="o">.</span><span class="n">r_in</span><span class="p">)</span>
<span class="n">hole</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="n">dims</span><span class="o">.</span><span class="n">wall</span><span class="p">,</span> <span class="n">dims</span><span class="o">.</span><span class="n">wall</span><span class="p">,</span> <span class="n">dims</span><span class="o">.</span><span class="n">wall</span><span class="p">])(</span><span class="n">hole</span><span class="p">)</span>
<span class="n">wall_o</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">cylinder</span><span class="p">(</span><span class="n">r</span><span class="o">=</span><span class="n">dims</span><span class="o">.</span><span class="n">r_out</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">dims</span><span class="o">.</span><span class="n">r_out</span><span class="p">,</span> <span class="n">segments</span><span class="o">=</span><span class="n">segments</span><span class="p">)</span>
<span class="n">wall_o</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">cylinder</span><span class="p">(</span><span class="n">r</span><span class="o">=</span><span class="n">dims</span><span class="o">.</span><span class="n">r_out</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">dims</span><span class="o">.</span><span class="n">r_out</span><span class="p">,</span> <span class="n">segments</span><span class="o">=</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">segments</span><span class="p">)</span>
<span class="n">g</span> <span class="o">=</span> <span class="n">grid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
@@ -226,8 +225,6 @@
<span class="n">r_tool</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">7</span><span class="p">,</span>
<span class="n">inset</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span>
<span class="n">maxh</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">67</span><span class="p">,</span>
<span class="n">dim</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">59</span><span class="p">,</span>
<span class="n">segments</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">36</span>
<span class="p">):</span>
<span class="sd">&quot;&quot;&quot;toolinlay1</span>
@@ -244,19 +241,19 @@
<span class="n">r_in</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">tool_ins</span> <span class="o">=</span> <span class="mi">3</span>
<span class="n">base</span> <span class="o">=</span> <span class="n">slp</span><span class="o">.</span><span class="n">round_flat_box</span><span class="p">(</span><span class="n">x</span> <span class="o">*</span> <span class="n">dim</span><span class="p">,</span> <span class="n">y</span> <span class="o">*</span> <span class="n">dim</span><span class="p">,</span> <span class="n">height</span> <span class="o">+</span> <span class="n">inset</span><span class="p">,</span> <span class="n">r_in</span> <span class="o">+</span> <span class="n">wall</span><span class="p">)</span>
<span class="n">base</span> <span class="o">=</span> <span class="n">slp</span><span class="o">.</span><span class="n">rfcube</span><span class="p">([</span><span class="n">x</span> <span class="o">*</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">,</span> <span class="n">y</span> <span class="o">*</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">,</span> <span class="n">height</span> <span class="o">+</span> <span class="n">inset</span><span class="p">],</span> <span class="n">r_in</span> <span class="o">+</span> <span class="n">wall</span><span class="p">)</span>
<span class="n">toolindent</span> <span class="o">=</span> <span class="mf">0.1</span>
<span class="n">toolindent_w</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">toolbase_l</span> <span class="o">=</span> <span class="n">dim</span> <span class="o">*</span> <span class="n">x</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">r_tool</span>
<span class="n">toolbase_l</span> <span class="o">=</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">x</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">r_tool</span>
<span class="n">toolbase_t</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">cube</span><span class="p">([</span><span class="n">toolbase_l</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">toolindent</span><span class="p">),</span> <span class="mf">0.001</span><span class="p">,</span> <span class="n">tool_ins</span><span class="p">])</span>
<span class="n">toolbase_b</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="n">toolbase_l</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">toolindent</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">])(</span>
<span class="n">scad</span><span class="o">.</span><span class="n">cube</span><span class="p">([</span><span class="n">toolbase_l</span> <span class="o">*</span> <span class="n">toolindent</span> <span class="o">-</span> <span class="n">toolindent_w</span><span class="p">,</span> <span class="mf">0.001</span><span class="p">,</span> <span class="n">tool_ins</span><span class="p">])</span>
<span class="p">)</span>
<span class="n">toolcutout</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">minkowski</span><span class="p">()(</span>
<span class="n">toolbase_t</span><span class="p">,</span> <span class="n">scad</span><span class="o">.</span><span class="n">sphere</span><span class="p">(</span><span class="n">r</span><span class="o">=</span><span class="n">r_tool</span><span class="p">,</span> <span class="n">segments</span><span class="o">=</span><span class="n">segments</span><span class="p">)</span>
<span class="n">toolbase_t</span><span class="p">,</span> <span class="n">scad</span><span class="o">.</span><span class="n">sphere</span><span class="p">(</span><span class="n">r</span><span class="o">=</span><span class="n">r_tool</span><span class="p">,</span> <span class="n">segments</span><span class="o">=</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">segments</span><span class="p">)</span>
<span class="p">)</span> <span class="o">+</span> <span class="n">scad</span><span class="o">.</span><span class="n">minkowski</span><span class="p">()(</span>
<span class="n">toolbase_b</span><span class="p">,</span> <span class="n">scad</span><span class="o">.</span><span class="n">sphere</span><span class="p">(</span><span class="n">r</span><span class="o">=</span><span class="n">r_tool</span> <span class="o">+</span> <span class="n">toolindent_w</span><span class="p">,</span> <span class="n">segments</span><span class="o">=</span><span class="n">segments</span><span class="p">)</span>
<span class="n">toolbase_b</span><span class="p">,</span> <span class="n">scad</span><span class="o">.</span><span class="n">sphere</span><span class="p">(</span><span class="n">r</span><span class="o">=</span><span class="n">r_tool</span> <span class="o">+</span> <span class="n">toolindent_w</span><span class="p">,</span> <span class="n">segments</span><span class="o">=</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">segments</span><span class="p">)</span>
<span class="p">)</span>
<span class="n">toolcutout</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span>
@@ -264,14 +261,14 @@
<span class="p">)(</span><span class="n">toolcutout</span><span class="p">)</span>
<span class="n">toolcutouts</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">((</span><span class="n">dim</span> <span class="o">*</span> <span class="n">y</span> <span class="o">-</span> <span class="mi">3</span> <span class="o">*</span> <span class="n">wall</span><span class="p">)</span> <span class="o">//</span> <span class="p">(</span><span class="n">r_tool</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">toolindent_w</span><span class="p">)):</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">((</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">y</span> <span class="o">-</span> <span class="mi">3</span> <span class="o">*</span> <span class="n">wall</span><span class="p">)</span> <span class="o">//</span> <span class="p">(</span><span class="n">r_tool</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">toolindent_w</span><span class="p">)):</span>
<span class="n">toolcutouts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="n">i</span> <span class="o">*</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">r_tool</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">toolindent_w</span> <span class="o">+</span> <span class="mf">1.4</span><span class="p">),</span> <span class="mi">0</span><span class="p">])(</span>
<span class="n">scad</span><span class="o">.</span><span class="n">color</span><span class="p">(</span><span class="s2">&quot;yellow&quot;</span><span class="p">)(</span><span class="n">toolcutout</span><span class="p">)</span>
<span class="p">)</span>
<span class="p">)</span>
<span class="n">lower</span> <span class="o">=</span> <span class="nb">bin</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">maxh</span> <span class="o">-</span> <span class="n">height</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="n">dim</span><span class="p">)</span>
<span class="n">lower</span> <span class="o">=</span> <span class="nb">bin</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">maxh</span> <span class="o">-</span> <span class="n">height</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">)</span>
<span class="n">lower</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">color</span><span class="p">(</span><span class="s2">&quot;red&quot;</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">)(</span><span class="n">lower</span><span class="p">)</span>
<span class="n">base</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">maxh</span> <span class="o">-</span> <span class="n">height</span> <span class="o">-</span> <span class="n">inset</span><span class="p">])(</span><span class="n">base</span><span class="p">)</span>
@@ -284,9 +281,7 @@
<span class="n">inset</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span>
<span class="n">inset_tool</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
<span class="n">maxh</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">67</span><span class="p">,</span>
<span class="n">dim</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">59</span><span class="p">,</span>
<span class="n">wall</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
<span class="n">segments</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">36</span><span class="p">,</span>
<span class="p">):</span>
<span class="sd">&quot;&quot;&quot;toolinlay2</span>
@@ -299,14 +294,11 @@
<span class="sd"> :param inset: depth of toolinlay inset</span>
<span class="sd"> :param inset_tool: depth of additional toolspace inset</span>
<span class="sd"> :param maxh: system height restriction</span>
<span class="sd"> :param dim: system raster dimension</span>
<span class="sd"> :param segments: circular object segments</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">x_dim</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">y_dim</span> <span class="o">=</span> <span class="mi">3</span>
<span class="n">x_dim</span> <span class="o">=</span> <span class="mi">3</span>
<span class="n">r_in</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">base</span> <span class="o">=</span> <span class="n">slp</span><span class="o">.</span><span class="n">round_flat_box</span><span class="p">(</span><span class="n">x_dim</span> <span class="o">*</span> <span class="n">dim</span><span class="p">,</span> <span class="n">y_dim</span> <span class="o">*</span> <span class="n">dim</span><span class="p">,</span> <span class="n">height</span> <span class="o">+</span> <span class="n">inset</span><span class="p">,</span> <span class="n">r_in</span> <span class="o">+</span> <span class="n">wall</span><span class="p">)</span>
<span class="n">base</span> <span class="o">=</span> <span class="n">slp</span><span class="o">.</span><span class="n">rfcube</span><span class="p">([</span><span class="n">x_dim</span> <span class="o">*</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">,</span> <span class="n">y_dim</span> <span class="o">*</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">,</span> <span class="n">height</span> <span class="o">+</span> <span class="n">inset</span><span class="p">],</span> <span class="n">r_in</span> <span class="o">+</span> <span class="n">wall</span><span class="p">)</span>
<span class="n">toolindent</span> <span class="o">=</span> <span class="mf">0.1</span>
<span class="n">toolindent_w</span> <span class="o">=</span> <span class="mi">2</span>
@@ -315,16 +307,16 @@
<span class="n">tool_rs</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">r_tool</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
<span class="n">tool_rs</span> <span class="o">=</span> <span class="p">[</span><span class="n">r_tool</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span>
<span class="p">(</span><span class="n">dim</span> <span class="o">*</span> <span class="n">x_dim</span> <span class="o">-</span> <span class="mi">3</span> <span class="o">*</span> <span class="n">wall</span><span class="p">)</span> <span class="o">//</span> <span class="p">(</span><span class="n">r_tool</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">toolindent_w</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
<span class="p">(</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">x_dim</span> <span class="o">-</span> <span class="mi">3</span> <span class="o">*</span> <span class="n">wall</span><span class="p">)</span> <span class="o">//</span> <span class="p">(</span><span class="n">r_tool</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">toolindent_w</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">tool_rs</span> <span class="o">=</span> <span class="n">r_tool</span>
<span class="n">toolbase_l</span> <span class="o">=</span> <span class="n">dim</span> <span class="o">*</span> <span class="n">y_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">tool_rs</span><span class="p">)</span>
<span class="n">toolbase_l</span> <span class="o">=</span> <span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">y_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">tool_rs</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">tool_rs</span><span class="p">):</span>
<span class="n">toolbase_t</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">cube</span><span class="p">([</span><span class="mf">0.001</span><span class="p">,</span> <span class="n">toolbase_l</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">toolindent</span><span class="p">),</span> <span class="n">inset_tool</span><span class="p">])</span>
<span class="c1"># toolbase_b = scad.translate([0, toolbase_l * (1 - toolindent), 0])(</span>
<span class="c1"># scad.cube([0.001, toolbase_l * toolindent - toolindent_w, tool_ins])</span>
<span class="c1"># scad.cube([0.001, toolbase_l * toolindent - toolindent_w, tool_ins])</span>
<span class="c1"># )</span>
<span class="n">toolcutout</span> <span class="o">=</span> <span class="n">slp</span><span class="o">.</span><span class="n">pill</span><span class="p">(</span>
<span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">toolbase_l</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">toolbase_l</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">]])</span>
@@ -348,12 +340,12 @@
<span class="p">[</span>
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">toolindent</span> <span class="o">*</span> <span class="n">toolbase_l</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
<span class="p">[</span><span class="n">dim</span> <span class="o">*</span> <span class="n">x_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
<span class="p">[</span><span class="n">dim</span> <span class="o">*</span> <span class="n">x_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span><span class="p">,</span> <span class="n">toolindent</span> <span class="o">*</span> <span class="n">toolbase_l</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
<span class="p">[</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">x_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
<span class="p">[</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">x_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span><span class="p">,</span> <span class="n">toolindent</span> <span class="o">*</span> <span class="n">toolbase_l</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="n">toolindent</span> <span class="o">*</span> <span class="n">toolbase_l</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
<span class="p">[</span><span class="n">dim</span> <span class="o">*</span> <span class="n">x_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
<span class="p">[</span><span class="n">dim</span> <span class="o">*</span> <span class="n">x_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span><span class="p">,</span> <span class="n">toolindent</span> <span class="o">*</span> <span class="n">toolbase_l</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
<span class="p">[</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">x_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
<span class="p">[</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span> <span class="o">*</span> <span class="n">x_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">wall</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span><span class="p">,</span> <span class="n">toolindent</span> <span class="o">*</span> <span class="n">toolbase_l</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
<span class="p">]</span>
<span class="p">)</span>
<span class="o">+</span> <span class="p">[</span><span class="mi">9</span> <span class="o">+</span> <span class="n">wall</span><span class="p">,</span> <span class="mi">9</span> <span class="o">+</span> <span class="n">wall</span><span class="p">,</span> <span class="n">maxh</span> <span class="o">-</span> <span class="n">inset_tool</span><span class="p">],</span>
@@ -361,14 +353,19 @@
<span class="p">)</span>
<span class="p">)</span>
<span class="n">toolcutouts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">((</span><span class="n">wall</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span><span class="n">wall</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">))(</span>
<span class="n">slp</span><span class="o">.</span><span class="n">round_flat_box</span><span class="p">(</span>
<span class="n">toolindent</span> <span class="o">*</span> <span class="n">toolbase_l</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span><span class="p">,</span> <span class="n">toolindent</span> <span class="o">*</span> <span class="n">toolbase_l</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span> <span class="o">-</span> <span class="n">wall</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">9</span><span class="o">-</span><span class="n">wall</span><span class="p">,</span> <span class="n">segments</span><span class="o">=</span><span class="n">segments</span>
<span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">((</span><span class="n">wall</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> <span class="n">wall</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">))(</span>
<span class="n">slp</span><span class="o">.</span><span class="n">rfcube</span><span class="p">(</span>
<span class="p">[</span>
<span class="n">toolindent</span> <span class="o">*</span> <span class="n">toolbase_l</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span><span class="p">,</span>
<span class="n">toolindent</span> <span class="o">*</span> <span class="n">toolbase_l</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">9</span> <span class="o">-</span> <span class="n">wall</span><span class="p">,</span>
<span class="mi">100</span><span class="p">,</span>
<span class="p">],</span>
<span class="mi">9</span> <span class="o">-</span> <span class="n">wall</span><span class="p">,</span>
<span class="p">)</span>
<span class="p">)</span>
<span class="p">)</span>
<span class="n">lower</span> <span class="o">=</span> <span class="nb">bin</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">maxh</span> <span class="o">-</span> <span class="n">height</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="n">dim</span><span class="p">)</span>
<span class="n">lower</span> <span class="o">=</span> <span class="nb">bin</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">maxh</span> <span class="o">-</span> <span class="n">height</span><span class="p">,</span> <span class="n">dim</span><span class="o">=</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">raster</span><span class="p">)</span>
<span class="n">lower</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">color</span><span class="p">(</span><span class="s2">&quot;red&quot;</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">)(</span><span class="n">lower</span><span class="p">)</span>
<span class="n">base</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">maxh</span> <span class="o">-</span> <span class="n">height</span> <span class="o">-</span> <span class="n">inset</span><span class="p">])(</span><span class="n">base</span><span class="p">)</span>
+16 -33
View File
@@ -123,35 +123,19 @@
<span class="kn">import</span> <span class="nn">solid</span> <span class="k">as</span> <span class="nn">scad</span>
<span class="kn">import</span> <span class="nn">solidLib</span> <span class="k">as</span> <span class="nn">sl</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">logging</span> <span class="k">as</span> <span class="nn">log</span>
<span class="n">log</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">log</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span>
<div class="viewcode-block" id="round_box"><a class="viewcode-back" href="../../solidLib.html#solidLib.primitives.round_box">[docs]</a><span class="k">def</span> <span class="nf">round_box</span><span class="p">(</span><span class="n">x_dim</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">y_dim</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">z_dim</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">radius</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">segments</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">32</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> creates a round box with radius r</span>
<span class="sd"> Args:</span>
<span class="sd"> x_dim (float): .</span>
<span class="sd"> Important:</span>
<span class="sd"> deprecated</span>
<span class="sd"> .. image:: img/round_box.png</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">box</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">cube</span><span class="p">([</span><span class="n">x_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">radius</span><span class="p">,</span> <span class="n">y_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">radius</span><span class="p">,</span> <span class="n">z_dim</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">radius</span><span class="p">])</span>
<span class="n">wall</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">sphere</span><span class="p">(</span><span class="n">r</span><span class="o">=</span><span class="n">radius</span><span class="p">,</span> <span class="n">segments</span><span class="o">=</span><span class="n">segments</span><span class="p">)</span>
<span class="k">return</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="n">radius</span><span class="p">,</span> <span class="n">radius</span><span class="p">,</span> <span class="n">radius</span><span class="p">])(</span>
<span class="n">scad</span><span class="o">.</span><span class="n">minkowski</span><span class="p">()(</span><span class="n">box</span><span class="p">,</span> <span class="n">wall</span><span class="p">)</span>
<span class="p">)</span></div>
<div class="viewcode-block" id="rcube"><a class="viewcode-back" href="../../solidLib.html#solidLib.primitives.rcube">[docs]</a><span class="k">def</span> <span class="nf">rcube</span><span class="p">(</span><span class="n">dim</span><span class="p">:</span> <span class="n">Iterable</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="n">radius</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">segments</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">32</span><span class="p">):</span>
<div class="viewcode-block" id="rcube"><a class="viewcode-back" href="../../solidLib.html#solidLib.primitives.rcube">[docs]</a><span class="k">def</span> <span class="nf">rcube</span><span class="p">(</span><span class="n">dim</span><span class="p">:</span> <span class="n">Iterable</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="n">radius</span><span class="p">:</span> <span class="nb">float</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> creates a cube with rounded corners</span>
<span class="sd"> .. image:: img/round_box.png</span>
<span class="sd"> .. image:: img/rcube.png</span>
<span class="sd"> Args:</span>
<span class="sd"> dim: cube dimensions to base box on.</span>
@@ -164,29 +148,30 @@
<span class="k">for</span> <span class="n">dy</span> <span class="ow">in</span> <span class="p">[</span><span class="n">radius</span><span class="p">,</span> <span class="n">dim</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">radius</span><span class="p">]:</span>
<span class="k">for</span> <span class="n">dz</span> <span class="ow">in</span> <span class="p">[</span><span class="n">radius</span><span class="p">,</span> <span class="n">dim</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">-</span> <span class="n">radius</span><span class="p">]:</span>
<span class="n">corners</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">,</span> <span class="n">dz</span><span class="p">])((</span>
<span class="n">scad</span><span class="o">.</span><span class="n">sphere</span><span class="p">(</span><span class="n">r</span><span class="o">=</span><span class="n">radius</span><span class="p">)</span>
<span class="p">))</span>
<span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">,</span> <span class="n">dz</span><span class="p">])(</span>
<span class="p">(</span><span class="n">scad</span><span class="o">.</span><span class="n">sphere</span><span class="p">(</span><span class="n">r</span><span class="o">=</span><span class="n">radius</span><span class="p">,</span> <span class="n">segments</span><span class="o">=</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">segments</span><span class="p">))</span>
<span class="p">)</span>
<span class="p">)</span>
<span class="k">return</span> <span class="n">scad</span><span class="o">.</span><span class="n">hull</span><span class="p">()(</span><span class="o">*</span><span class="n">corners</span><span class="p">)</span></div>
<div class="viewcode-block" id="round_flat_box"><a class="viewcode-back" href="../../solidLib.html#solidLib.primitives.round_flat_box">[docs]</a><span class="k">def</span> <span class="nf">round_flat_box</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">z</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">r</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="n">segments</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">32</span><span class="p">):</span>
<div class="viewcode-block" id="rfcube"><a class="viewcode-back" href="../../solidLib.html#solidLib.primitives.rfcube">[docs]</a><span class="k">def</span> <span class="nf">rfcube</span><span class="p">(</span><span class="n">dim</span><span class="p">:</span> <span class="n">Iterable</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span> <span class="n">r</span><span class="p">:</span> <span class="nb">float</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;creates a round box with radius r and flat top/bottom</span>
<span class="sd"> .. image:: img/round_flat_box.png</span>
<span class="sd"> .. image:: img/round_flat_box.png</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">box</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">cube</span><span class="p">([</span><span class="n">x</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">r</span><span class="p">,</span> <span class="n">y</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">r</span><span class="p">,</span> <span class="n">z</span><span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">r</span><span class="p">])</span>
<span class="n">wall</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">cylinder</span><span class="p">(</span><span class="n">r</span><span class="o">=</span><span class="n">r</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="mi">2</span><span class="o">*</span><span class="n">r</span><span class="p">,</span> <span class="n">segments</span><span class="o">=</span><span class="n">SEGMENTS</span><span class="p">)</span>
<span class="n">box</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">cube</span><span class="p">([</span><span class="n">dim</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">r</span><span class="p">,</span> <span class="n">dim</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">r</span><span class="p">,</span> <span class="n">dim</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="n">r</span><span class="p">])</span>
<span class="n">wall</span> <span class="o">=</span> <span class="n">scad</span><span class="o">.</span><span class="n">cylinder</span><span class="p">(</span><span class="n">r</span><span class="o">=</span><span class="n">r</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="mi">2</span> <span class="o">*</span> <span class="n">r</span><span class="p">,</span> <span class="n">segments</span><span class="o">=</span><span class="n">sl</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">segments</span><span class="p">)</span>
<span class="k">return</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="n">r</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="mi">0</span><span class="p">])(</span>
<span class="n">scad</span><span class="o">.</span><span class="n">minkowski</span><span class="p">()(</span><span class="n">box</span><span class="p">,</span> <span class="n">wall</span><span class="p">)</span>
<span class="p">)</span></div>
<span class="k">return</span> <span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">([</span><span class="n">r</span><span class="p">,</span> <span class="n">r</span><span class="p">,</span> <span class="mi">0</span><span class="p">])(</span><span class="n">scad</span><span class="o">.</span><span class="n">minkowski</span><span class="p">()(</span><span class="n">box</span><span class="p">,</span> <span class="n">wall</span><span class="p">))</span></div>
<div class="viewcode-block" id="pill"><a class="viewcode-back" href="../../solidLib.html#solidLib.primitives.pill">[docs]</a><span class="k">def</span> <span class="nf">pill</span><span class="p">(</span><span class="n">ps</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">float</span><span class="p">]],</span> <span class="n">r</span><span class="p">,</span> <span class="n">segments</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">36</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> create a pill around given points</span>
<span class="sd"> .. image:: img/pill.png</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ps</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;requires 2 or more points&quot;</span><span class="p">)</span>
@@ -195,9 +180,7 @@
<span class="n">spheres</span> <span class="o">=</span> <span class="p">[]</span>
<span class="c1"># log.info(ps)</span>
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">ps</span><span class="p">:</span>
<span class="n">spheres</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="n">p</span><span class="p">)(</span><span class="n">s</span><span class="p">)</span>
<span class="p">)</span>
<span class="n">spheres</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">scad</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="n">p</span><span class="p">)(</span><span class="n">s</span><span class="p">))</span>
<span class="k">return</span> <span class="n">scad</span><span class="o">.</span><span class="n">hull</span><span class="p">()(</span><span class="o">*</span><span class="n">spheres</span><span class="p">)</span></div>
</pre></div>