Monday, January 26, 2015

Exporting MS Project Data to GEXF Network Graph Format

Background

MS Project is a commonly used tool to do project planning and tracking. It provides a large set of tools and last but not least visualizes project tasks in the form of Gantt charts or project netowrk diagrams.
However, at least me I find the Gantt chart visualization of a project plan with more than 100 lines quite inconfortable, one workaround is to print the plan out as large posters. But even then I find it very difficult to find tasks which are not properly linked or even not linked to other tasks (I call them "tramps") at all.
From my software experiences I know network graphs a bit and I learned to love the network graph visualizer "Gephi" and the network graph exchange format GEXF. So my idea was to create an export VBA script to export MS Project data from our project plans to GEXF, visualze these with Gephi and see what one can learn from this.

Results

Here the project network colored by inbound edges:

 
Same graph colored by tasks status:
green = Done
red = delayed
yellow =  in the future





The Script

The following vba script can be used in MS Project 2010 directly to export MSP project data to GEXF. Please adjust the output path and file name to your needs.
The script creates the following GEXF information:
  • The tasks/lines in the project plan define the nodes of the network graph
  • Edges are defined by the task dependencies
  • I added the task status as attribute of a node
  • The outline tasks are interpreted as hierarchy nodes
The source code can be found on github, visit the following link:
https://github.com/wolfig/MSP_Export_GEXF/blob/master/exportGEXF.vba

I hope you ca use this script for your own purposes - keep on geekin'

Tuesday, January 13, 2015

Bridging Divides: Importing CAD Models into Blender, a Review

Note

Some examples of illustrations created from CATIA-models post-processed with Blender can be found in another post in my blog: "Creating Technical Illustration Using Blender"

Background

I work since years with 3D modeling, rendering and visualization programs as a hobbyist and in my working environment without being a professional 3D artist. I started with 2D Autocad drawings in the early 1990ties, use enthusiastically POV-Ray and discovered Blender as my main working horse about 5 years ago.
Since a couple of months I am working on illustrations for work where a large scale accelerator complex is being build. I would like to work with Blender in the end for a couple of reasons:
  • First of all Blender is a fantastic tool producing very impressive output
  • Blender is free software, so I can install it on several computers (work, home) without having trouble with expensive professional software packages I can't affort. Furthermore I am working together with students an they cannot affort expensive software either.
  • For Blender extensive documentation is available in the web - I do not have to buy expensive books
  • Last but not least Blender is by far not as resources-hungry like Autodesk and co.
However, as I found out, in our heterogeneous software landscape is not trivial to get existing CAD-models into the Blender format. The sources of models are the following:
  • Our mechanical engineering department is working with CATIA V5
  • Architects use AutoCAD 2014 as standard software
  • Furthermore, at work I have the Autodesk product suite at our disposal
First of All, my starting point of any work with work related 3D models is always CATIA V5. CATIA offers the following formats to save 3D models:
As one can see from the list above, CATIA offers only two non native formats: IGES and STEP.  None of these can be imported directly into Blender.

My Conversion Workflow

My favorite conversion workflow utilizes Autodesk Inventor (which I personally prefer over CATIA due to its better (my hobbyist opinion) user experience) and Autodesk 3D Max Design:
  1. Save CATIA file locally as CATProduct
  2. Import CATProduct in Autodesk Inventor and save in Inventor native format *.iam
  3. Import/Open *.iam file in 3D Max export as *.3DS
  4. Import 3DS in Blender
Why this complicated? Other workflow steps would be a direct import to 3D Max from CATProduct or an export from CATIA to *.igs which can be imported directly to Blender . I tried both of which, but didn't like the distorted look of the imported data in 3D Max, which made me a bit nervous ;) Here two examples:

Import of a CATProduct into 3DS Max




 Import of a IAM into 3DS Max


Last but not least the import into Blender:

The IGES/STEP Route

CATIA supports the export to IGES and STEP (see above). Both of these formats can be imported into 3DS Max. I tried IGES and it preserves the geometry as it supports smooth spline types so the conversion to IGES does not polygonize your objects into meshes. Nevertheless, from 3DS Max one needs to export again to some Blender-compatible format like *.3DS. Still you are dependent on costly Autodesk products.

Open Source Alternatives

The IGES route offers as well a freeware-possibility to convert into something that can be imported to Blender: The open source product FreeCAD offers a couple of importing/exporting possibilities suited to import into Blender (*.CAE, *.OBJ, *.DXF, *.PLY). While the import into FreeCAD worked well in my case, the export was only partly successful. I tried a couple of export formats, but was only successful to export to *.OBJ (ploygonized). The result however was not very satisfactory as the output did not preserve the objects/parts of the input, but baked everything together into one lump - which was still very detailed. So, from my perspective FreeCAD is an option, still you have to be careful about the geometry and the parts you want to convert.

Quick & Reliable but (not as much as Autodesk) Expensive

Besides the Autodesk products I checked as well the products of Okino Polytrans and Nugraf. These work fine (in the demo version of the program) and offer the functionality to convert IGES to 3DS for $395: Polytrans/ $495:Nugraf (prices spring 2015). However, modules for the translation of "real" CAD input files like Autodesk Inventor or CATIA are not included in the basic version of the two products and have to be purchased seperately.
Last but not least I checked the Glovius 3D CAD Viewer which offers as well the functionality to export to other 3D file formats including 3DS which is my favorite for import to Blender. Glovius can import directly CATIA V5/V4, Inventor, SolidEdge, SolidWorks and more and - as far as I can say from the Demo version with an incredible speed. I imported files which were really problematic with all the other conversion options and found Glovius to digest them like nothing. For example I recently converted a 565 MB CATPart to a 262 MB 3DS within about 20 minutes on an Intel 2.8 GHz Xeon machine with 16 GB RAM. The workflow can be sped up from hours (using the Autodesk path) to literally minutes. The price of the "All in One" product is with $995 (spring 2015) in a medium range, but if you can limit your input options to only one, the price will be less than half of the "All in One".
2016-02-03: A comment to Glovius as I saw a number of threads asking for this: Glovius is able to open the following formats (All in One version):

  • *.3ds, *.3dxml, *._pd, *.model, *.dlv, *.exp, *.session, *.CATProduct, *.CATPart, *.cgr, *.dae, *.arc, *.unv, *.mf1, prt, *.pkg, *.iam, *.ipt, *.jt, *.obj, *.bdl, *.x_t, *.x_b, *.xmt, *.sldprt, *.stp, *.step, *.iges. *.igs
Explicitly it was the only tool which (to my knowledge was able to open *.jt


Another alternative I found is 3D-Tool. It offers similar functionality like Glovius to a lower price from 150.- € for the "basic" version (DWG, DXF, HPGL on the input side and among others 3DSand OBJ output for Blender), 300.- € for the "Advanced" version (STEP and IGES import) up to 600.- € for the "Premium" version (import of CATIA, Inventor, SolidWorks, SolidEdge native). I tested the program with a 450 MB CATProduct and it produced very good 3DS output.

Hope you enjoyed an this posts helps you in your own work. Keep geeking ;)
WolfiG