Message Boards Message Boards

Draw: vector drawing & technical illustration application

Posted 8 years ago

Recently John Fultz announced GitLink as open source on GitHub. He also mentioned the desire to offer more Wolfram related open source to the community. Draw was not mentioned by John but readers of his post followed the GitHub link and discovered the Draw repository. Naturally questions followed so here we are with an introduction of Draw, the latest open source contribution to the community.

Draw is a vector drawing application. Many of the technical illustrations found in the Wolfram Language documentation were created using it. The release of Draw is to promote the advantages of using the Wolfram Language for software development.

Draw was a personal project that grew from an idea to develop a simple tool to automate the drawing of flowcharts. This simple tool expanded in response to the need of functionality for solving specific challenges required by various illustrations. The Wolfram Language was very instrumental in helping Draw evolve during this process.

Some of the more prominent features of Draw include:

  • Orthographic 3D drawing
  • Circuit, Mechanical and 3D library presets
  • Adjustable shapes such as gears or spirals
  • Shape arrays
  • Image autotrace

The gallery of examples below demonstrate the capabilities of Draw:


A look inside the application reveals an interface divided into four distinct sections:

interface sections

An example of Draw being used to work on a flowchart:


The Circuit, Mechanical and 3D libraries:


The adjustable gear shape:


The shape array:

shape array

Hope this brief introduction is enough to inspire you to download the Draw notebook from this GitHub link. Start creating illustrations or explore the Wolfram Language code to discover how the application works. Support is available by clicking the blue help button for topics such as the basics, features, interaction, tools, examples and tips. Tooltips appear for all buttons detailing their behavior. Remember this is open source software and comes with no guarantee. That being said, feel free to kick the tires and take it for a spin.

Draw works best when used in Mathematica 11 but most functionality is supported by Mathematica 10.4.1.

POSTED BY: Tim Shedelbower
14 Replies

I use it pretty much everyday to create documentation and marketing illustrations so I add functionality as needed.


POSTED BY: Tim Shedelbower


Thanks. I like this drawing tool. It allows me to stay in the Wolfram environment when writing complex documents. Hopefully, you continue to maintain it.



Jesus, Evaluate Get["<yourDirectory>/wldraw-main/WLDrawPackage.wl"] in an empty notebook. Tim

POSTED BY: Tim Shedelbower


I have tried to run the package from Wolfram Desktop, but I couldn't make it to work. All I did was to download the zip and the run DrawTools.wl. Could you give us a getting started lines?



Draw has been updated and renamed WLDraw. It can be found here:

POSTED BY: Tim Shedelbower

Thank you! Now I have it. Amazing tool, sure it will help me to develop my contents.

POSTED BY: Diego Ramos

Thanks a lot, Tim.

The tool you developed is amazing, it sure will help my contents too.

POSTED BY: Alex Brandão

This application seems amazing, indeed. However, I've tried to download it from the git repository, but the file isn't there.

Can someone help me out? Provide another link to the file or any kind of fix to the issue.

I would be greatly thankful for that, since this application can help me a lot in my dissertation for making mechanical schemes and so on.

Thank you in advance.

POSTED BY: Alex Brandão

Szabolcs, glad you like it.

  • The canvas size is set by the global variable $dtCanvasSize. It is currently set to 750 but you can change it. However using a value other than 750 will cause the renderings in Draw to not match what is copied to the clipboard. Line weights, arrow sizes, etc. will be affected. Changing it to 700 would shrink it a little and not be too noticeable.

  • The GitHub notebook now displays cell brackets so you can see when draw[] is evaluating.

POSTED BY: Tim Shedelbower

Hello Tim,

This is very nice. Thank you for sharing it. I have two small suggestions after opening this version for the firs time:

  • The window does not fit on my screen vertically. I use a MacBook Pro, i.e. my screen resolution is 1440 by 900. But the menu bar also takes up vertical space, and so can the dock (although personally I have that hidden). I can increase the screen resolution in which case Draw becomes usable (but not resizable).

  • It takes quite a few seconds for Draw to start up. Since the notebook has the cell brackets hidden, there is no very clear indication that something is happening at all. (Unless I look at "Running..." in the title bar.) It would be nice to put a PrintTemporary@ProgressIndicator[Appearance -> "Necklace"]; or similar to the beginning of the init code, to reassure users that something is indeed happening.

POSTED BY: Szabolcs Horvát

Draw has been updated with new features and bug fixes. Download from this GitHub link. Short list of features and bug fixes include:

  • Added multiple undo and redo
  • Added command-click to clipboard button for copying graphics code instead of graphics
  • Added color palette popup menu to choose ColorData numbers 97-113
  • Added Round Corners draw tool
  • Added shadows for individual 2D shapes
  • Fixed group and ungroup functionality for better reliability

See GitHub commit for full list of changes.

POSTED BY: Tim Shedelbower

Super great! Vey useful.


enter image description here - you have earned "Featured Contributor" badge, congratulations !

This is a great post and it has been selected for the curated Staff Picks group. Your profile is now distinguished by a "Featured Contributor" badge and displayed on the "Featured Contributor" board.

POSTED BY: Moderation Team

This is fantastic! It is a serious upgrade to drawing cartoons programmatically using Graphics.

POSTED BY: Tal Einav
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract