-
Notifications
You must be signed in to change notification settings - Fork 391
Description
2020 CadQuery Community Update
If you got a notification that you were mentioned in this issue and are not sure why, scroll down to the "Thank You" section. You are probably mentioned there. I apologize if anyone feels spammed, but the purpose is to say thank you for your contributions to this project.
Intro
This has been another big year for CadQuery and its related projects. CadQuery has seen two releases in 2020: 2.0 and 2.1RC1 (the first release candidate for 2.1). I expect the full 2.1 release will happen in the first quarter of 2020. CadQuery quickly moved from being based on PythonOCC to being based on a set of custom Python bindings for the Open CASCADE Technology (OCCT) CAD kernel. Those bindings are part of the (OCP) project. OCP allows us to update more quickly when new versions of OCCT are released and make CadQuery-specific customizations to the bindings.
CadQuery has evolved so much this year that it is hard to put together a succinct list of updates, but I've attempted to do that below. If I have missed anything that is worthy of inclusion, please let me know by commenting on this issue. Feel free to check the changelog for a more complete listing.
Updates
- Assemblies - CadQuery is now capable of defining simple assemblies (tutorial here). If you are from a point-and-click CAD background the constraints might take some getting used to, but they work well and are a welcome addition.
- Video Tutorials - Two new video tutorials have been published related to installing CadQuery. The old videos were from the CadQuery 1.x days, and really needed updating. The new videos explain how to install CadQuery on Windows and Linux, and videos on getting started with CQ-editor are planned in the future. You can find the new playlist here.
- VRML Export - Allows CadQuery to export VRML interactive 3D vector graphics for the Web.
- Python 3.8 Update - Multiple updates fixed Python 3.8 compatibility in both CadQuery and CQ-editor.
- DXF Import - Creating complex 2D profiles with CadQuery can be tedious, and some profiles (i.e. aluminum extrusion) are provided by vendors in DXF format. It is now possible to import DXF drawings and treat them as 2D CadQuery objects. Info here and here.
- DXF Export - Allows CadQuery objects to be exported to DXF. This is useful when exporting for CNC manufacturing (among other things). Info here.
- locationAt - The new locationAt functionality allows for complex sweeps with varying sections and a complicated spline. Can be useful for modelling thread ends. Additional info here.
- offset2D - Allows for inset or outset of 2D geometry. Useful for many things, including creating cutouts in profiles based on their outer shape. More info here.
- Slicing Support - This does not generate gcode as with "slicing" in 3D printing, but does section a model into layers as specified by the user. This can be very helpful when exporting for something like a CNC router or laser cutter. Example
- OCP Changeover - As mentioned above, we migrated to a custom set of bindings for the OCCT CAD kernel to allow for faster updates and more customization. Info here.
- Slot feature - Slots can be drawn manually in CadQuery, but this operation creates them in one step, saving time and code. Info here.
- 2D Ellipses - Ellipses were a notable omission from the 2D tool set of CadQuery. @bernhard-42 added multiple variations of those for us here.
- Interpolated Surfaces - Implemented by @bragostin, this was created in order to produce a plate surface with a thickness, enclosed by edge points, polylines or splines, and going through optional interpolation points. Pull request here.
- Object Tagging - It can be difficult to refer back to a feature that was created earlier in a CadQuery script. Tagging helps overcome that challenge by allowing CadQuery objects to be marked with a human-readable tag that can then be referred to later. @marcus7070 implemented this functionality for us. Documentation here and pull request here.
If you feel that I missed any worthy inclusions, please comment on this issue and mention them.
Core Projects
- cadquery - The core library created by @dcowden that started this all.
- CQ-editor - CQ-editor is the desktop IDE for CadQuery scripts. There are experimental binary builds that you can try if running CQ-editor via Anaconda has been a barrier for you. Click on the latest build with a green check mark, and then scroll down to the Artifacts section. It sometimes takes that section awhile to load with the new GitHub Actions layout.
- cq-cli - A command line application that executes a CadQuery script and converts the result(s) to an output format. The app is currently in alpha and only supports STL and STEP export. However, other formats will be added in the future. There are binary releases to make it easy to install.
- jupyter-cadquery - This has become a favorite web-based GUI within the community. It has many nice features including assemblies and animation, and a large part of its assembly functionality is currently being merged with assemblies in CadQuery core.
- pywrap - The Python-C++ binding framework that underpins OCP. It is designed to automate as much of the binding process as possible. At this time pywrap still assumes some things related to OCP, but the goal is to generalize it for use with other projects.
- OCP - OCP was created to provide thin bindings to OCCT, wrap as many of the OCCT modules as possible, react quickly to new OCCT releases, and be tailored primarily for the CadQuery project. OCP was based on OCCT 7.4.0 starting out, and is now being updated to work with the latest version, which is 7.5.0.
Community Projects
Here are just a few projects from the community that are using CadQuery. If I have missed anything, or if you have a project that is using CadQuery you would like to mention, please let us know in a reply to this issue or on one of the community channels listed below.
- Paramak Project - Allows the creation of 3D CAD models for fusion reactors, which can be used for engineering and analysis.
- cq-kit - FxBricks uses CadQuery in their product development pipeline to create Lego-compatible bricks to help teach electronics engineering expertise. FXBricks team member @michaelgale created cq-kit as a way to give back to the community. The cq-kit repo contains utility classes and functions to extend the features and capabilities of the CadQuery.
- Hexidor - CadQuery was used in the creation of the Hexidor board game, which is a more complex variation of the game Quoridor.
CadQuery in Research
- CadQuery DOI - If you are publishing a research paper and made use of CadQuery, please consider using the DOI for CadQuery so that we can better track where it is being used. More info here.
Looking Forward
- Installation - Ease of installation is important for a significant portion of the community, and we have put some effort into improving in that regard. There are now binary development releases of CQ-editor, and the plan is to provide stable releases at some point in the future. There is also cq-cli (see above), which has binary distribution packages available for Linux, MacOS and Windows.
- Assemblies - We are going to be using and proving out the new assembly system. I expect we will find areas where we want to change and/or improve things as more of the community gets a chance to try this new functionality out.
- Settling into OCP and OCCT 7.4+ - We are now stable on OCCT (the CAD kernel) 7.4.x and OCP (our bindings to OCCT), and are getting closer to upgrading to OCCT 7.5. I do not expect any more major changes to CadQuery's foundations in the foreseeable future. We have a firm foundation now, and will continue to build on it.
Communication Channels
There are multiple ways to reach out to the CadQuery community. We have a great community and newcomers are always welcome.
- GitHub - Bug reports and feature requests
- Google Group - General discussion
- Discord - General discussion
Thank You
Again this year @adam-urbanczyk deserves a big thanks for all the work he has put into CadQuery 2.x, the OCP binding system, and the guidance he has given the community in general. Thanks Adam! We also have many community contributors now, and that is very exciting to see. Thank you to everyone for their contributions. For those first time contributors, and the one or two who were contributing to an open source project for the very first time, thank you for jumping in with us. We appreciate you and our entire community. The community has made CadQuery what it is today, and will help carry CadQuery well into the future, starting with 2021.
If you are a contributor and I somehow missed your name below, please let me know so that I can get you added.
CadQuery Contributors
@dcowden (creator)
@adam-urbanczyk (core dev)
@jmwright (core dev)
@greyltc
@Peque
@marcus7070
@hyOzd
@justbuchanan
@bernhard-42
@mgreminger
@bragostin
@huskier
@armyofevilrobots
@fragmuffin
@osterwood
@winksaville
@bweissinger
@cactrot
@ArmoredBlood
@moeb
@snagy
@krasin
@westurner
@HLevering
@nopria
@xix-xeaon
@JosiahBradley
@phillipthelen
@grawp
@jwhevans
@gebner
@Renha
@nirvdrum
@just-georgeb
@asukiaaa
@l29ah
@bsilvereagle
CQ-editor Contributors
@adam-urbanczyk (creator)
@jmwright
@justbuchanan
@gebner
@marcus7070
@winksaville
@nealie
@helmecke
jupyter-cadquery Contributors
@bernhard-42 (creator)
@ilya-epifanov
OCP Contributors
@adam-urbanczyk (creator)
pywrap Contributors
@adam-urbanczyk (creator)
@nealie
@greyltc
@jmwright
cq-cli Contributors
@jmwright (creator)