Building a new version of FreeCAD and OpenCASCADE is always a lot of fun…
These two projects are constantly evolving, but almost never ‘in sync’.
In December a new version of the OpenCASCADE library was released – 6.5.2. It solves several bugs and looked like a good reason to build a newer version of FreeCAD in the process. And this is where the fun begins!
Building OpenCASCADE
Building the new version of OpenCASCADE was straightforward. I just needed to update the patch to get it to build with SlackBuilds.org’s version of ftgl and test my patience – as it takes more than two hours to build on my Virtual machine. But after some fiddling around, I had a package.
Time to do some testing and trying to build FreeCAD against it!
Building FreeCAD
I decided to try the latest “stable” version of FreeCAD – 0.12.5284. The FreeCAD developers have not created any new source tarballs for a while, so I had to get the SVN revision 5284. I uploaded the tarball I created from that revision to my site so that everyone can create the same stable version.
I soon noticed that they solved all the problems I had with building against OpenCASCADE 6.5.1 some time ago, so I was able to remove that patch.
But then I ran against a new problem:
error: no matching function for call to 'BRepBuilderAPI_MakeFace::BRepBuilderAPI_MakeFace(Handle_Geom_Plane&, double, double&, double, double&)'
Reading the release notes of 6.5.2 I found out that the BRepBuilderAPI_MakeFace function now needs an extra parameter:
BRepLib_MakeFace has been modified to accept tolerance value for resolution of degenerated
edges. This tolerance parameter has no default value (to ensure that the client code takes care of
passing some meaningful value, not just Precision::Confusion), so some porting overheads
are expected.
So, it doesn’t have a default value. But what was the default before?
I read through the documentation and found that previously the default was Precision::Confusion()
:
A default tolerance (Precision::Confusion()) is given to the face,
this tolerance may be increased during construction of the face
using various algorithms.
I tried to add this default to the function call and … it worked!
Trying to compile the rest of FreeCAD I found several other locations in the source with the same problem, resulting in this patch:
--- FreeCAD-0.12.5284/src/Mod/Part/App/AppPartPy.cpp 2012-01-02 16:32:09.000000000 -0200 +++ FreeCAD-0.12.5284_patched/src/Mod/Part/App/AppPartPy.cpp 2012-01-02 21:36:18.000000000 -0200 @@ -492,7 +492,7 @@ d.SetCoord(vec.x, vec.y, vec.z); } Handle_Geom_Plane aPlane = new Geom_Plane(p, d); - BRepBuilderAPI_MakeFace Face(aPlane, 0.0, length, 0.0, width); + BRepBuilderAPI_MakeFace Face(aPlane, 0.0, length, 0.0, width, Precision::Confusion()); return new TopoShapeFacePy(new TopoShape((Face.Face()))); } catch (Standard_DomainError) { --- FreeCAD-0.12.5284/src/Mod/Part/App/GeometrySurfacePyImp.cpp 2012-01-02 16:32:09.000000000 -0200 +++ FreeCAD-0.12.5284_patched/src/Mod/Part/App/GeometrySurfacePyImp.cpp 2012-01-02 22:08:47.000000000 -0200 @@ -79,7 +79,7 @@ s->Bounds(u1,u2,v1,v2); if (!PyArg_ParseTuple(args, "|dddd", &u1,&u2,&v1,&v2)) return 0; - BRepBuilderAPI_MakeFace mkBuilder(s, u1, u2, v1, v2); + BRepBuilderAPI_MakeFace mkBuilder(s, u1, u2, v1, v2, Precision::Confusion()); TopoDS_Shape sh = mkBuilder.Shape(); return new TopoShapeFacePy(new TopoShape(sh)); } --- FreeCAD-0.12.5284/src/Mod/Part/App/Geometry.cpp 2012-01-02 16:32:09.000000000 -0200 +++ FreeCAD-0.12.5284_patched/src/Mod/Part/App/Geometry.cpp 2012-01-02 22:37:08.000000000 -0200 @@ -1252,7 +1252,7 @@ Handle_Geom_Surface s = Handle_Geom_Surface::DownCast(handle()); Standard_Real u1,u2,v1,v2; s->Bounds(u1,u2,v1,v2); - BRepBuilderAPI_MakeFace mkBuilder(s, u1, u2, v1, v2); + BRepBuilderAPI_MakeFace mkBuilder(s, u1, u2, v1, v2, Precision::Confusion()); return mkBuilder.Shape(); } --- FreeCAD-0.12.5284/src/Mod/Part/App/PrimitiveFeature.cpp 2012-01-02 16:32:09.000000000 -0200 +++ FreeCAD-0.12.5284_patched/src/Mod/Part/App/PrimitiveFeature.cpp 2012-01-02 22:40:21.000000000 -0200 @@ -191,7 +191,7 @@ gp_Pnt pnt(0.0,0.0,0.0); gp_Dir dir(0.0,0.0,1.0); Handle_Geom_Plane aPlane = new Geom_Plane(pnt, dir); - BRepBuilderAPI_MakeFace mkFace(aPlane, 0.0, L, 0.0, W); + BRepBuilderAPI_MakeFace mkFace(aPlane, 0.0, L, 0.0, W, Precision::Confusion()); const char *error=0; switch (mkFace.Error()) --- FreeCAD-0.12.5284/src/Mod/Part/App/TopoShape.cpp 2012-01-02 16:32:09.000000000 -0200 +++ FreeCAD-0.12.5284_patched/src/Mod/Part/App/TopoShape.cpp 2012-01-03 00:19:12.000000000 -0200 @@ -1338,7 +1338,7 @@ double u1,u2,v1,v2; surf->Bounds(u1,u2,v1,v2); - BRepBuilderAPI_MakeFace mkBuilder(surf, umin, umax, v1, v2); + BRepBuilderAPI_MakeFace mkBuilder(surf, umin, umax, v1, v2, Precision::Confusion()); return mkBuilder.Face(); } @@ -1391,7 +1391,7 @@ Standard_Real u1,u2,v1,v2; mySurface->Bounds(u1,u2,v1,v2); - BRepBuilderAPI_MakeFace mkBuilder(mySurface, u1, u2, v1, v2); + BRepBuilderAPI_MakeFace mkBuilder(mySurface, u1, u2, v1, v2, Precision::Confusion()); return mkBuilder.Shape(); } @@ -1443,7 +1443,7 @@ mkSweep.Perform(tol, Standard_False, GeomAbs_C1, BSplCLib::MaxDegree(), 1000); const Handle_Geom_Surface& surf = mkSweep.Surface(); - BRepBuilderAPI_MakeFace mkBuilder(surf, umin, umax, vmin, vmax); + BRepBuilderAPI_MakeFace mkBuilder(surf, umin, umax, vmin, vmax, Precision::Confusion()); return mkBuilder.Face(); } --- FreeCAD-0.12.5284/src/Mod/Part/App/TopoShapeFacePyImp.cpp 2012-01-02 16:32:09.000000000 -0200 +++ FreeCAD-0.12.5284_patched/src/Mod/Part/App/TopoShapeFacePyImp.cpp 2012-01-03 00:24:40.000000000 -0200 @@ -135,7 +135,7 @@ return -1; } - BRepBuilderAPI_MakeFace mkFace(S); + BRepBuilderAPI_MakeFace mkFace(S, Precision::Confusion()); if (bound) { Py::List list(bound); for (Py::List::iterator it = list.begin(); it != list.end(); ++it) {
With this patch I was able to build FreeCAD successfully on Slackware and now I’m happy playing around with it, discovering the new features
Where to get it
I submitted the new scripts to SlackBuilds.org, where they are waiting in the pending queue to be approved.
In the mean time, pre-built packages for Slackware (both 32- and 64-bits) can be downloaded from my site.

This weekend I finally had some time to update my SlackBuild script and submit the update to SlackBuilds.org. While the script is waiting for approval, you can download pre-built packages from my site.
]]> http://underpop.online.fr/n/nielshorn/2011/12/brlcad-7-20-4-packages-available-for-slackware/feed/ 0 http://underpop.online.fr/n/nielshorn/2011/08/freecad-opencascade-and-pivy-updated-slackware-packages-available/ http://underpop.online.fr/n/nielshorn/2011/08/freecad-opencascade-and-pivy-updated-slackware-packages-available/#comments Sun, 14 Aug 2011 04:33:02 +0000 Niels Horn http://underpop.online.fr/n/nielshorn/?p=1099 Updating FreeCAD was long over due – the last package I built was for 0.9.2646 and they’re currently in the 0.11 series. But it is not a simple package to build – it requires some time and patience to get it all right…
Dependencies
FreeCAD is based on OpenCASCADE, which has been updated a few times since the last time I built a package for it. FreeCAD also depends on a few other libraries: Pivy, SoQt, Coin and xerxes-c. Of these, Pivy also needed an update, so I started with this one.
Updating Pivy
This update was simple. I just got the latest “tag” from the Mercurial repository (there are no tarballs for Pivy) and cleaned up the SlackBuild a bit. Pivy needs Coin and SoQt to build. It takes some time to build, but all went fine.
The updated script was submitted and the new packages were uploaded. I also put a tarball with the snapshot from the Mercurial repository on my site, to make it easier to build and to guarantee that the correct version is used.
OpenCASCADE
OpenCASCADE has never been a simple package to compile. It is huge (sources are > 200MB) and takes some time to build (two hours on my desktop). And worst: it never builds the first time without errors
First it gave some of those dreaded “not declared in this scope” errors.
These errors are caused by stricter checking in the newer gcc versions (actually since 4.3, and Slackware 13.37 is already on 4.5). As usual, they were easily fixed with a small patch putting an extra “include” in the source code.
This is the patch:
--- OpenCASCADE-6.5.1/ros/src/OSD/OSD_MAllocHook.cxx 2011-05-19 08:24:52.000000000 -0300 +++ OpenCASCADE-6.5.1_patched/ros/src/OSD/OSD_MAllocHook.cxx 2011-08-10 12:39:39.000000000 -0300 @@ -10,6 +10,7 @@ #define __STDC_LIMIT_MACROS #endif #include <stdint.h> +#include <stdlib.h> #endif #include <set>
But that was not all. I soon discovered (after compilation complaining that FTFont.h
was missing) that OpenCASCADE now depends on ftgl. Well, that should have been simple to resolve, as there is a ftgl SlackBuild on SlackBuilds.org.
OK, not that simple – it did not work.
Researching a bit on the internet, I found that they used an older version of ftgl, but the guys from OpenSUSE had already written a patch to solve this and can be found here.
After this, I was able to successfully build OpenCASCADE 6.5.1
I just added one thing to the SlackBuild – an option to include all the documentation. Most of it is available online and only interesting if your writing your own programs based on OpenCASCADE, not for users of FreeCAD for example. And we’re talking about 600MB of documentation…
So, the new script was also submitted and the pre-built packages uploaded.
Finally, FreeCAD
OK, so now I could start building FreeCAD, having all the dependencies ready on my machine!
The old problem with the boost libraries continued in the 0.11.3729 sources, to my surprise, but I substituted the original patch with a sed command, to make it easier to maintain:
sed -i "/-lboost/s/-mt\"/\"/g" configure
And two new problems appeared: the name of a function in OpenCASCADE had changed in 6.5.0 and a code for an error condition (according to OpenCASCADE never used) was removed.
I managed to write a small patch to get FreeCAD to compile with OpenCASCADE 6.5.0:
--- FreeCAD-0.11.3729/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp 2010-10-17 05:59:46.000000000 -0200 +++ FreeCAD-0.11.3729_patched/src/3rdParty/salomesmesh/src/SMESH/SMESH_MeshEditor.cpp 2011-08-10 20:04:59.000000000 -0300 @@ -2205,8 +2205,8 @@ if ( projector.IsDone() ) { double u, v, minVal = DBL_MAX; for ( int i = projector.NbExt(); i > 0; i-- ) - if ( projector.Value( i ) < minVal ) { - minVal = projector.Value( i ); + if ( projector.SquareDistance( i ) < minVal ) { + minVal = projector.SquareDistance( i ); projector.Point( i ).Parameter( u, v ); } result.SetCoord( u, v ); --- FreeCAD-0.11.3729/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp 2010-10-17 05:59:46.000000000 -0200 +++ FreeCAD-0.11.3729_patched/src/3rdParty/salomesmesh/src/SMESH/SMESH_Pattern.cpp 2011-08-10 20:06:21.000000000 -0300 @@ -436,8 +436,8 @@ } double u, v, minVal = DBL_MAX; for ( int i = theProjectorPS.NbExt(); i > 0; i-- ) - if ( theProjectorPS.Value( i ) < minVal ) { - minVal = theProjectorPS.Value( i ); + if ( theProjectorPS.SquareDistance( i ) < minVal ) { + minVal = theProjectorPS.SquareDistance( i ); theProjectorPS.Point( i ).Parameter( u, v ); } return gp_XY( u, v ); --- FreeCAD-0.11.3729/src/Mod/Part/App/PrimitiveFeature.cpp 2010-08-27 11:22:14.000000000 -0300 +++ FreeCAD-0.11.3729_patched/src/Mod/Part/App/PrimitiveFeature.cpp 2011-08-10 20:41:35.000000000 -0300 @@ -141,9 +141,6 @@ case BRepBuilderAPI_ParametersOutOfRange: error = "parameters out of range"; break; - case BRepBuilderAPI_SurfaceNotC2: - error = "surface not C2"; - break; default: error = "unknown error"; break; --- FreeCAD-0.11.3729/src/Mod/Part/App/TopoShape.cpp 2010-11-14 06:53:08.000000000 -0200 +++ FreeCAD-0.11.3729_patched/src/Mod/Part/App/TopoShape.cpp 2011-08-10 20:43:03.000000000 -0300 @@ -139,8 +139,6 @@ return "Curve projection failed"; case BRepBuilderAPI_ParametersOutOfRange: return "Parameters out of range"; - case BRepBuilderAPI_SurfaceNotC2: - return "Surface not C2-continous"; default: return "Unknown creation error"; }
With this, I successfully build FreeCAD 0.11.3729 on Slackware!
Extra package
OpenCASCADE now has an optional dependency called gl2ps so I built a package for this as well.
Doing so, I needed to write a small patch to put the libraries in the correct /usr/lib64 directory on Slackware64:
--- gl2ps-1.3.5-source/CMakeLists.txt 2009-10-16 16:14:07.000000000 -0300 +++ gl2ps-1.3.5-source_patched/CMakeLists.txt 2011-08-10 17:24:43.000000000 -0300 @@ -113,7 +113,7 @@ set_target_properties(shared PROPERTIES COMPILE_FLAGS "-DGL2PSDLL -DGL2PSDLL_EXPORTS") endif(MSVC) - install(TARGETS lib shared DESTINATION lib) + install(TARGETS lib shared DESTINATION lib${LIB_SUFFIX}) endif(OPENGL_FOUND) if(WIN32)
Where to get it
All scripts have been submitted to SlackBuilds.org.
If you don’t feel like spending about three hours building packages, you can get them ready-to-install from my site.
BRL-CAD now has a working version of Archer, user-friendly interface to mged.
viewvc 1.1.10 fixes some bugs.
The new packages can be found on my site.
]]> http://underpop.online.fr/n/nielshorn/2011/03/updated-slackware-packages-for-brl-cad-and-viewvc/feed/ 0 http://underpop.online.fr/n/nielshorn/2010/05/slackware-packages-page-updated/ http://underpop.online.fr/n/nielshorn/2010/05/slackware-packages-page-updated/#comments Tue, 18 May 2010 01:21:53 +0000 Niels Horn http://underpop.online.fr/n/nielshorn/?p=406 In preparation for the upcoming release of Slackware 13.1, I reorganized my package repository and took a moment to clean up my Slackware Packages page.It is like 99% automated now, getting the descriptions from the slack-desc files, the category from the SlackBuilds repository (after approval), etc. Some categories I still add manually through a small text file.
I also included an md5 checksum and a gpg signature for each file. My public gpg key can be found here on my site, or automatically imported with the gpg --search-keys
command.
Recently my FreeCAD and brlcad SlackBuilds were approved. I’ll move them in my local repository to the new directory and (if my scripts work correctly) they should automatically move on the packages page at the next rsync run
BRL-CAD is an open-source solid modeling program originally created by the US Army Ballistic Research Laboratory, that later became the Army Research Laboratory. One of the original creators was Mike Muuss, who also invented the program that has probably been installed on more computers than anything else: the ‘ping’ utility. (Do check the source code for ping.c and you’ll find his name there as the author in December, 1983…)
BRL-CAD is described on its homepage like this:
BRL-CAD is a powerful cross-platform Open Source combinatorial Constructive Solid Geometry (CSG) solid modeling system that includes interactive 3D solid geometry editing, high-performance ray-tracing support for rendering and geometric analysis, network-distributed framebuffer support, image and signal-processing tools, path-tracing and photon mapping support for realistic image synthesis, a system performance analysis benchmark suite, an embedded scripting interface, and libraries for robust high-performance geometric representation and analysis.
As the description says, it includes a ray-tracing module to create good-looking images of your designs.
Building on Slackware
I found a SlackBuild script for BRL-CAD for Slackware 12.2 on SlackBuilds.org but I had to change a few things to get it working.
First of all, the base directory (’<prefix>’) had to be changed to /opt/brlcad, as /usr caused some conflicts with existing libraries and man-pages. This was simple enough.
I also needed to write two patches: one to build it on 13.0, as it stumbled on a bug in gcc 4.3.3, and another to get it working on -current, because of the new libpng library that introduces some incompatibilities. This is the fun part of writing SlackBuilds
In the end, I included a .desktop file to include BRL-CAD in the menu, and two small scripts in /etc/profile.d/ to include the directory with the BRL-CAD binaries in the PATH variable.
The resulting SlackBuild script has been submitted and is currently awaiting approval.
My experience
BRL-CAD includes a “Geometry Editor” called ‘mged’ that is command-line based, and a GUI interface called ‘archer’. The latter is still under heavy development and did not work for me, neither on the stable Salckware 13.0, nor on -current. The svn repository has a modified version, but I wanted to stick to a stable release for now. Maybe the next version will work better.
But all documentation and tutorials are based on mged, so I was fine with this for now.
mged opens two windows: the “Command Window” and the “Graphics Window”.
The first tutorial shows how to create a simple mug in a few commands:
opendb mug.g title MGED Tutorial Geometry units in in outside.s rcc 0 0 0 0 0 3.5 1.75 in inside.s rcc 0 0 0.25 0 0 3.5 1.5 in ring.s eto 0 2.5 1.75 1 0 0 1.45 .6 0 0 0.2 comb cup.c u outside.s - inside.s comb handle.c u ring.s - outside.s r mug.r u cup.c u handle.c ae 35 25
Basically, what we do here is:
- Create a new geometry database file called “mug.g”
- Set the title
- Set the units to inches
- Create an “outside” and “inside” cylinder section
- Create a elliptical torus (”eto”) section called ring.s
- Create the combination called cup.c subtracting the inside cylinder from the outside
- Create the combination called handle.c subtracting the outside section from the ring section
- Create the region called mug.r as a union of the cup and the handle
- Show the result from an angle of 35 / 25 degrees
Now let’s do our first ray-tracing, with a few extra commands:
mater mug.r plastic 32 128 32 0 Z draw mug.r rt
These commands:
- Set the material of our mug to “plastic”, colored green (RGB 32 / 128 / 32)
- Zero the graphics window
- Redraw the mug
- Ray-Trace it
And this should be the result:
As an example of the possibilities, here is a slightly more complex model:
Or something more impressive:
These examples really only touch the surface of the possibilities that BRL-CAD has to offer. This CAD & modeling program has been in continuous development for over twenty years, and has a lot to offer – and completely for free.
Positive points:
- A very solid and stable program, after more than 20 years of development
- Includes ray-tracing module
- Very complete documentation (reference cards, man-pages, tutorials, HTML), with several parts translated into Spanish
Negative points:
- “Different”, command-line based interface, might not be for everyone
Links
- Homepage
- Image gallery
- SlackBuild (pending approval)
- Packages for 32 & 64-bits Slackware 13.0
The second CAD program I decided to test on Slackware was FreeCAD. As the name implies, this one is completely free, which interested me
The description on their homepage describes the idea and purpose of this program:
FreeCAD is a general purpose 3D CAD modeler. The development is completely Open Source (GPL & LGPL License). FreeCAD is aimed directly at mechanical engineering and product design but also fits in a wider range of uses around engineering, such as architecture or other engineering specialties.
FreeCAD features tools similar to Catia, SolidWorks or Solid Edge, and therefore also falls into the category of MCAD, PLM, CAx and CAE. It will be a feature based parametric modeler with a modular software architecture which makes it easy to provide additional functionality without modifying the core system.
Building on Slackware
Building FreeCAD on Slackware was quite a challenge. It needs several dependencies, and not all were readily available:
- xerces-c was available on SlackBuilds (this one was easy)
- Coin, Pivy and SoQt were only available in older versions for Slackware 12.2, so I had to update their SlackBuilds (already submitted and approved)
- OpenCASCADE was not available at all, and was a challenge to build on Slackware by itself. It takes quite a few hours (and several gigabytes of space!) to build it even on a modern machine, so – if you prefer – get a pre-compiled package from the link at the end of this post
After building all the dependencies, it was time to build the actual FreeCAD package.
The biggest challenge was figuring out the correct “./configure” switches for it to find the needed libraries and include files, but after that it built without mentionable difficulties.
For those using “-current” versions (as opposed to the stable 13.0 versions) of Slackware, a patch to the acinclude.m4 file to use the newer boost libraries is needed.
My experience
A pleasant surprise was that FreeCAD starts with a splash screen with a “tip-of-the-day” and after that shows a page with links to where you can get more help:
There is a wiki available of the homepage of FreeCAD, with some basic tutorials.
I tried a very basic design, combining a box and a cone and creating some fillets:
Then I downloaded a somewhat more complicated design from the OpenCASCADE gallery to see what it looks like in FreeCAD:
Positive points:
- Completely Free, Open Source
- Based on the very stable OpenCASCADE framework
Negative points:
- Designed for 3D modeling, not so much for 2D designs
- Still a work-in-progress. It simply does not have that “complete” feeling yet
- Has quite a few dependencies to build or install it
Links
]]> http://underpop.online.fr/n/nielshorn/2010/05/cad-programs-on-slackware-%e2%80%93-3-%e2%80%93-freecad/feed/ 0 http://underpop.online.fr/n/nielshorn/2010/05/cad-programs-on-slackware-%e2%80%93-2-varicad/ http://underpop.online.fr/n/nielshorn/2010/05/cad-programs-on-slackware-%e2%80%93-2-varicad/#comments Sat, 01 May 2010 23:46:43 +0000 Niels Horn http://underpop.online.fr/n/nielshorn/?p=311 IntroductionAs I wrote in my previous post, looking for a CAD program that runs on Slackware, I decided to check out VariCAD. VariCAD is proprietary software (which means you have to buy it to use it), but they have a fully working Linux version. According to its homepage:
VariCAD is a 3D/2D CAD system for mechanical engineering. In addition to standard tools for 3D modeling and 2D drafting, the CAD system provides support for parameters and geometric constraints, tools for shells, pipelines, sheet metal unbending and crash tests, assembly support, libraries of standard mechanical parts (ANSI, DIN) and symbols, mechanical part calculations and tools for working with bills of materials (BOM) and title blocks. VariCAD supports STEP, STL, IGES, DWG and DXF file formats.
Especially the part about the several formats it supports interested me, so I wanted to get it working on Slackware.
Building on Slackware
VariCAD is not “open” software, so there is no compiling involved. It comes in either the RPM or DEB format as packages to be installed on Red Hat or Debian or look-alikes. There was no pre-built Slackware package, so I decided to write a small SlackBuild script to transform the RPM package into a Slackware package.
VariCAD offers both 32- & 64-bits versions so take care to download the correct file for your architecture. The downloaded version can be installed and used for 30 days. After this period – if you like the program and want to continue using it – you will have to buy a valid license. There is no need to reinstall the program and your designs will not be lost, you just will need to enter the license-key.
Creating the SlackBuild was quite straight-forward and I managed to submit it to SlackBuilds.org in just a couple of hours. It can be downloaded here.
Basically it unpacks the RPM, puts the documentation, desktop- and icon-file in the standard Slackware location. It also corrects the permissions on the directory where the license key will be stored, so that you do not need to run VariCAD (and X) as root to enable the program.
My experience
VariCAD comes with a complete tutorial which teaches all the basic steps to create a three-dimensional model, either starting with a two-dimensional drawing or directly in 3D-mode. The steps are easy to follow, even for someone not used to CAD programs (like me).
This is a screenshot from VariCAD in action:
From this example I created the 2D drawings:
And here is an image of a 3D model I created with VariCAD:
Conclusion
Positive points:
- Very complete, professional package
- Both 2D & 3D drawing and modelling
- Easy to follow, step-by-step tutorial
- Simple to install using the SlackBuild and the RPM package
Negative points:
- Not for free – needs a license after the 30-day trial period
- I could not find a direct way to create an image file from the 2D drawing (printed to PDF and converted it with the GIMP)
Links
]]> http://underpop.online.fr/n/nielshorn/2010/05/cad-programs-on-slackware-%e2%80%93-2-varicad/feed/ 0 http://underpop.online.fr/n/nielshorn/2010/04/cad-programs-on-slackware-1/ http://underpop.online.fr/n/nielshorn/2010/04/cad-programs-on-slackware-1/#comments Sat, 24 Apr 2010 16:16:14 +0000 Niels Horn http://underpop.online.fr/n/nielshorn/?p=291 HistoryMany years ago (talking about the mid/late 80s) I worked at a company that used AutoCAD for 2D construction designing. This was done on Sun Graphical Workstations that were networked together using a Thick Ethernet coaxial cable and a Unix file and print server. I learned a lot about shell scripting, network configuration, lpr / lpd printing, access permissions, terminal configurations, etc.
I didn’t understand much of what the architects and engineers designed, as I was more interested in the technology behind it all. But I remember that the whole IT setup was expensive: software licensing, specialized hardware (off-the-shelf Intel boxes couldn’t do yet what Sun could at the time), highly skilled network administrators (I was only a junior at the time), etc.
After a while, I changed jobs and moved into the financial administration business, where I learned other skills, many of which I still use on a daily basis…
Recently I regained interest in CAD programs, as a relative asked me to take a look at two files he received at his company that he was unable to open. It turned out that they were created by specialized 3D modeling software that costs thousands of dollars and runs only on Windows (he uses Slackware, of course!).
For someone who needs to open a file like that maybe once or twice a year, it’s not a wise investment.
So I started looking around for cheaper (preferably free) software that could open these files and display them on Slackware. It turned out that the formats used for those files were closed and exclusive, but those commercial programs can save their files in some open standards, like STEP or IGES. So my quest for a working, cheap/free CAD system for Slackware had started!
2D vs. 3D
Back when I worked supporting AutoCAD, all that was done was 2D designing: buildings, floor plans, etc. There were “layers” in the designs, but nothing was visualized in 3D. Even the expensive Sun Workstations did not have the graphical capabilities needed for that. But things have changed and nowadays, even reasonably priced desktop systems – with a modern graphics card – can do impressive 3D modeling using the right software.
Some programs are specialized in 2D designing, others in 3D, some can do both very well.
To clarify the difference between 2D designing and 3D modeling, here is a simple example of both (both images were created with the trial version of VariCAD):
Selected programs
So I wanted a program than can match the following requirements:
- Works or can be made to work on Slackware Linux
- Is free or affordable (meaning not in the $thousands range)
- Can read some of the open formats like STEP or IGES
- Ideally does both 2D & 3D, but if it’s really good at one of the two, or is really cheap (or free), I’ll consider it as well
After some initial research, I decided to check out the following programs:
- VariCAD: Commercial software, but seems to be very complete (2D + 3D) and has a fully supported Linux version
- FreeCAD: Free, open source, 3D, can read IGES & STEP, but seems to be a work-in-progress
- BRLCAD: Free, open source, 3D, created by the US Army for designing tanks, can read IGES
- QCAD: Commercial (but less then $50,00) + limited free “community” edition, 2D only
My findings about each program will be published in future posts on this blog.
If I can get a program to work on Slackware, I’ll submit the SlackBuild script to SlackBuilds.org, so that it becomes available for everyone to try out.