Close
0%
0%

CaDoodle: Doodle in CAD!

A drag-and-drop CAD package that is an open source, local application alternative to TinkerCAD

Public Chat
Similar projects worth following
CaDoodle is a local drag-and-drop CAD application for Linux (Arm,x86), WIndows (X86), and Mac (Arm,x86) and ChromeOS. Users models are stored locally, and the application runs entirely locally. CaDoodle has a drag and drop interface that is cross-trainable with TinkerCAD.

1. Drag and drop shape
2. Group and ungroup
3. Solid and Hole status
4. Undo of operations
5. Stretch and move handles
6. Library of examples
7. Nearest Surface snappping

Key Improvements over Tinkercad

* Boolean operations such as Hull, Intersect, and XOR
* Inkscape as the sketching tool is much more powerful sketching tool
* Blender integration brings Sculpted elements easily into CaDoodle
* OpenSCAD scripts supported as file sources
* BowlerStudio scripts supported
* Gridfinity bins a 1st class object
* FreeCAD models supported as source models
* Export directly to STL, SVG, OBJ, Blender, FreeCAD

Download the installers here: https://github.com/CommonWealthRobotics/CaDoodle/releases

As an elementary school technology teacher, TinkerCAD provided easy to use on-ramps for students as young as 2nd grade. I spent the 23/24 school year teaching with TinkerCAD and found myself increasingly upset by the limitations and constraints of TinkerCAD. First and foremost, the fact of the CAD models sources being entirely unavailable. The "Tinkercad source" is actually entries in the Autodesk servers database. With no option to access those actual sources, students are tied entirely to the tinkercad website.

The first real problem came when a student made a model in 5th grade that was so complex that the Tinkercad site crashed. The model was not recoverable, and the student that had done all of that extra work to add detail to his model lost everything. This experience started me thinking about how this could be made better for the students.

The next major problem came when another student wanted to do CAD work on her ride home (which due to bus schedules took over an hour each day). She wanted to keep designing things, but without an internet connection she was unable to do any work.

Finally i began to contemplate the pedagogical damage being done by teaching students a skill that is only accessible to them as mediated by a company. I began to feel a deep sense of unease that the skills of my students were increasingly being trapped behind a paywall.

My solution was to make a locally installed application, that used an open file format that is stored locally on the disk, and that had access to the full resources of the computer the application was running on.

In July 2024 i began work in earnest on CaDoodle. In April 2025 I hit a level of feature completeness to open it up for Beta testing. 

 Source Code

This repository is the installer and auto-updater. The installable releases are found here.
The below link is for the source code of the main application itself.

https://github.com/CommonWealthRobotics/CaDoodle-Application

Inspiration

The workflow of Tinkercad is an excellent experience for novice users of CAD.
1. Drag and drop shape with surface snapping

2. Group and ungroup

3. Solid and Hole status

4. Undo of operations
5. Stretch and move handles

6. Library of examples


This workflow suffers from a few fundemental problems

1. Web based UI means it is enclosed by whomever runs the server
2. Subscription model is precarious (Autodesk is not known as a reliable partner for free tools over time)
3. Proprietary source files

 Solution
This application is Java based and uses BowerStudio as the CAD kernel.

All scripts will be compatible BowlerStudio scripts.
UI will be laid out in SceneBuilder / JavaFX.

OpenJDK 17

 Hardware Requirements

The following platforms will be targeted:

* Windows
* Mac OS (Intel and Aarch64)
* Linux Ubuntu .deb and flatpack)
* ChromeOS
* 8 gb of ram is required.
  The following platforms will not be targeted:

* Androind
* iOS

 Chrome OS Instructions

First, set up Linux using the instructions : https://support.google.com/chromebook/answer/9145439?hl=en

Next download the Linux .DEB installer from : https://github.com/CommonWealthRobotics/CaDoodle/releases

Finally double-click on the .DEB to install CaDoodle.

