Spatial, ACIS, CGM, and the future of geometric modelers

This was my first time at the Spatial 3D Insider’s Summit. It’s not a large conference—just 60 or so attendees, plus people from Spatial, with a heavy bias towards nerdy folks with PhD’s in mathematics. It is the one time each year when Spatial gets together with its very best customers, and talks about the status, and the future, of its products.

Spatial Corp is a modest sized company, with about 100 employees, many of whom are very smart software engineers and mathematicians. It has been a subsidiary of Dassault Systemes since 2000. The company specializes in creating component software products, which are used within other CAD/CAM/CAE systems. Their major products—the ones that may be embedded within the software tools you use—are ACIS (a component geometric modeler), and 3D InterOp (a suite of translators, for 3D CAD data formats.)

Spatial’s other major products are CGM (Convergence Geometric Modeler), GGCM (General Geometric Constraint Manager), and CDS (Constraint Design Solver). You’ve probably not heard of these products. They came from Spatial’s parent company, Dassault Systemes, and are used within DS’s CATIA V5 and V6 products.

I’m not going to talk about 3D InterOp, GGCM and CDS here, even though they’re interesting products. I’m going to talk about ACIS and CGM—because they’re the products that affect the most CAD/CAM/CAE users.

ACIS

ACIS is one of the two most widely used geometric modeling kernels. (The other is Parasolid, from Siemens PLM.) It is over 20 years old, and is a “mature” product. That means it works pretty good, and is pretty well set in its functionality. Spatial continues to update and upgrade it, focusing on bug fixes and performance.

At the 3D Insider’s Summit, Spatial showed impressive performance gains, by using multi-threading to split processing of parts in assemblies among multiple processor cores. They also demonstrated fast demand loading of parts (quickly displaying a faceted graphical representation of a part, while in the background, loading its precision representation.)

For users of ACIS, this is great stuff. A representative of SpaceClaim who was at the summit said they’d snap-up any multi-threaded improvements that Spatial makes to ACIS.

It’s pretty clear that Spatial is putting a good amount of energy into multi-threading for ACIS. But, this statement doesn’t mean a lot without context. Spatial first started working on ACIS multi-threading more than a dozen years ago. To date, they’ve only solved a few of the most basic problems. Faceting all the parts in a large assembly? That’s easy to multi-thread. Blending large chains of edges in a single part? That’s hard. Really hard.

Over the years, I’ve discussed the issues of multi-threading with some very experienced CAD developers. The consensus is that only some processes–those that can be cleanly decomposed, with no dependencies–are easy to multi-thread. Beyond this, it’s really difficult to add multi-threading into a software architecture, unless you start with it built-in at the beginning.

ACIS wasn’t designed for multi-threading from the beginning. So, now it’s major work to add it after the fact. I’m impressed at the progress that Spatial’s developers have made, but I’m not expecting miracles in the future. The only way to get the full benefit of multi-threading is to start from scratch, with a new modeler, and a new architecture.

CGM

CGM, the Convergence Geometric Modeler was developed by DS specifically for its CATIA V5 (and later V6) product line. An interesting aside is that CATIA V5, when first launched, didn’t use CGM. It used ACIS. No, this is not common knowledge, and it’s probably not something that the management of Dassault Systemes would like to publicize. It may be that DS had planned all along to write CGM, and only used ACIS as an interim solution. But, in any event, CGM works quite differently, and represents data differently than ACIS.

What is plain to see is that DS didn’t initially plan to release CGM as a component geometric modeler. The way it was written, its functionality was deeply intertwined with CATIA.

When DS decided to commercialize CGM as a component geometric modeler, it made sense to give it to Spatial, which had experience building component software.

The process of componentizing CGM hasn’t been trivial, and isn’t yet complete. The product had a good geometry and topology infrastructure, as well as modeling operators. But it lacked part management with history and rollback. It lacked a standalone software interfaces. And it needed a standardized open file format, as well as importers for other CAD file formats. Spatial added those things to the first CGM release (R2012), which shipped in 2011.

The initial feedback on CGM was overall good. Spatial’s customers (independent software vendors) liked the core functionality, the interfaces, and the documentation. They didn’t like the memory footprint (it’s big.)

In the second release of CGM, which shipped this year, Spatial added interfaces for more modeling operations, added more InterOp formats, integrated 3DXML support, and included support for point cloud data and operators.

Spatial is not rolling-out CGM as a general purpose “do anything” geometric modeler. It is focusing on supporting particular use cases. Initially, metrology and CAM. As Spatial integrates interfaces for all of CGM’s modeling operations, the product will become a capable foundation for any kind of product—even a full blown CAD program.

The big question with CGM is whether it’s a practical alternative to Parasolid or Spatial (or, for that matter, PTC’s Granite.) The answer, for existing applications, is no. You can’t unbolt Parasolid or ACIS, and bolt in CGM. It’s not that it’s better or worse (though it may be in certain areas)—it’s just that it works differently.

The one thing that CGM has that no other component geometric modeler has is full B-rep compatibility with CATIA V5 and V6. It’s an obvious choice for ISVs which want to work in the CATIA ecosystem, but who don’t qualify (or aren’t patient enough) to become a Dassault Systems CAA (Component Application Architecture) partner.

What CGM lacks, sadly, is support for multi-threading. It’s not thread-safe. Its parallel processing support is based on multiprocessing; using multiple processes for concurrency with inter-process communication as a means to share data. While this method, which uses a distributed memory model, can provide some performance gain on easily partitionable problems, it’s not a great general solution.

One of the non-technical issues with CGM will probably be licensing costs. DS (and, hence, Spatial) is “proud” of CGM, and will be pricing it higher than ACIS.

ISVs who build CAD/CAM/CAE and similar software often end up licensing a variety of component software technologies. It isn’t uncommon to see products using ACIS, HOOPS, and DCM, among other components. These are typically licensed on a percentage of revenue basis. By the time an ISV gets done, they might be spending between 15% to 17% of revenue on component software licenses. It’s going to be a hard sale to convince the average ISV that CGM is worth the extra money unless they really need CATIA compatibility.

CGM is, ultimately, going to be a competent geometric modeler. But it’s not likely to displace ACIS or Parasolid, and it’s not the “geometric modeler of the future” that will transcend the limitations of ACIS and Parasolid.

What about SolidWorks V6?

You’ve probably heard rumors of SolidWorks V6. It’s the upcoming next generation of products from DS SolidWorks Corp, based on CATIA/ENOVIA V6 technology. When talking to Linda Lokay, Vice President Marketing and Business Development at Spatial, I asked her if SolidWorks V6 would be using Spatial’s CGM and 3D InterOp. Then I said “you’re not going to tell me, are you?” She just smiled at me, and told me to talk to Fielder Hiss, at SolidWorks.

Fair enough. I’m guessing that SolidWorks will be using the full blown DS CATIA/ENOVIA V6 infrastructure to build its products. But that’s just a guess. It would also make sense that SolidWorks V6 will be using Spatial’s new direct Parasolid file reader, to read existing SolidWorks files.

I had a side conversation at the 3D Insider’s Summit, with an old friend who is an expert in these things. I asked him if it was technically possible to create a Parasolid reader that could provide 100% accuracy. He said “yes,” explaining that Parasolid, of all the popular CAD formats, is the easiest to read accurately. It has fewer weirdnesses and stupidities (those are not technical terms) than other formats.

Of course, any discussions of SolidWorks V6 generation products are conjecture. The products won’t start shipping until next year. But it appears that Dassault Systemes has some good resources in place, to make those products both interesting and compatible.