page updated: 2010.08.25

CAD tools for Blender-3D
CADtools ist ein Python-Erweiterungsmodul für Blender-3D - freie 3D-Grafik-Software.
Es beinhaltet umfangreiche CAD Werkzeuge optimiert für Architekten, Designer und Modellbauer.
Das Programm und die Dokumentation existieren jetzt in Englisch.
Auf Wunsch können auch andere Sprachversionen erstellt werden.

CADtools is a CAD extension for Blender - an open source 3D creation suite.
It is dedicated for architects, engineers and designers working with Blender.
It extends/replaces standard User Interface and offers CAD specific functionality.
It is writen in Python and needs Blender 2.49b and corresponding Python installed.
The User Interface is in English; other languages can be assembled.
CADtools works for Linux, MacOS and Windows-XP, Vista, Windows-7

Features:
version 0.51 for Blender 2.49b
current stage of implementation (llllllllll) and recent changes (llllllllll)
.
llllllllll - transparent access to standard Blender UI
llllllllll - data integrity and compatibility of blend file are not affected
l......... - UNDO function
llllllll.. - settings and project preferences preserved between sessions
lll....... - context sensitive help system (use F1)
llllllllll - editing across multiple objects and object types (Meshes/Curves)
llllllllll - editing across multiple Views in orthogonal and perspective mode
llllllllll - autorepeat for commands and parameters
llllllll.. - Views management
lllllll... - Selection-Sets management, supporting boolean operations
llllllllll - UCS - arbitrary User-Coordinate-Systems
llllllllll - Cartesian and Polar Coordinates
lllllll... - workplane-constrains: Lock-X,Y,Z , GRID-mode, ORTHO-mode
lllllll... - visual feedback for: UCSs, 3d-Markers, subgeometries, ortho/polar-coords
lllllll... - CAD-specific SNAP-functionality (real-time-engine)
llllllllll - numeric input/edition of coordinates relative to current UCS
llllllllll - support for Metric and Imperial Units. Default Blender Unit is 1 meter here.
lllllll... - dimensioning-system: on-screen representation for 2d and 3d
l......... - dimensioning-system: real representation for export and print
llllllllll - 3d-Markers: reference-points in 3D-View
llllllllll - Geometric-Calculator working on 3D-Markers
l......... - true scale printing: HPGL, SVG, raster
l......... - in-place editing for DXF-BLOCKs
l......... - DXF-LAYER system
l......... - DXF-Entity-properties: COLOR, LINESTYLE, LINEWIDTH
llllllll.. - extensibility: embedding external python scripts in UI

Drawing Tools: (support Curves and Meshes, 2D and 3D)
llllllllll - POINT
llllllllll - LINE
llllllllll - POLYLINE
llllllllll - CIRCLE
llllllllll - ARC
l......... - ELLIPSE
l......... - ELLIPTIC-ARC
l......... - SPLINE
llllllllll - RECTANGLE
llllllllll - BOX-3D

Editing Tools: (support Curves and Meshes, 2D and 3D)
llllllll.. - DELETE
llllllll.. - MOVE
llllllll.. - ROTATE
llllllll.. - SCALE
llllllll.. - MIRROR
llllllll.. - ALIGN
lllll..... - BREAK
l......... - JOIN
llllllll.. - TRIM
llllllll.. - FILLET
llllllll.. - CHAMFER
lllllll... - PROJECT
llllllll.. - OFFSET
llllllll.. - SLIDE-mode: vertices slide along edges

Architectural Tools: (ARCHtools project)
llllllllll - CAMERA-MATCH: camera matching tool, supports tilt-shift-images
l......... - SUN-MATCH: sun-light matching to given date/time/geo-location
l......... - FLOOR creator
l......... - COLUMN creator
l......... - BEAM creator
l......... - WALL creator (see also Draw:BOX3D function)
l......... - WINDOW-DOOR creator
l......... - CEILING creator
llllll.... - STAIRS creator
l......... - ROOF creator
l......... - RAILING creator

Enhancements based on Blender 2.49b-CAD-edition:
lllll..... - more efficient import for big DXF files
llllllllll - supporting big workspace (up to 2.000.000.000 units)
llllllllll - supporting big list of objects in the scene (up to 50.000 objects)

for details click


Follow-on projects:
- ARCHtools - a productivity tools for architects
- ARCHconcept - 3d-ketch tool for architectural concept work

License:
CADtools script is offered as registerware / donationware, under closed-source (non-GPL), non-transferable personal license. You can use it for private and commercial projects.

Roadmap:
Developing will focus on Blender 2.49b a while. Version for Blender 2.6 is planned (as soon as the new Python API becomes complete). Long term goal is to rewrite the code into C/C++ and integrate with Blender sources under GPL-license.

It is a relatively very complex project, long way to finish it.
So wish me luck on the way
...and don't hesitate to register and donate.

migius
(AKA Remigiusz Fiedler)

Background:
I have started this project under working name privateCAD/pCAD in early 2008 as a complement to DXF-importer. I was missing CAD functionality in Blender 2.46 very much - it was hard to manage or edit imported CAD data. Blender developer team was very busy with main targets, there were no capacities for such specific issue as CAD extension, so i decided to find the solution on my own.
I have spent plenty of time for gathering and testing CAD scripts written in Python for Blender. You can find them in Blenderwiki CAD_tools section.
The conclusion was: separated tools are not the optimal solution. For effective work-flow CAD tools must communicate each other and must be accessible through an ergonomic User Interface.

The most interesting stuff i could find were scripts by Mariano Hidalgo (AKA uselesdreamer), especially the "Hotspots" script: there is no CAD functionality but its has an UI with potential to glue different tools together. Unfortunately the script is no more developed since 2006.

The second one was "ProCAD" script ver.2.5 by Paolo Provenda (AKA JAPY). It looked very promising, though there was only Italian version, so i started to translate it to English (middle 2008). It was a funny experience, because i didn't understand Italian at all. You can find the result here .
I was not quite happy with ProCAD Interface and missing many functionality, so i started to modify and to extend it, but working with that code was extrem time consuming - poorly commented, at many places unfinished, all in Italian. Finally i have dropped it and started to write from scratch.

The developing of CADtools script started with a new UI concept. I had to learn many new stuff, most of all the methods to access Blender 3d-view-area from Python and openGL. The script has evolved slowly but steady to working prototype in August 2009.

The User Interface and tools in CADtools base on AutoLisp-extensions i wrote for AutoCAD-r12(dos). Current implementation is a try to reporduce the same level of work-speed and ergonomics.
Very probably UI will change in the future, because I am still experimenting with more intuitive variants.
(to be continued...)

History:
2009.09.30 - First working prototype
2009.10.24 - First public viewing: Blender Conference 2009. (link...)
2009.12.13 - First official release: 0.40-alpha
2010.03.22 - 90% release: 0.46-alpha
2010.06.17 - release 0.49-alpha prepared for Blender 2.49-cad-edition
2010.07.14 - release 0.50-alpha: Bezier-Curves support extended

Technical notes:
Current developer-version is compiled for win32 - blender2.49b - python 2.6.
If you are working on other configuration/platform - i have to prepare for you an extra copy.
The script works also for older Blender versions pre 2.49, though this is not recommended.

Download: see Registration

Registration = How to get your personal copy of CADtools
- send me an email titled "CADtools" with your data:
     forename/surname + city/country + emailaddress
     + operating system + blender_python version
- your data will be used ONLY for CADtools registration
- you will receive your CADtools copy by email
- your copy will be personalized and password protected

Donations:
I need your support! Donations will allow me to work on this project on full time basis - the only way to make real progress with it.
Payments can be made via bank transfer(EU), MoneyBookers or PayPal.
If you like to suport this project please contact me for details.
In a case that donation model fails and i will have to switch to payware model,
the license will cost 100-150 Euro. In such situation donators will get special terms.

Contact: migius(a)gmx.net




Release Notes:

current version: CADtools 0.51alpha - 2010.08.25

Note: below specification is eventually not quite up-to-date, because of ongoing developing process.

Caution:
- current version is work in progress, relatively stable, but needs some more testing before being released for production purposes.
- script may crash Blender, so work with copies and make backups in between.
- UNDO function is not implemented yet!

Installation:
- read Readme.txt
- copy CADtools.py to %Blender%/.blender/scripts/
- copy CADtools_data.pyc to %Blender%/.blender/scripts/bpymodules/

Getting started: see video tutorial
- start Blender
- set on "Enable Script Link" (button in Panel:Script)
- switch window-type to Script-window
- start Menu:Scripts:System:CADtools
(ImportError: "Bad magic number..." means Python version conflict, so ask for CADtools version matching your Python version.)
- enter your password (needed for updates)
- start editing...
- exit with SHIFT+Q

Known issues / Limitations / TODO-list:
- buttons marked with <..> are not implemented yet.
- buttons marked with <.> are partially implemented.
- UNDO doesn't work for CADtools yet: Blender may crash if UNDO executed during/after CADtools session.
- EDIT-functions may be unpredictable for objects sharing geometry (multiuser obData).
- Selection-Sets update also hidden/invisible objects, across all scenes and layers.
- Curve-Objects: Selection-Set may become corrupt if you add/delete points.
- fixed Curve-Objects: no real DELETE yet: it only moves/sticks points together.
- fixed Curve-Objects: SNAP gets curved segments of Bezier-Curves indirect.


previous versions:

CADtools 0.37 - 2009.09.30 - the first working prototype