You can now launch CaDoodle from the applications launcher window.

  • HOWTO add an example Object to CaDoodle

    Kevin Harrington2 days ago 0 comments

    I Absolutly want to have folks add more example shapes! The shapes pallet is defined by the contents of this repo: https://github.com/madhephaestus/CaDoodle-Example-Objects and cloned into ~/Documents/CaDoodle-workspace/gitcache/github.com/madhephaestus/CaDoodle-Example-Objects/

    If you wanted to experement, you can modify the existing .json files, or create your own to make a new menu item. Just close CaDoodle and open it up again to see your changes.

    The lines in the json

    "Cube":{

    "git":"https://github.com/madhephaestus/CaDoodle-Example-Objects.git",

    "file":"cube.groovy",

    "order":"2"

    },

    Is the URL to the git location of the file, and the file ke is the location of that file within the repository. The file can be any type supported for import. The order term is where the button should be in the grid of buttons.

    In the case of files you would like the uer to edit, just add the key:

    "copyFile":true

    This will make a copy of the source file into the users directory and provide an editor button in the UI for the user to edit the file. If you make a blender file you wan the user to sculpt on, then you would use that flag.

    If you would like to add your example shapes to the whole community, make a pull request with your updated https://github.com/madhephaestus/CaDoodle-Example-Objects

    Once I merge your PR, that object will be availible to the whole community as an example object.

    Supported file types are:

    BowlerStudio scripted cad (Groovy)

    FreeCAD files

    Blender Files

    Inkscape SVG's (where all objects are paths) for extrusion

    Inkscape SCG's as sweep inputs (rings, threads, spirals)

    OpenSCAD files (you need to wrap it in a groovy file to expose the parametrics)

    STL files

    OBJ Files

  • Added threading to the BasicShapes

    Kevin Harrington4 days ago 0 comments

    Based on a comment i decided to make Threading a BasicShape. It was always possible to use the Ring shape to turn it into threads, but this makes it a standard shape.

  • CaDoodle Beta Release!

    Kevin Harrington5 days ago 0 comments

    As of today, April 14th 2025, I have released CaDoodle as Beta release! I have achieved feature-complete with respect to the original TinkerCAD feature list. All modeling features and processes from Tinkercad can be replicated in CaDoodle. A Tinkercad user can use their skills and transfer their existing learning into CaDoodle.

    If you are a QE or have experience with QA please reach out. I am actively seeking Beta Testers.

    The main task now is a set of testing documents. I need to make procedures with expected behaviors for testers to run through. Anyone with experience making testing documents is especially encouraged to reach out! 

  • I added a confirmation window for when you are about to erase your history

    Kevin Harrington6 days ago 0 comments


    If you use Undo to go back in time, then change something CaDoodel has to do something with your future operations. This dialog lets you undo that change before it erases the future work from this step.

  • Ruler tool is now working!

    Kevin Harrington04/12/2025 at 15:32 0 comments

    I finally added the Ruler tool! This tool lets you click on a surface and use that as the reference dimensions for the move operations. You can place the ruler on the ground, workplane or any surface of any part. it will remain orientated to the current workplane so your reference dimensions in the move handles

    will remain accurate.

  • Project Progress July 2024-April 2025

    Kevin Harrington04/07/2025 at 15:47 0 comments

    As an elementary school technology teacher, TinkerCAD provided easy to use on-ramps for students as young as 2nd grade. I spent the 23/24 school year teaching with TinkerCAD and found myself increasingly upset by the limitations and constraints of TinkerCAD. First and foremost, the fact of the CAD models sources being entirely unavailable. The "Tinkercad source" is actually entries in the Autodesk servers database. With no option to access those actual sources, students are tied entirely to the tinkercad website.

    The first real problem came when a student made a model in 5th grade that was so complex that the Tinkercad site crashed. The model was not recoverable, and the student that had done all of that extra work to add detail to his model lost everything. This experience started me thinking about how this could be made better for the students.

    The next major problem came when another student wanted to do CAD work on her ride home (which due to bus schedules took over an hour each day). She wanted to keep designing things, but without an internet connection she was unable to do any work.

    Finally i began to contemplate the pedagogical damage being done by teaching students a skill that is only accessible to them as mediated by a company. I began to feel a deep sense of unease that the skills of my students were increasingly being trapped behind a paywall.

    My solution was to make a locally installed application, that used an open file format that is stored locally on the disk, and that had access to the full resources of the computer the application was running on.

View all 6 project logs

Enjoy this project?

Share

Discussions

Stephen K wrote 5 days ago point

Wanted to say - this is perfect. Everything I wanted in a 'I need to quickly sketch up a design' program, and keeps all the TinkerCAD feel to make it even easier.

Absolutely love it. Only thing I'd say is missing is thread generation but that's not a deal killer at all.

Thank you for all your work.

  Are you sure? yes | no

Kevin Harrington wrote 4 days ago point

EDIT: I went ahead and made threads a basic shape for everyone! (See the latest log from today)

AH! It is not missing! Place the "Ring" object in your drawing. Use the parameters to change the profile to the tooth profile -> Set the z per parameter to the pitch -> set the number or degrees to 360*the number of threads you want. BOOM! you have working threads!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates