Cheapest CAD Software 2020


To be more precise, it’s almost 100% free (can we say 95% free). How it can be?

It’s because of the fact that this CAD is about twenty times cheaper than the other professional CAD tools.
Well, Auto CAD is the best in the class, but if you can buy a professional CAD for 1/20 of the price, open/edit CAD files (DWG, DXF), and if you can finish all the work, then why would anyone waste money unnecessarily.

BabaCAD supports all .DWG drawing files up to R 2020, so it’s 100% compatible with all other professional CAD software.

Go to the start page (, download the software and try it right now for free.
Draw a line, arc, circle, rectangle, polyline, or use modify tools and draw more complex objects like blocks, spline, hatch and so on.
Group objects using blocks, layers and choose from different line weights and line types.
Import blocks from huge library of blocks in DWG and DXF files that can be found on the internet.
At the end, draw dimensions, annotations, text, insert raster images and much more.

There are number of video tutorials on the home page, started from making a simple 2D floor plan in CAD, importing sketches, plotting in scale using layouts and much more.

If you want to start CAD modeling in 3D, there is 3D Enterprise version with the basic 3D solid modeling tools like Extrude, Fillet, Chamfer, Holes etc.
Enterprise version can be extended with your own commands and functions by programming BabaCAD .NET AddOn modules using VisualBasic or C# and .NET Components in Microsoft Visual Studio. Sample projects are included in the package.


How to draw a floor plan in CAD

A floor plan is a specific type of drawing. It shows you the layout of a home with dimensions and all other specific elements.

You can watch detailed video tutorial or you can read complete transcript below the video.

We are going to show you how to draw a simple floor plan in CAD.
We will use BabaCAD Home Edition CAD software, version 2020. Download link is below.

First, draw a rectangle object, with 6 meters width and 5 meters height. Type ‘@’ character (‘monkey’ or ‘at’ email symbol), to specify that we are entering relative or offset coordinates.

We will type ‘@’, then type ’6′, then ‘comma’, then type ’5′, and click enter to finish rectangle command.
Now, let’s draw rooms. I will make a floor plan with a hall, one dining room,kitchen and toilet. It should fit to overall floor dimension of 6 times 5 meters.
To draw room space, I will use line object. Click on the line command, and then specify desired length.
Enter the value, 4, then at 90 degrees, enter value of 3, so we will have living room sized 4 times 3 meters.
I will draw and other lines to finish wall paths.
Then, we can check the size of every room, and as we can see, we have living room of size 4 times 3 meters.
Then, kitchen has size of 2 times 3 meters, and later we will also draw a toilet with the length of 2.5 meters.
After we finished this, now we can use offset command, to draw walls.
But, before starting with offset, we will first join specific lines, so we can later use offset command to draw a walls.
To join lines, select two lines and use join command, and lines will be joined.
We must draw some lines again, following existing lines, and using snap on end-point feature.
Then, repeat join command again, and join lines which are left.
We need a toilet, so I will choose a length of 2.5 meters.
I have to draw a line with length of 0.5 using line command.
After that, start line and connect with the wall down below, using orthogonal snap feature.
Erase lines that are not needed. Just select, and type erase, or click on erase button in the menu.
We will get the space for the toilet, which size is 3 meters in width and 2.5 meters in length.
So, we’ve drawn basic stuff, and as you can see, it already getting some nice look of CAD floor plan.
There are few lines to join, as we need them joined to draw the walls.
Few lines a left to join.
Just select two lines, and type join command to join the lines.
If some line or other object can’t be selected, just modify objects draw order, using command, send to back.
After we join all these lines, we will have separate poly lines, and then I will show you how to use offset command, to draw walls with specific width.
We have prepared everything to switch to the next step.
That next step is drawing of walls, using offset command.
Command, offset, can be started by typing offset, in the command line, or by clicking on the menu button.
After we started offset command, we need to type offset value in the command line, and press the enter key.
After specifying offset value, we need to select the poly line object from which the offset line will be drawn.
Latest step in the offset command is to click on the side on which we want offset to be drawn.
We need to specify 0.075 as a offset value, because it’s half of the wall’s width.
We are almost done with drawing the walls.
I just need to prepare and join lines for the other walls.
As I couldn’t select poly line of living room, I must use send to back to get my poly line at the front, so I can then select it and use offset to draw the inner side of the wall.
All walls are drawn, except last one.
I have to send to back poly line in order to get poly line which I need to draw a last wall.
For the offset value, I will specify 0.075, as it’s half of the wall’s width.
I will again use offset command, and select poly line which divides living room from the kitchen.
At the end, after we finish with offset command, we will have all walls drawn.
We have to erase the lines that we don’t need anymore. Just select it, and use erase command.
For the last cleaning option, I will use command, trim. Trim command will help me to cut off lines inside the walls.
These short lines are parts of wall lines, so we cannot erase them using erase command.
Trim command can be started from menu or typing in the command line.
we must select edge objects for trim command, or as the best option, just presss enter or right mouse click to specify all objects in the drawing to be edge objects.
We got clean walls after erased unwanted line links, using trim command.
We could draw dimension annotations earlier, but it’s not too late to draw them now.
We could left out some lines, which will need to draw dimensions for our floor plan, but we can draw few lines quickly.
You will later see why we need those helper lines.
To draw dimension, we can use few types of dimension objects. For our floor plan, we need to use linear dimension.
Dimension commands can be found in Home menu, or in Annotations menu.
Start dimension command to draw a linear dimension, and to get annotations for every floor side.
We see that our dimensions looks too large.
This is not a problem, and we will solve this by modifying the dimension style.
In the dimension style window, we can create a new dimension style or edit existing one.
Change the dimension parameters to get desired dimension look. I will scale down values to get proper dimension size on the drawing.
After we set these values once, it will be saved with our drawing objects.
To apply changes, just close dimension style window. or press OK button.
One important thing.
We must to set the dimension style which we just created to be the default one or current style. Just open dimension style window, select floor-plan dimension style and press button, set current.
Now, I will draw a few linear dimensions on our floor plan, to annotate the size of every room on the plan, and also to get overview of whole plan size.
To repeat the last command, just right click mouse button and choose last command, or you can press space at the command line.
We will repeat dimension command few times to draw more dimensions.
I think our dimensions are still large, so dimension style parameters should be further reduced.
I will just open dimension style window again and modify dimension style parameters a little bit.

Here is the part two of floor plan tutorial:

This is the second part of our floor plan CAD tutorial.
In this part, I’ll show you how to insert some specific blocks, and use hatch command to mark the wall area.
You can see the floor plan drawing from the first part of our CAD video tutorial.
At the first step, I’ll browse for the blocks from external CAD file. It can be D-W-G or D-X-F file.
Go to the main menu, and in the view panel, click insert button, and then hit the enter key on keyboard, or click right mouse button, to show the insert block window.
As you can see, we don’ have any blocks currently.
I’ll click on browse button to find and the file with blocks.
Now, you see that we imported blocks to our drawing.
I’ll not insert any block now, just click cancel and press escape to finish insert command.

We will use the block explorer window for block insertion.
Block explorer can be opened from the menu. Go to view, then check the block explorer check box.
You can also show the block explorer window if you type in dynamic edit box or command line.
You see that we have all our imported blocks shown in the block explorer.
Here, we have all needed blocks, from living room blocks, then kitchen and bathroom blocks, and walls and doors also.
I will first draw two helper lines. I need these lines in order to get middle points of position where to insert the window block.
To insert the window block, double click on the block in the block explorer. Then, move the cursor and click somewhere in the drawing to insert the block.
We need to select the block in the drawing and move it by using the move command. Just select lower right corner as a base point to move the window to the middle of the living room wall.
Repeat all of this steps to insert the window to the right. Again, just insert the block and use move command to move the block to the right.
Now, let’s insert the window to the kitchen. As we have middle insertion point, I can immediately insert the window to the kitchen wall.

Here is the entrance door.
I’ll insert it to the entrance of the house, and I have to rotate it by 90 degrees. I’m using tracking feature to easy rotate it.
Now, just move the block to the position for the entrance door.
Also, we have a interior door block, which is a bit smaller than entrance door.
Double click to select the interior door block, and insert it in the drawing.
We have to mirror this block, as we need opposite door opening angle.
I’ll use mirror command. For the mirror command, we have to specify two points to identify mirroring axis.
Then, just move mirrored block to the position of entrance to the living room.
Another block will we be good for the kitchen.
I just need to rotate the block by 90 degrees and to move it to the entrance position.
Only one door is left. I’ll now insert door for the bathroom.
I have to mirror the bathroom door, and I’ll do that same way as I did it before.
Again, I have to use mirror command, in order to get the right orientation of the door.
Finally, move the door to the right position, and we have doors and windows on our floor plan.
One thing is left. I’ll use the trim command to cut off the line segments which are crossing the door blocks.
Click the trim button to start trim command. You must select edge objects for trimming, but I’ll hit enter to select all.
Now, I’ll just click on these unnecessary line segments to cut it off. Trim command is very useful.

Let’s use hatch command to mark the wall area.
After the start of hatch command, we see hatch creation menu.
I’ll select the pattern and input 0.03 for the scale value.
I turned off object snap and I’m clicking interior points inside the walls.
We hatched all walls.
Scale of the hatch pattern can be smaller. I’ll just decrease the scale value to 0.02.
To finish hatch, just click on the close button in the menu or press escape key.

I’ll now insert blocks for the living room.
I need bed sitter.
I’ll insert bed sitter block in the living room.
Also, before placing the tv, I’ll draw a table for the tv. To draw table, you can use rectangle object.
Now, go and insert the tv.
Then, I’m going to insert the kitchen blocks.
First, I’ll insert an oven. There is the oven block somewhere in block explorer.
We need to rotate the block by 90 degrees.
After rotate of the block, I’ll move the block to the lower right corner of the kitchen.
Near the oven, there is a double sink block. I’ll insert the sink block.
I have to rotate the sink same as the oven block.
Sink block must be near the oven. I’m just using end to point object snap to move the block precisely.
For the kitchen, it’s only left to insert the refrigerator block.
Insert the refrigerator.
Same as before, I’ll rotate the block and move it.
This time, as we don’t have end point, I’ll first move to the near point, and then using orthogonal object snap, I’ll move the block
where it has to be.
Let’s insert the toilet block down there.
I must rotate the block by 180 degrees. Simply, I will just type 180 in the command line for command, rotate.
One block is left in the block explorer. It’s sink block for the bathroom. Insert the sink block near the toilet block.
We can use rectangle command, to draw the shower cabin.
First, I will draw a rectangle using relative input. After specifying the first point for the rectangle, I will type
e-mail symbol @ (at). Then, type rectangle width and height.
I have to input the negative values because our x and y axes are in negative direction.
Also, we need to use offset command to draw the shower cabin.
At the end, I will draw two diagonal lines to mark the shower cabin.
Finally, our floor plan is finished and it’s ready for printing.
Thank you for watching this tutorial.
Please click on subscribe button in the lower right corner to subscribe to BabaCAD channel.

BabaCAD 2018 – much more than CAD

After over 6 years being freeware CAD software, here comes first commercial BabaCAD version, BabaCAD 2018 Home/Enterprise editions. Old versions are still available for download at many freeware download sites and of course, there are still free as in beer.

Older 32-bit freeware versions of BabaCAD will have no further updates and support for freeware versions ended by February 2018.

Main reason for users to upgrade to BabaCAD 2018 (Home or Enterprise) is .DWG compatibility. BabaCAD 2018 can open any AutoCAD .DWG drawing from R12 up to R2019 version. Only licensed users will have this feature enabled (trial version can’t open newer .DWG file versions).

There are many other features available in BabaCAD 2018. Linewidth in mm/inch/feets (use UNITS command to change units), custom line types (user can define any line type in babacad.lin config file in support folder). Construct circle with two/three points or between two tangents and radius specified. Autosave feature, few more modify tools and many bugs fixed since last version.

BabaCAD 2018 Enterprise now can be extended by programming in C# and using .NET Framework and it’s huge classes library. Code your own command in just few minutes and writing only few lines of code. Connect to cloud, web service or database using .NET built-in interfaces. You can use any Microsoft Visual Studio (even free community version) to develop your custom BabaCAD AddOn application (.DLL). Compile it and copy your .DLL to NetModules folder (name your .dll like BabaCADYourAppName.dll) and start BabaCAD. Your AddOn module will be automatically loaded at startup so you can start type and using your own CAD command.

Go to to download free time-unlimited trial.

Free CAD Software for Windows 10

BabaCAD 2017 is released on April 2th 2017. More advanced version of professional free CAD software which is now 64-bit with multi-document-interface with ribbon bar and optimized for Windows 10, but also works for other 64-bit Windows OS like Windows XP, Windows Vista, Windows 7, Windows 8 and Windows 8.1.

Improvements and features that are added in this version are:

* 64-bit version with MDI (multiple-document-interface)
* modern designed with ribbon bar and large buttons
* different line types loads from bcad.lin
* user can update bcad.lin with custom linetypes
* auto-save with recovery (default 5 min)
* type AUTOSAVEINTERVAL in command window to change
* dynamic input (can be turned off – statusbar)
* easy start commands with auto-complete input
* type line/polyline length/angle using DynInput
* grid lines (F7 or status bar to turn on/off)
* anti-aliased smooth rendering (LW)
* new objects like SPLINE, 3D POLYLINE, ELLIPSE…
* join polylines, break polyline, break spline
* new modify tools: array, mirror
* copy objects and blocks between multiple documents
* LISP enabled, use APPLOAD or update bcad.mnu to load lisps
* 3D ready version (3D Modeling coming soon) with 3D objects
* LINE, 3D POLYLINE, POINT are 3D objects in BabaCAD 2017
* update Z coordinate in Properties window
* use 3DORBIT or VIEW to navigate in 3D or projection planes
* image (raster) save is working now (saved with path ref.)

BabaCAD 2017  has everything that every professional CAD software must have. That means you can draw lines, polylines, points, point clouds, circle, ellipse, spline, hatch, block. You can insert annotations or dimensions using smart dimensioning, insert text, images and even georeferenced raster images (tif, geotiff).

Hatch and line types can be customized by editing bcad.pat and bcad.lin files or you can replace them with already prepared files from other CAD platform, as these are standard formatted files for hatch patterns and line types.

Dynamic input allows you to directly type length and angle when drawing line segments, and auto-complete helps you to type commands quickly with just typing command starting letters.

BabaCAD is compatible with AutoCAD and other commercial CAD software cause it’s native file format is DXF and it opens DWG also (dwg version < R2007).

Users can make and insert blocks using block explorer window, then there is capability of organize objects in layers, change colors, line types…

BabaCAD 2017 has LISP interpreter included, so users can load .lsp (AutoLISP) scripts to run user defined commands and functions. There are some LISP examples included for beginners to see how it’s easy to automate some drafting tasks very easy using LISP programming.

Users can develop their own functions using BabaCAD API for .bem (BabaCAD extension modules). BabaCAD API is included in installation (header and lib files can be found in API folder under the installation folder).

BabaCAD – CAD Software for Mac OS X

Apple Mac version of BabaCAD is released on Mac App Store on Dec-21. It’s professional CAD (computer-aided-design) developed as native 64-bit Mac OS X application. Multiple drawings interface, DXF file format (dwg will be available later in version update). Draw line, polyline (with bulge segments), arc, ellipse, circle, hatch with number of patterns included. Make and insert block, insert and save images of popular image formats as png, jpg, gif, tif. Export drawing to image or pdf document. Plot from layouts with multiple viewports available.

BabaCAD for Mac version has a LISP scripting enabled. Just run APPLOAD command (or find in menu) and load your favourite lisp (.lsp) program. Then just type lisp function name to start using lisp function.

To plot in scale, click “Page setup” in File menu, then choose “BabaCAD” from “Settings” list box. Plot setup dialog will appear where you can choose plot units (mm or inch) and specify plot scale.

Object tracking and snap is enabled by default. Move cursor pointer across end-points or specific object to see snap markers (end-point, nearest , intersection, perpendicular) and tracking lines (horizontal ,vertical, extension….).

You can also insert images into your drawing. Click on image insert icon and choose image from dialog. Then, specify insert point and scale factor to insert image in the drawing. Images will be saved among all other geometry objects and blocks.

As every professional CAD application, BabaCAD for Mac comes with support for inserting text, block, hatch, formatting layers, dimensioning (linear, aligned, angular, radius, diameter), modify tools including trim, extend, array, mirror, duplicate, block explode etc.

BabaCAD for Mac page link:

Lesson for CAD beginners

In this article, I’m going to teach you about  how to use basic BabaCAD drawing features.
To delete BabaCAD text objects, use right to left selection mode, and then choose delete from right mouse click menu.

Ok, let me explain how to draw a line object.

To start drawing a line object, just click on line icon on the left toolbar, or type line, in the command window at the bottom. Click with left mouse button in work space to insert first point of the line. Next, specify second point and press Escape key or click with right mouse button to finish the line. To finish any command, you can press escape key or click right mouse button and choose an option from menu window. I prefer to press escape key to finish a command.

Move pointer around the line and click with left mouse button to select the line object. You can select object using left to right and right to left smart selection methods also.
If you click left mouse button and move mouse to the right and click again, all objects inside the rectangular selection area would be selected.

If object is selected, it’s grip points would be shown. For a line object, we have a two end points, and one middle point. We can move pointer close to grip point, and we will notice how it will snap to exact point location. Look down to the left corner of application window, and you will see precise coordinates of snapped grip point.

How to draw other primitive objects, like circle and arc?

Click on circle icon in the drawing toolbar to draw a circle. You will be prompted to specify the center of circle object. We can enter the precise coordinates in the command window, or we can just specify point by clicking in work space. For example, we can enter the 18.25 for x, and 11.2 for Y coordinate. You must press enter on the end to finish the input. Now, we need to specify the circle radius. I will enter the value of 10.

Move around circle and click with left mouse button to select the circle object.
You can see the grip points of our circle object. We have a four quadrant points and one center grip point of the circle.

If you want to modify the radius of the circle, click on any quadrant point and move pointer to adjust the radius. Also, we can modify any object’s parameters in the property window, which is located at the left.

We can also move any object by using a command move, or for some objects we can just click on specific grip point and move the object to another location.
For circle object, click on center grip point and move the circle to a new location.
If we want to move it to exact coordinates of a new location, we can change the center property in the properties window, or we can use a command move.
Click on move icon in the modify toolbar on the right. Next, select the object that you want to move, and type exact coordinates to move object to.

To deselect objects, press escape key on keyboard, or click right mouse button and choose deselect.

To move workspace around, press and hold scroll mouse button, and move mouse around. This is also called a pan command.
If you have mouse with just two buttons, then you can click on pan icon on the top to pan around.

To zoom in and out, just use your scroll wheel, moving up and down. For two buttons mouse, use zoom commands from zoom toolbar or type zoom or just z in the command window.

To get all drawing objects on your workspace, use command zoom extent. Click on zoom extent icon, or choose from right click menu.

Let’s draw an arc object. Click on arc icon in the drawing toolbar or type arc in the command window.

Look at the command window. We are prompted to specify start point of the arc or we have option to specify center of the arc. We can see options closed in brackets.
I will choose to draw from start point, so I’m going to specify start point. Next, we have to specify second point of the arc. To finish, I will specify the end point of the arc.

We can select and modify the arc object as any other object. Click to select, then pick a grip point and move to change a shape of arc object.

BabaCAD as a new target for developers

There is a new section at BabaCAD homepage, Developers section:

You can visit Developers section to learn how to write your own extension modules for BabaCAD (.bem). It’s very easy to share .bem modules between users, as .bem files just have to be copied to BabaCAD/ExtensionModules folder (BabaCAD install folder is in \Program Files\BabaCAD directory). BabaCAD application will automatically load all .bem modules from this folder at the start time.

LISP module, which is the first developed .bem module for BabaCAD, shows many features programmed to extend functionality of BabaCAD software. Microsoft Visual Studio 2010 is only requirement to start programming applications for BabaCAD. BabaCAD v1.3 installs include headers and lib files of BabaCAD Extension API. It can be found in \Program Files\BabaCAD\BabaCAD\API directory.

Read Developers section and you will find example of SLOPE command inside Civil Tools extension for BabaCAD. Full visual studio c++ project (.sln) is there (in zip file). I recommend everyone to use this as a template for theirs new .bem projects. There is necessary entrypoint function of extension API and also some other API functions (for example AddCommand function adds new command to BabaCAD runtime).

I will try to add more examples. Also, I will add a new topic at BabaCAD forum for developers to ask questions and submit comments.




Update your CAD after Windows XP end of support date (April 8th)

Maybe some of you didn’t realize important fact that older versions of the most used AutoCAD drafting software like AutoCAD 2000, 2002, 2004, 2006 can’t run on Windows 7 nor Windows 8. Companies with large CAD seats would have large expenses to update their CAD software to newer versions after Windows XP end of support on April 8th. You don’t have to buy newer versions of CAD software, like AutoCAD 2014 or verticals (Autodesk Map, Civil 3D…) to migrate to  Windows 7 or Windows 8. BabaCAD is one of the best alternatives to AutoCAD LT as it’s free, supports LISP routines, fast download and run (less than 3 Mb installation). You can download BabaCAD 1.3 free and there is also good support on BabaCAD official website . There is also 3D and online web versions in development phase, so check for updates and stay tuned.

You can find video tutorials about BabaCAD at or you can visit online help pages at

BabaCADW – Web Online CAD Project Started

BabaCADW is a project of porting one of the best freeware CAD to online web application. It’s in developing phase and I hope that Mac and Linux users will enjoy it just like windows users did. You can watch the progress of development phase every day online at and you can also donate to support project by filling contact form. BabaCADW is programmed in Java and there are some settings which has to be maintained in order to run BabaCADW as Java applet in web browser. In windows, go to “Control Panel” and find Java icon. Open it and go to Security tab. There you will see Exception Site list. Click “Edit list” and add and After doing this, there will be no problem to start BabaCADW in any web browser. I recommend to use Firefox, especially for Mac OS X users. Safari on Mac has some bugs with Java applets and mouse wheel functionality, so you can not use zoom with middle mouse button. Windows and Linux users should not have a problem with any web browser (IE, Google Chrome, Firefox….). Till today, only LINE command is implemented to test command-line and rendering functions. All other commands will be implemented later, cause it’s most important to finish app logic and then other functions will be implemented faster.

LISP Enabled CAD — And So What?

First ask yourself why other commercial CAD software like AutoCAD, DraftSight and others, have no customization capabilities for free. LISP (AutoLISP in AutoCAD) is one of the most powerful customization features found in AutoCAD. But only one problem is that AutoLISP is not available in AutoCAD LT (lite low-price version of full AutoCAD). Every neighbourhood has a LISP programmer cause LISP is one of the oldest programming languages and it’s very easy to learn. Even non-programmer can learn to write LISP routines to automate and speed up his CAD work. If you don’t know how to write lisp function then you can find millions of lisp routines on internet for free.

BabaCAD was among the first to have LISP programming support. It’s also AutoCAD AutoLISP compatible in most cases. LISP is available as AddOn/Extension module and you can download latest updated version on

I found that I’ve forgot to include option of changing layer for multiple selected objects in last BabaCAD release 1.3. I will fix this in next BabaCAD release, but I will give here temporaray solution using LISP. Just copy this lisp function to chlayer.lsp (open notepad and copy/paste and save as CHLAYER.LSP). You can set lsp file to automatically load on startup or manually load using command APPLOAD. You can even assign your custom icon and toolbar to your LISP command by editing bcad.mnu file in BabaCAD/Support folder.

(defun c:chlayer (/ lyr ss en ind)
 (setq lyr (getstring “Type existing layer name to change to: “))
 (setq ss (ssget))
 (setq ind 0)
 (while (setq en (entget (ssname ss ind)))
  (setq en (subst (cons 8 lyr) (assoc 8 en) en))
  (entmod en)
  (setq ind (+ ind 1))
(princ “chlayer.lsp by Mirza Coralic. Type chlayer to change object’s layer.”)