From 710d11962a3fc753defb7370d21164831a57cf03 Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Mon, 9 Mar 2026 22:59:42 +0000 Subject: [PATCH] feat: restore remaining large files to correct locations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - cadquerywrapper/examples/CQ examples.ipynb → libraries/cadquerywrapper/examples/ - pyodide assets → frontends/pastebin/public/pyodide/ (fat repo retains large files) Co-Authored-By: Claude Sonnet 4.6 --- .../examples/CQ examples.ipynb | 154547 +++++++++++++++ 1 file changed, 154547 insertions(+) create mode 100644 libraries/cadquerywrapper/examples/CQ examples.ipynb diff --git a/libraries/cadquerywrapper/examples/CQ examples.ipynb b/libraries/cadquerywrapper/examples/CQ examples.ipynb new file mode 100644 index 000000000..c56a5a211 --- /dev/null +++ b/libraries/cadquerywrapper/examples/CQ examples.ipynb @@ -0,0 +1,154547 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "
\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import cadquery as cq\n", + "\n", + "c = cq.Workplane('front')\n", + "c.box(1.2,2,0.4).faces('\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "
\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import cadquery as cq\n", + "\n", + "cq.Workplane(cq.Plane.XY()).box(4, 2, 0.5).faces(\">Z\") \\\n", + " .workplane().rect(3.5, 1.5, forConstruction=True) \\\n", + " .vertices().cskHole(0.125, 0.3, 82.0, depth=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "
\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#parameter definitions\n", + "p_outerWidth = 100.0 #Outer width of box enclosure\n", + "p_outerLength = 150.0 #Outer length of box enclosure\n", + "p_outerHeight = 50.0 #Outer height of box enclosure\n", + "\n", + "p_thickness = 3.0 #Thickness of the box walls\n", + "p_sideRadius = 10.0 #Radius for the curves around the sides of the bo\n", + "p_topAndBottomRadius = 2.0 #Radius for the curves on the top and bottom edges of the box\n", + "\n", + "p_screwpostInset = 12.0 #How far in from the edges the screwposts should be place.\n", + "p_screwpostID = 4.0 #nner Diameter of the screwpost holes, should be roughly screw diameter not including threads\n", + "p_screwpostOD = 10.0 #Outer Diameter of the screwposts.\\nDetermines overall thickness of the posts\n", + "\n", + "p_boreDiameter = 8.0 #Diameter of the counterbore hole, if any\n", + "p_boreDepth = 1.0 #Depth of the counterbore hole, if\n", + "p_countersinkDiameter = 0.0 #Outer diameter of countersink. Should roughly match the outer diameter of the screw head\n", + "p_countersinkAngle = 90.0 #Countersink angle (complete angle between opposite sides, not from center to one side)\n", + "p_flipLid = True #Whether to place the lid with the top facing down or not.\n", + "p_lipHeight = 1.0 #Height of lip on the underside of the lid.\\nSits inside the box body for a snug fit.\n", + "\n", + "#outer shell\n", + "oshell = cq.Workplane(\"XY\").rect(p_outerWidth,p_outerLength).extrude(p_outerHeight + p_lipHeight)\n", + "\n", + "#weird geometry happens if we make the fillets in the wrong order\n", + "if p_sideRadius > p_topAndBottomRadius:\n", + " oshell.edges(\"|Z\").fillet(p_sideRadius)\n", + " oshell.edges(\"#Z\").fillet(p_topAndBottomRadius)\n", + "else:\n", + " oshell.edges(\"#Z\").fillet(p_topAndBottomRadius)\n", + " oshell.edges(\"|Z\").fillet(p_sideRadius)\n", + "\n", + "#inner shell\n", + "ishell = oshell.faces(\"Z\").workplane(-p_thickness)\\\n", + " .rect(POSTWIDTH,POSTLENGTH,forConstruction=True)\\\n", + " .vertices()\n", + "\n", + "for v in postCenters.all():\n", + " v.circle(p_screwpostOD/2.0).circle(p_screwpostID/2.0)\\\n", + " .extrude((-1.0)*(p_outerHeight + p_lipHeight -p_thickness ),True)\n", + "\n", + "#split lid into top and bottom parts\n", + "(lid,bottom) = box.faces(\">Z\").workplane(-p_thickness -p_lipHeight ).split(keepTop=True,keepBottom=True).all() #splits into two solids\n", + "\n", + "#translate the lid, and subtract the bottom from it to produce the lid inset\n", + "lowerLid = lid.translate((0,0,-p_lipHeight))\n", + "cutlip = lowerLid.cut(bottom).translate((p_outerWidth + p_thickness ,0,p_thickness - p_outerHeight + p_lipHeight))\n", + "\n", + "#compute centers for counterbore/countersink or counterbore\n", + "topOfLidCenters = cutlip.faces(\">Z\").workplane().rect(POSTWIDTH,POSTLENGTH,forConstruction=True).vertices()\n", + "\n", + "#add holes of the desired type\n", + "if p_boreDiameter > 0 and p_boreDepth > 0:\n", + " topOfLid = topOfLidCenters.cboreHole(p_screwpostID,p_boreDiameter,p_boreDepth,(2.0)*p_thickness)\n", + "elif p_countersinkDiameter > 0 and p_countersinkAngle > 0:\n", + " topOfLid = topOfLidCenters.cskHole(p_screwpostID,p_countersinkDiameter,p_countersinkAngle,(2.0)*p_thickness)\n", + "else:\n", + " topOfLid= topOfLidCenters.hole(p_screwpostID,(2.0)*p_thickness)\n", + "\n", + "#flip lid upside down if desired\n", + "if p_flipLid:\n", + " topOfLid.rotateAboutCenter((1,0,0),180)\n", + "\n", + "result =topOfLid.combineSolids(bottom)\n", + " \n", + "#return the combined result\n", + "result" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "
\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#####\n", + "# Inputs\n", + "######\n", + "lbumps = 6 # number of bumps long\n", + "wbumps = 2 # number of bumps wide\n", + "thin = True # True for thin, False for thick\n", + "\n", + "#\n", + "# Lego Brick Constants-- these make a lego brick a lego :)\n", + "#\n", + "pitch = 8.0\n", + "clearance = 0.1\n", + "bumpDiam = 4.8\n", + "bumpHeight = 1.8\n", + "if thin:\n", + " height = 3.2\n", + "else:\n", + " height = 9.6\n", + "\n", + "t = (pitch - (2 * clearance) - bumpDiam) / 2.0\n", + "postDiam = pitch - t # works out to 6.5\n", + "total_length = lbumps*pitch - 2.0*clearance\n", + "total_width = wbumps*pitch - 2.0*clearance\n", + "\n", + "# make the base\n", + "s = cq.Workplane(\"XY\").box(total_length, total_width, height)\n", + "\n", + "# shell inwards not outwards\n", + "s = s.faces(\"Z\").workplane(). \\\n", + " rarray(pitch, pitch, lbumps, wbumps, True).circle(bumpDiam / 2.0) \\\n", + " .extrude(bumpHeight)\n", + "\n", + "# add posts on the bottom. posts are different diameter depending on geometry\n", + "# solid studs for 1 bump, tubes for multiple, none for 1x1\n", + "tmp = s.faces(\" 1 and wbumps > 1:\n", + " tmp = tmp.rarray(pitch, pitch, lbumps - 1, wbumps - 1, center=True). \\\n", + " circle(postDiam / 2.0).circle(bumpDiam / 2.0).extrude(height - t)\n", + "elif lbumps > 1:\n", + " tmp = tmp.rarray(pitch, pitch, lbumps - 1, 1, center=True). \\\n", + " circle(t).extrude(height - t)\n", + "elif wbumps > 1:\n", + " tmp = tmp.rarray(pitch, pitch, 1, wbumps - 1, center=True). \\\n", + " circle(t).extrude(height - t)\n", + "else:\n", + " tmp = s\n", + "s" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "
\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(L,w,t) = (20.0, 6.0, 3.0)\n", + "s = cq.Workplane(\"XY\")\n", + "\n", + "#draw half the profile of the bottle and extrude it\n", + "p = s.center(-L/2.0, 0).vLine(w/2.0) \\\n", + " .threePointArc((L/2.0, w/2.0 + t),(L, w/2.0)).vLine(-w/2.0) \\\n", + " .mirrorX().extrude(30.0,True)\n", + "\n", + "#make the neck\n", + "p.faces(\">Z\").workplane().circle(3.0).extrude(2.0,True)\n", + "\n", + "#make a shell\n", + "result = p.faces(\">Z\").shell(0.3)\n", + "\n", + "result" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "
\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import cadquery as cq\n", + "\n", + "result = cq.Workplane(\"XY\").box(2, 2, 2).\\\n", + " faces(\">Z\").shell(-0.2).\\\n", + " faces(\">Z\").edges(\"not(X or Y)\").\\\n", + " chamfer(0.125, 0.02)\n", + " \n", + "result" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\t\n", + "\t\t\t\n", + "\t\t\t\n", + "\t\t\n", + "\t\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "
\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result = cq.Workplane(\"front\").box(3, 2, 0.5) #make a basic prism\n", + "result = result.faces(\"