page updated: 2021.11.20
CAD tools for Blender-3D
introfeatures manualroadmap • about • newslicenseregister subscribe contact release notes

My name is Remigiusz Fiedler. I am an architect and software developer living in Berlin, Germany. Read more...

CADtools project is one-man development. I started the project early 2008 under working name "privateCAD/pCAD", just after finishing DXF-importer script. Blender 2.46 was all but CAD application. Editing of CAD stuff with it was a nightmare because of missing appropriate tools. CAD was not on Blender's agenda and it seemed that it would not change any soon. I was very frustrated about this situation and decided to find a solution on my own.

At the beginning I spent plenty of time on gathering and testing CAD-related Python scripts. A big help was the scripts archive on maintained by Brendon Murphy (AKA Meta-Androcto). I have added the "CAD" section to this archive.

I didn't find a really satisfying solution. In my opinion a bunch of separate tools is not all for efficient CAD work flow - you need also an optimal user interface!
In particular:
- tools should work context-sensitively
- tools should communicate each other
- tools should communicate with the user: visual feedback and interaction

The documentation to Blender Python-API gave me a good insight in scripting in Blender, though many questions remained unanswered. A big help were scripts by Mariano Hidalgo (AKA uselesdreamer). I found there plenty of interesting stuff, for example the "Hotspots" script, which shows how to extend user interface in Blender 2.4x.

The second source of inspiration was "ProCAD" script by Paolo Provenda (AKA japy). I started with 2.5 version and it looked very promising to me. There was only an Italian version, so I translated it to English and added to the BlenderWiki ProCAD page (above link). It was a strange experience, because I don't know Italian at all.
I was not very happy with ProCAD's Interface and was missing a lot of functionality, so I started to modify it. It was a very time consuming process, because the original source code was poorly commented and partially not finished. Finally I gave up and decided to start from scratch.

The development of "CADtools" script started 2009 with a new UI concept. I have had to learn much, particularly methods to access Blender's 3d-view-area through Python and openGL. The script evolved slowly but steadily to working prototype in August 2009.

Parts of User Interface and tools in CADtools developer's version base on AutoLisp-tools I wrote for AutoCAD-r12(DOS) in the past.
The current UI is a temporary solution. I plan to replace it with more ergonomic model for the final version.

Initial note on 2009.10.10:
It is a relative complex project * - long way to finish it. Plenty of ideas are waiting to be implemented - enough stuff for months of work.
CADtools' License guarantees non-anonymous relation between me and users - a good basis for communication, feedback and support, so CADtools project will have good chances to be successful.

*) 2010.01.20 - it is a very complex project.
*) 2010.09.05 - it is the most complex project I've ever done!

2010 June to October:
the most developing time went into editing-tools for curves. It was a real challenge and it needed many experiments to find out proper methods for Bezier-curves manipulation. It seems that no exact mathematic method is possible, so I have implemented it with help of approximation. This part is almost completed now - we can work with Bezier-lines and curves as easy as never before. As far as I know, only a few CAD packages offer similar functionality.

2010 December to 2011 April:
I was working on IFC-importer script as basis for future BIM system for Blender. The importer will be included in 0.56 release. For effective access to BIM data I have to write an CAD-properties-editor/manager, though this will take longer.

2011 May:
I am prototyping the SKETCH tool: 3d-context-sensitive and pressure-sensitive (graphic tablet!) architectural drawing tool. It will go into 0.56 release soon.

2011 June:
I am developing a method to read out ACIS data from DXF-files. It will be possible to import REGION and 3DSOLID entities into Blender.

2011 July:
Lecture on BlenderFDS-project forum about performance problems by voxelizing big dimensioned scenes was a motivation to do some research and to prototype VOXELIZER script. It can be used for preprocessing of data for advanced scientific simulations, but also as experimental tool for architectural creation.
2011 August:
Standard UV-tools are not optimal for editing of architectural models in Blender. I am developing an automatic UV-mapper which works with real dimensioned tile textures. Preparing models for visualization and interactive presentation (Game Engine) will be easier.

2011 September:
Technical basis for CAD/CAAD asset management system (GUI framework) is now completed. The first tool that builts on it is the ID-Properties Editor. It will significantly speed up further development of DXF and BIM implementation in Blender.

2011 October and November:
I am implementing stereophotogrammetry method for Blender for precise reconstruction of 3d models from images: with help of SNAP-option "RAY" you can set 3d points in regard to two cameras calibrated previously with CAMERA-MATCH tool.
The new SUN-LOCATOR tool can adjust sun-object parameters to given geo-location and time. Furthermore it can visualize total sunlight irradiation for given time period: day, month, year.

2011 December:
I am implementing BIM system for parametric construction of architectural models. WALL and WINDOW modules with provisory UI are ready for first tests.

2012 January:
Prototyping of SKETCH system goes on: got it to work with ARC and CIRCLE functions lately. I am tinkering extensively on interface concept for it - it is a real challenge to make a working 3d counterpart to the traditional 2d sketching.

2012 February and March:
I am working on DXF-importer again: plenty of time dedicated to 3DSOLID support, not finished yet. Excellent news for subscribers: the new DXF engine can read arbitrary large DXF files at minimal RAM and CPU usage!
Prototyping of SKETCH system continues: pushing on with destructive mode, raster-objects and gestures driven work flow.

2012 April:
Prototyping of SKETCH system slows down while rewriting big parts of code to solve UNDO issue. Partial solution: disabling "Global Undo" in User Preferences guarantees crash-free working.
2012 May and June:
Further work on DXF-importer for Blender 2.63: implementing BLOCK support, fixing some no-go bugs by creation of massive meshes.

2012 July:
Vacation with my family on Baltic Sea :)

2012 August and September:
Finishing BLOCK support for DXF-importer for Blender 2.64: testing and bugfixing it since weeks, with little success so far, but hope to get it working soon.
Blender 2.49b is still my favorite development platform. It is superior to the new Blender in sense of performance, footprint, stability and extensibility (more capable python API). I am thinking about an update for 2.49-CAD-edition - with some important GUI improvements for better matching industry standards, like: native implemented drag&drop, unlimited (scrolling) menu lists, multi-line tooltips, CAD capable outliner and named layers system.

2012 October:
I have got valuable feedback about CADtools on Blender Conference this year. I have also talked with developers about further Blender development, especially about future of Blender's GUI which is the main issue by porting CADtools to 2.6x. The good news is, there are plans to make the system more open for customization work.
Little progress with CADtools and DXF-importer recently, because of lack of quality development time. I haven't had the opportunity to work over 3-5 days in one piece, so no complex stuff could be processed. It will look better in November I think.

2012 November:
It looks like I need a few weeks more to complete the new release, so I decided to renew the 0.64 before it. There are some important bugfixes, so the application should work more stable now.
Now I am continuing development of DXF scripts and plan to test FEM on usefulness in architectural creation process.

2012 December:
Weeks of massive testing and bugfixing were needed to bring the DXF importer to stable production level. With a big portion of luck I was able to solve plenty of import issues, e.g. non-destructive import of BLOCK-hierarchies, preservation of LAYER structure, proper import of ELLIPSEs for any orientation matrix.
The new engine makes it possible to import DXF files of any largines and complexity with constant transfer rate which was since ever the most requested issue. The 2.49b version is ready now. The 2.65 version will be ready in short (two weeks?).

2013 January:
The bugfixing for CADtools 0.65 goes on. I could fix several crucial bugs, but one remains and breaks operability of CADtools-UI on Linux. Windows version is not affected. It doesn't break CADtools totally, but some functions do not work. For new users it can be very frustrating, because they can not recognize what is by design and what is a bug.
The most energy goes into finalization of DXF-importer for Blender 2.65.
Update 2013.01.28: I could fix the bug! - CADtools Linux version works again \o/
2013 February:
I am close to finishing DXF-importer for Blender 2.65!
Win7_64 on my notebook became recently total crappy - just after routine system update. It took two days to fix it - meant two days of fun with Linux Mint 13 and derivates! During this period I have learned how to set up Blender (especially the 2.49b-CAD-edition) on Linux platform the proper way.
DXF-importer: I have added a second reading pass for better data analysis. It guarantees better handling of complex DXF models (e.g. with hundreds of BLOCKs and LAYERs) on cost of slightly increaced import time.

2013 March:
DXF-importer-PE: version for Blender 2.6+ is ready for release! Finally!
I am really happy, and the first feedback from users is very positive.
Now I can move back to CADtools script to fix remaining bugs for the release.
After this I will start to work on better documentation.
I have updated the license: added paragraphs about subscription and guarantee.

2013 April:
Extending and bugfixing DXF-importer. Not a great deal, simply making it more robust.
Continuing research about opensource economics, but can not find even one working model. It seems humans have very specific sense of cooperation.

2013 May:
Development of MODULUS-tool took four weeks. It can discretize edges in meshes automaticaly. Added SNAPmode "MODULE" and visual feedback for more controll by this process.

2013 June:
Developing SECTION-tool for architectural sections.
Users ask for better documentation - I will try to reduce the gap.

2013 July:
Pause because of family matters.

2013 August:
Back to development: fixing Blender 2.49 installation issues for recent 64 bit Linux distros.

2013 September:
Improvements for DXF-importer: code page detection (next approximation).

2013 October:
Improvements for DXF-exporter: export Bezier-curves to SPLINEs.

2013 November and December:
Little progress with DXF scripts for Blender 2.69, because of other urgent projects.

2014 January:
Continuing work on DXF scripts: focus on Blender 2.69 issues and SPLINE support.

2014 February:
CADtools: a number of updates accross many tools to provide rigid geometry work flow. It will be easy to interact with edges and faces in 3d space, just as if they were rigid objects.
2014 March:
DXF scripts regression tests for Blender 2.70.
Working on tools for rigid geometry work flow in CADtools.

2014 April:
I am progressing with DXF-importer script quite well: I have finished the routine for decomposition of BLOCK-hierarchies (explode), and added filter for noname-BLOCKs. After very long bugfixing process, Global_Location and Global_Scale options started to work properly for all types of entities, inclusive arbitrary scaled/oriented BLOCK-hierarchies! The next version 2.2.7 is ready for release.
I continue my work on native support for SPLINEs, which is still not ready for production - it produces strange errors in some cases.
Then I will try to implement DWG-to-DXF-converter from 2.49 version.

2014 May:
I am finishing native support for SPLINEs, POLYLINEs and LWPOLYLINEs in DXF-importer for Blender 2.70. It is a very broad area and it was extremely laborious to get it properly running.
I was able to fix/improve TEXT import for arbitrary scales in Blender 2.49b.
The next step will be the DWG-to-DXF-converter.
CADtools script for Blender 2.49b: after hard weeks of tinkering on Bezier-curves in PURGE and OFFSET-tools I was succeded to complete it today! This functionality is very important for effective editing of 2d and 3d geometries driven by curves, e.g. for CNC manufacturing.
I am working now on a new algorithm for intersections and self-intersections in Bezier-curves to make the system more robust working with tools like TRIM and BREAK.

2014 June:
I am finishing the multiplatform support for DWG files in DXF-importer-PE. It seems to work quite well, no bugs found so far :)
A new DXF-importer based on "dxfgrabber" library is under development by Lukas Treyer! He has been working on it since December and with minimal support from me he was able to complete it quite well. We are going to use it as replacement for the official (very limited) importer for the next Blender release.
I am trying to improve DXF-r13 code compliance for DXF-exporter-PE, because of problems on some CAD systems.
I have added DWG export option and I am testing it now extensively on Linux and Windows.

2014 July:
I am improving CNC support in DXF-exporter-PE: CNC softwares do not import splines at all or convert it into countless tiny line segments. The workaround is to decompose splines to polyarcs (2D-POLYLINE) at export time.

2014 August:
I am working on improvements for DXF-importer-PE. I have added adaptive resolution method for approximated circles and arcs, and two additional options to control import of 2d and 3d entities. The new version 2.3.0 will be released with slightly modified UI.

2014 September and October:
I have started to convert Blender 2.49b source code from single precision to double precision floating point format. This will make Blender be able to handle CAD data with more precision. This is a massive refactory - allmost all routines in Blender will be affected.

2014 November and December:
Continuing rewritting the source code to double precision format. I encountered some structural issues with displaylist (openGL), but hope to be able to fix it.

2015 January and February:
Continuing work on double precision version.
I started to learn Mac-OSX and how to compile Blender 2.49b-CAD-edition with python 2.7, which should run out of the box on most recent OSX systems.

2015 March:
Trying to figure out how to build Blender for Mac-OSX.
Almost no progress with CADtools development, because of a lack of time.

2015 April and May:
Testing DXF-importer and exporter for incoming Blender 2.74.
Finalizing development of new intersection routine for Bezier-curves, which became really stable and fast.
CADtools 0.67 release with functionality improvements and bugfixes.
Setting up project wiki for collaborative documentation and bugtracking.
DXF-importer-PE: added support for DXF files containing big number (up to 100.000) of uniformly scaled BLOCK/INSERTs, for example for urban planning.

2015 June:
I am progressing with CADtools' dimensioning-system: existing screen-DIM-objects will get their real counterparts, that will be suitable for rendering and printing. The same time the number of new objects in the scene will be kept as small as possible.
DXF-exporter-PE for Blender 2.74: I have added layer dividing functionality.

2015 July:
Testing DXF-importer and DXF-exporter for incoming Blender 2.75a.
Spending many days on bugfixing across CADtools.

2015 August and September:
CADtools: finishing pre-processors for physical simulations (FEM, CFD) and manufacturing (CNC): Voxelizer and Tetrahedronizer.
Extensiv testing and bugfixing of recently added dimensioning functions.
DXF-exporter ver.2.2.8 brings numerous improvements:
- export TEXT-objects to DXF-TEXTs, POLYLINEs, POLYFACEs or 3DFACEs
- export SURFACE and META-objects to POLYFACEs or 3DFACEs
- generation of sections/waterlines from all object types, as 2D-POLYLINE-paths
2015 October:
DXF scripts bugfixing and regression tests for Blender 2.76.

2015 November:
Updated License Model: added annual Site License type for companies and corporations.
CADtools: improving Camera-Match routine.

2015 December:
CADtools: improving Camera-Match routine.

2016 January and February:
Continuing work on DXF scripts for Blender 2.7+: porting perspective-projection routine for exporter.

2016 March:
Some break because of family matters.
DXF scripts bugfixing and regression tests for Blender 2.77/py3.5.

2016 April and May:
DXF scripts regression tests for Blender 2.77a/py3.5.
Release of DXF-exporter ver.2.2.9 for Blender 2.7+, with successfully completed perspective-projection routine.
Prototyping better hidden-line-removal for DXF-exporter for Blender 2.49b.

2016 June and July:
Continuing work on hidden-line-removal for DXF-exporter for Blender 2.49b.

2016 August and September:
DXF scripts regression tests for Blender 2.78/py3.5.
Working on hidden-line-removal for DXF-exporter for Blender 2.49b.

2016 October and November:
DXF scripts regression tests for Blender 2.78a/py3.5.
CADtools: improving routines: CIRCLE, ARC and SKETCH. Completing UCS-align-to-object routine.

2016 December:
DXF-exporter-PE for Blender 2.7+: I am working on hidden-line-removal and support for dupli-objects. BTW, fixing a nasty bug in POLYLINE calculation took over two weeks.

2017 January, February and March:
Continuing work on hidden-line-removal for DXF-exporter.
2017 April and May:
Preparation for migration to incoming Blender 2.8.
Progressing with hidden-line-removal for DXF-exporter-PE.

2017 June and July:
DXF scripts bugfixing and regression tests for Blender 2.79/py3.5.3.

2017 August:
Significant progressing with hidden-line-removal for DXF-exporter-PE.

2017 September, October and November:
Hidden-line-removal development slows down because of concurrent projects.

2017 December:
I am working on SPLINE support for DXF-exporter-PE which is mostly a matter of writting r14-conform DXF code (all but trivial!)

2018 January and February:
Development slows down because of concurrent projects.
Released DXF-exporter-PE v.2.3.1 for Blender 2.79a, added OUTLINE-mode for exporting contours of 2d-mesh-objects.

2018 March:
Considerable improvements for CADtools' dimensioning-system.
Improvements for TEXT- and MTEXT-entities in DXF-importer-PE.

2018 April to October:
Development slows down because of concurrent projects.

2018 November and December:
Preparation of DXF-importer and DXF-exporter for incoming Blender 2.80.beta.

2019 January and February:
Continuing work on DXF-support for incoming Blender 2.80.beta.

2019 March and April:
Continuing work on SPLINE support for DXF-exporter-PE

2019 May till August:
Development slows down because of concurrent projects.

2019 September till December:
Continuing work on DXF-importer-PE and DXF-exporter-PE for Blender 2.80.

2020 January and February:
Development slows down because of concurrent projects.
Transition of DXF-importer and DXF-exporter to Blender 2.81.

2020 March:
Transition of DXF-importer and DXF-exporter to Blender 2.82a.

2020 April till July:
Transition of DXF-importer and DXF-exporter to Blender 2.83 LTS.
Working on Collection-support for DXF-importer and DXF-exporter,
though much slower because of concurrent projects.

2020 August till October:
Transition of DXF-importer and DXF-exporter to Blender 2.90.

2020 November till December:
Transition of DXF-importer and DXF-exporter to Blender 2.91.

2021 January and February:
Development slows down because of concurrent projects.

2021 March and April:
Completing support for BLOCK/INSERTs for DXF-importer and DXF-exporter.
Release of DXF-importer-PE for Blender 2.92.

2021 May and June:
Release of DXF-importer-PE and DXF-exporter-PE for Blender 2.93 LTS.

2021 July till November:
Development slows down because of concurrent projects.

(2021.11.20) to be continued

pic UI-layout vertical (ver.0.53)

pic UI-layout horizontal (ver.0.53)

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic ________

pic 2d engineering drawing in CAD-App before export to DXF file...

pic ...and in Blender 2.79a after import by DXF-importer-PE v.2.3.2

pic ________

pic ________

Copyright Remigiusz Fiedler, • Impressum