<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Jupyter Blog - Arjun Verma</title><link href="https://jasongrout.github.io/medium-archive/pelican/" rel="alternate"/><link href="https://jasongrout.github.io/medium-archive/pelican/feeds/author-arjun-verma.atom.xml" rel="self"/><id>https://jasongrout.github.io/medium-archive/pelican/</id><updated>2025-02-17T09:38:00+00:00</updated><subtitle>The Project Jupyter blog: news, releases, and community stories, archived from blog.jupyter.org.</subtitle><entry><title>Announcing JupyterCAD 3.0</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2025/announcing-jupytercad-3-0/" rel="alternate"/><published>2025-02-17T09:38:00+00:00</published><updated>2025-02-17T09:38:00+00:00</updated><author><name>Arjun Verma</name></author><id>tag:jasongrout.github.io,2025-02-17:/medium-archive/pelican/posts/2025/announcing-jupytercad-3-0/</id><summary type="html">&lt;p&gt;The latest iteration of the web-based collaborative CAD editor&lt;/p&gt;
</summary><content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The latest iteration of the web-based collaborative CAD editor&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2025/announcing-jupytercad-3-0/images/001-1_m9xr-RYt-bA0tfE6YwjNMQ.webp" alt="Screenshot of JupyterCAD, showing a model of gear, with an anotation editor opened." loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;We are thrilled to introduce JupyterCAD 3.0, the newest version of the collaborative CAD modeler designed for JupyterLab.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/jupytercad/jupytercad"&gt;&lt;em&gt;JupyterCAD&lt;/em&gt;&lt;/a&gt; &lt;em&gt;is an unofficial JupyterLab extension for 3D geometry modeling with collaborative editing support. It is designed to allow multiple people to work on the same file at the same time, and to facilitate discussion and collaboration around the 3D shapes being created.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;JupyterCAD 3.0 represents a significant leap forward in usability and user experience compared to the previous release.&lt;/p&gt;
&lt;h2 id="whats-new-in-jupytercad-30"&gt;What’s new in JupyterCAD 3.0?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Color customization&lt;/strong&gt;&lt;/p&gt;
&lt;iframe src="https://www.youtube-nocookie.com/embed/kTePlIUbgik" title="JupyterCAD color customization" width="560" height="315" style="aspect-ratio: 560 / 315" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;JupyterCAD 3.0 allows you to customize object colors directly within the application, while we were limited to gray models in earlier versions. Adjust colors easily to suit your design needs or preferences.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Embedded Python console&lt;/strong&gt;&lt;/p&gt;
&lt;iframe src="https://www.youtube-nocookie.com/embed/eyZmY9jt6GY" title="JupyterCAD embedded console" width="560" height="315" style="aspect-ratio: 560 / 315" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;The new embedded Python console offers advanced users direct access to JupyterCAD’s Python API, enabling on-the-fly scripting and automation for power users.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UX improvements&lt;/strong&gt;&lt;/p&gt;
&lt;iframe src="https://www.youtube-nocookie.com/embed/j5ypepW8QxU" title="JupyterCAD Axes Helper" width="560" height="315" style="aspect-ratio: 560 / 315" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;The new &lt;strong&gt;AxesHelper&lt;/strong&gt; provides a clear visual reference for coordinate axes, making it easier to navigate and align models in 3D space.&lt;/p&gt;
&lt;iframe src="https://www.youtube-nocookie.com/embed/lxYKdLS62Zw" title="JupyterCAD copy-paste functionality" width="560" height="315" style="aspect-ratio: 560 / 315" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;We have also added &lt;strong&gt;copy-paste functionality&lt;/strong&gt; using &lt;strong&gt;Ctrl+C&lt;/strong&gt; and &lt;strong&gt;Ctrl+V&lt;/strong&gt; shortcuts, making it faster and easier to duplicate objects within your models.&lt;/p&gt;
&lt;iframe src="https://www.youtube-nocookie.com/embed/Dx13O7adpj8" title="JupyterCAD 3.0 improved toolbar" width="560" height="315" style="aspect-ratio: 560 / 315" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;An &lt;strong&gt;improved toolbar&lt;/strong&gt; now includes options to &lt;strong&gt;toggle wireframe&lt;/strong&gt;, &lt;strong&gt;toggle transform controls&lt;/strong&gt;, &lt;strong&gt;toggle clip plane&lt;/strong&gt; and a &lt;strong&gt;toggleable console&lt;/strong&gt;, giving users quick access to essential tools.&lt;/p&gt;
&lt;iframe src="https://www.youtube-nocookie.com/embed/790f6Wc4_Wk" title="JupyterCAD smooth camera tracking" width="560" height="315" style="aspect-ratio: 560 / 315" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;JupyterCAD 3.0 also introduces &lt;strong&gt;smooth camera tracking&lt;/strong&gt;, where selecting an object from the object tree triggers a smooth transition of the camera to focus on the selected object, enhancing navigation and model exploration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mouse-based 3D controls&lt;/strong&gt;&lt;/p&gt;
&lt;iframe src="https://www.youtube-nocookie.com/embed/xMCvxiIglZk" title="JupyterCAD Mouse-based 3D transform controls" width="560" height="315" style="aspect-ratio: 560 / 315" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;Move or rotate your 3D models effortlessly with &lt;strong&gt;mouse-based controls&lt;/strong&gt; that bring fluidity and precision to model editing and interaction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Suggestions support&lt;/strong&gt;&lt;/p&gt;
&lt;iframe src="https://www.youtube-nocookie.com/embed/Zu0AT6IRA98" title="JupyterCAD suggestions" width="560" height="315" style="aspect-ratio: 560 / 315" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;With JupyterCAD 3.0, collaboration becomes even more seamless with suggestions. Collaborators can propose changes to a model, which can be reviewed and applied collaboratively, fostering a dynamic and efficient workflow.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try it!&lt;/h2&gt;
&lt;figure&gt;
&lt;img alt="Screenshot of the JupyterCAD GitHub repository." src="https://jasongrout.github.io/medium-archive/pelican/posts/2025/announcing-jupytercad-3-0/images/002-1_DmBkGvfYG37OR0UueGpdag.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Screenshot of &lt;a href="https://github.com/jupytercad/JupyterCAD"&gt;JupyterCAD GitHub repository&lt;/a&gt;, with a link to try JupyterCAD (circled in red) with JupyterLite. This is simply deployed as a static website on “GitHub Pages”.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Explore JupyterCAD 3.0 in action with our &lt;strong&gt;JupyterLite deployment&lt;/strong&gt; — no installation required. Visit us at &lt;a href="https://jupytercad.github.io/JupyterCAD"&gt;jupytercad.github.io/JupyterCAD&lt;/a&gt; and start modeling directly in your browser.&lt;/p&gt;
&lt;h2 id="installing-jupytercad"&gt;Installing JupyterCAD&lt;/h2&gt;
&lt;p&gt;You can easily install JupyterCAD with pip or mamba:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;jupytercad&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;or:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;mamba&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="n"&gt;conda&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;forge&lt;/span&gt; &lt;span class="n"&gt;jupytercad&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Additionally, you can install FreeCAD along with the JupyterCAD-FreeCAD plugin to enable support for FCstd files:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;mamba&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="n"&gt;conda&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;forge&lt;/span&gt; &lt;span class="n"&gt;freecad&lt;/span&gt; &lt;span class="n"&gt;jupytercad&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;freecad&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="whats-next"&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;JupyterCAD is evolving rapidly, with some exciting updates just around the corner and others in active development:&lt;/p&gt;
&lt;p&gt;Upcoming Features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enhanced User Experience&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Smoother exploded view&lt;/li&gt;
&lt;li&gt;Support for renaming objects directly from object tree&lt;/li&gt;
&lt;li&gt;Incremental rotation controls for precise adjustments&lt;/li&gt;
&lt;li&gt;Enhanced 3D view settings for better customization.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nested &amp;amp; Refined Side Panel&lt;/strong&gt;: Navigate and organize objects more easily with a refined and nested side panel experience.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support for more File Formats&lt;/strong&gt;: Broaden compatibility with support for more file formats.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Features in Development:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New CAD Operations&lt;/strong&gt;: New tools for operations like &lt;strong&gt;linear&lt;/strong&gt; and &lt;strong&gt;radial patterns&lt;/strong&gt; to expand modeling capabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support for measuring distances&lt;/strong&gt;: Tools to measure distances and dimensions directly in the viewport.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improved 2D Sketcher&lt;/strong&gt;: Enhanced features to make 2D sketching more intuitive and robust.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="acknowledgements"&gt;Acknowledgements&lt;/h2&gt;
&lt;p&gt;The development of the JupyterCAD open-source project by &lt;a href="https://quantstack.net/"&gt;QuantStack&lt;/a&gt; was funded by a grant from &lt;a href="https://ecologie.gouv.fr/direction-generale-laviation-civile-dgac"&gt;DGAC&lt;/a&gt; in the framework of the French “Plan de Relance” (refinanced by &lt;a href="https://next-generation-eu.europa.eu/index_en"&gt;Next generation EU&lt;/a&gt;) as part of a collaboration between &lt;a href="https://www.safran-group.com/companies/safran-aircraft-engines"&gt;Safran Aircraft Engines&lt;/a&gt;, &lt;a href="https://www.inria.fr/en"&gt;INRIA&lt;/a&gt;, and &lt;a href="https://www.akkodis.com/"&gt;Akkodis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We also extend our gratitude to the &lt;a href="https://github.com/jupytercad/JupyterCAD/graphs/contributors"&gt;external contributors&lt;/a&gt; whose efforts and feedback have been instrumental in shaping this release. Your support and collaboration drive the ongoing success of JupyterCAD.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2025/announcing-jupytercad-3-0/images/003-1_4LK5G7er7fRNtT4gbUoWWw.webp" alt="Logo of Safran Aircraft Engines" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;This work was built upon the strong foundation laid by open-source software projects such as &lt;a href="https://threejs.org/"&gt;&lt;strong&gt;Three.js&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://dev.opencascade.org/"&gt;&lt;strong&gt;OpenCascade&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://ocjs.org/"&gt;&lt;strong&gt;OpenCascade.js&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://www.freecad.org/"&gt;&lt;strong&gt;FreeCAD&lt;/strong&gt;&lt;/a&gt;, &lt;a href="https://github.com/jupyterlab/jupyterlab"&gt;&lt;strong&gt;JupyterLab&lt;/strong&gt;&lt;/a&gt; and &lt;a href="https://github.com/jupyterlite/jupyterlite"&gt;&lt;strong&gt;JupyterLite&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="about-the-authors"&gt;About the authors&lt;/h2&gt;
&lt;p&gt;JupyterCAD is an open-source project resulting from &lt;a href="https://github.com/jupytercad/JupyterCAD/graphs/contributors"&gt;contributors&lt;/a&gt;’ collective efforts. Below, we highlight the primary contributors for this release:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2025/announcing-jupytercad-3-0/images/004-0_lIAP4xLgMI8KptQn.jpg" alt="Portrait of Trung Le" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/trungleduc"&gt;Le Duc Trung&lt;/a&gt; is a Scientific Software Developer at QuantStack. He works on several projects within the Jupyter ecosystem, from the main projects like &lt;a href="https://github.com/jupyterlab/jupyterlab"&gt;JupyterLab&lt;/a&gt;, &lt;a href="https://github.com/voila-dashboards/voila/"&gt;Voilà&lt;/a&gt;, and &lt;a href="https://github.com/jupyter-widgets/ipywidgets"&gt;ipywidgets&lt;/a&gt; to various JupyterLab extensions and widgets.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2025/announcing-jupytercad-3-0/images/005-0_RPV4uLZ7SYZ0_KwH.jpg" alt="Portrait of Martin Renou" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/martinRenou"&gt;Martin Renou&lt;/a&gt; is a Technical Director at &lt;a href="https://quantstack.net/"&gt;QuantStack&lt;/a&gt; and a maintainer of &lt;a href="https://jupyter.org/"&gt;Project Jupyter&lt;/a&gt;. Among other projects Martin is a core team member of the ipywidgets project and maintains many Jupyter widget packages such as &lt;a href="https://github.com/jupyter-widgets/ipyleaflet"&gt;ipyleaflet&lt;/a&gt;, &lt;a href="https://github.com/bloomberg/ipydatagrid"&gt;ipydatagrid&lt;/a&gt;, &lt;a href="https://github.com/QuantStack/ipygany"&gt;ipygany&lt;/a&gt;, &lt;a href="https://github.com/martinRenou/ipycanvas"&gt;ipycanvas&lt;/a&gt;, and &lt;a href="https://github.com/bqplot/bqplot"&gt;bqplot&lt;/a&gt;. He is a co-creator of the &lt;a href="https://github.com/voila-dashboards/voila/"&gt;Voilà&lt;/a&gt; dashboarding system, and the &lt;a href="https://github.com/jupyter-xeus/xeus-python"&gt;xeus-python&lt;/a&gt; kernel.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2025/announcing-jupytercad-3-0/images/006-1_ne6lm0Wifp81ZLEIB6fxiQ.webp" alt="Portrait of Arjun Verma" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/arjxn-py"&gt;Arjun Verma&lt;/a&gt; is a Scientific Software Development Intern at &lt;a href="https://quantstack.net/"&gt;QuantStack&lt;/a&gt;. He is also a final year undergraduate student at Cluster Innovation Centre, University of Delhi. He loves 3D &amp;amp; GIS and also contributes to &lt;a href="https://github.com/geojupyter/jupytergis"&gt;JupyterGIS&lt;/a&gt; and is one of the maintainers of &lt;a href="https://pybamm.org/"&gt;PyBaMM&lt;/a&gt; where he has also been &lt;a href="https://summerofcode.withgoogle.com/"&gt;GSoC&lt;/a&gt; contributor and mentor.&lt;/p&gt;
</content><category term="collaboration"/><category term="JupyterCAD"/></entry></feed>