3D Insiders Summit

Our annual Insiders’ Summit 20014 is fast approaching – October 15-16, located in beautiful Broomfield, Colorado. This year’s conference is jam-packed with even more technical sessions, events and one-on-one meetings.  This highly anticipated events lets you implement best practices, customize our software to better meet your customers’ needs, and provide hands-on experience to master new capabilities available in the Spatial portfolio.

Each year we survey our attendees to see what they like about the conference and what we can do to make it even better.  A vast majority of the comments last year focused on three key benefits:

  • One-on-one meetings: Whether it is a business, customer support or engineering discussion, Spatial’s technical, R&D and executive team are always available to meet and discuss individual needs, priorities or challenges.

  • Review sessions of new Spatial features: This year we are holding R25 working sessions, which will show you how to install, test and learn all about the new R25 capabilities. Participants can try out the new features of Spatial’s latest version and see how the additional capabilities will help you deliver more innovation to your clients.

  • Meeting fellow users and learning from their experiences: Whether attendees are sharing experiences before/after sessions or during lunch and dinner conversations, they all tell us the same thing—they pick up valuable tips and strategies from fellow users. We expect this year’s attendees to be both novice and experienced users, and both can benefit from informal discussions.

Because these three things are constantly mentioned as key benefits of the event, we are making sure that we offer even more of these opportunities. We’ve also listened to our attendees and implemented something completely new this year – deeper technical session content with hands-on experience using your own laptops, working in your own environment on your actual projects!

And of course, our experts will be right there to help you implement our new features so you get the very most out of our software – which in turn helps you be more innovative.

Join us in the midst of the magnificent Rocky Mountains –an ideal destination to learn, network, and refresh your skills. 

This educational event will be technically focused, allowing you experience the new capabilities of Spatial’s portfolio, learn best practices for implementation, and gain insight into future product plans. And in addition to being able to interact with Spatial developers, product managers and executives – there will be plenty of time to share experiences and learn from other Spatial users.

Dates: October 15 – 16, 2014

Venue: Renaissance Boulder Flatiron Hotel

*Early Bird Registration is open. Register before September 1st to save $100!

Register Now


For those of you not familiar with waterjet machining, this is an industrial tool that is capable of cutting a variety of materials using an extremely high-pressure jet of water.  A mixture of water with an abrasive substance is sometimes used as well.  This method is used primarily when the materials being cut are sensitive to the high temperatures generated by other methods.  Waterjets have the widest range of application of any machine tool, while maintaining high precision. There are virtually no limits to what waterjets can cut. So how does 3D come into play for waterjets?
With recent advances in control and motion technology, 5-axis waterjet cutting has become a reality. While 5-axis operations have been possible on abrasive waterjet machines for some time, the capability to process 3D parts such as tubes and pipes is relatively new. Where the normal axes on a water jet are named X (back/forth), Y(left/right) and Z (up/down), a 5-axis system will typically add an A axis (angle from perpendicular) and C axes (rotation around the Z-axis). This is where 3D modeling, visualization and data interoperability come into play. With specialized 3D software and 3D machining heads, complex shapes can be digitally modeled and produced. By integrating the specialized 3D software with the recent advances in 5-axis waterjet machines, machine tool venders are able to deliver flexibility, speed and accuracy like never before. 
OMAX Corporation, a leading tool solutions provider of abrasive waterjet systems and Spatial Corp, the leading provider of 3D components aka Software Development Kits (SDKs), recently announced the co-development of a 3D tool pathing solution for waterjet machining.  Spatial provides the middle-ware between OMAX’s CAD and the machine controller. The merging of these two leading technologies provides customers the ability to import practically any major 2D or 3D CAD model in the market today.  
For OMAX customers doing 3D programming for 5-axis waterjet cutting, those operations are now greatly simplified.  OMAX is delivering one of the easiest to use 5-axis CAM software solutions today with the help of Spatial’s 3D SDKs.  
To learn more about Spatial’s 3D capabilities for other manufacturing and fabrication industries visit:: Manufacturing-Fabrication

Basically, there are two priorities when using a software component, particularly a 3D modeling kernel:

  • Does it do what you want/need it to?
  • Is it always fast enough to be practical?

As a developer for 3D ACIS Modeler, I spend a lot of time thinking about how to make 3D ACIS Modeler faster and, at the same time, more correct.  Conventional wisdom often laughs at people who try to compromise correctness for speed: if there is a mathematically right answer, that’s always what you should get. 

On the other hand, there is a point where if an operation is too slow it is useless.  For example, a faceting algorithm that took 2 hours to facet a sphere would be pretty much useless.  Interactive applications push this idea even further.  If you want to call an API every time the end user drags their mouse on the screen, the API speed limits your frame rate.  To achieve 10 fps, you need the API to take less time that .1 sec.  With the computer power that is available today, there are some amazing things CAD applications can do (e.g., the pull operation in SpaceClaim Corporation).  ACIS is driven by our customers.  This blog was prompted by a project Matthias and I are doing in R25 to make entity-entity distance interactive.

So how can we make 3d more interactive?  I have a couple of ideas, but I’d love to hear yours as well:

  • The basic algorithms  need to be optimal
  • Nothing O(n-squared) or worse unless it is impossible to avoid it.
  • Is there any costly work being done repeatedly?
  • Ask the right questions.
  • If you can get by with less work per mouse move, do.
  • Pre-compute/memorize if possible.
  • Multithread whatever slows you down.
  • Avoid static and global variables whenever possible.
  • Take advantage of Thread-safe ACIS.
  • Optimize greedily
  • Profile to find what the bottlenecks are, and focus attention there
  • Program lazily
  • The more an operation costs, the more can be gained by doing it opportunistically, instead of doing it all the time.

The idea for this post started on Aug 11, 2011, when I read Gregg’s post about choosing a scripting language for 3DScript, the CGM interactive test bed.  That article had a lot of good ideas, but I feel like it kind of missed the point regarding Lisp/Scheme/Functional Programming.  He used a do loop to try to make the point that the syntax is rather goofy.   The reason scheme came up at all is that it is used as a scripting language for acis3dt.exe our 3D ACIS Modeler Test application.

I actually agree that the syntax for a do loop is goofy.  However, learning about Lisp (and the lispy features of perl, see http://hop.perl.plover.com/) has made me a much better programmer than I would otherwise be.  In some ways, this thesis is older than the hills. To illustrate this, Google various subjects surrounding Lisp, Functional Programming, etc., for example, map-reduce.  When I talk with other programmers, I get the feeling that the message bears repeating.

So please bear with me while I sketch a few specifics.  Also, feel free to add your own in the comments:

  • Referential transparency makes things a lot easier to reason about.  Put another way: it is much easier to deal with C/C++ code that doesn’t modify global and static variables.
  • The best way to speed up code is to get a smarter algorithm. 

- Writing programs as compositions of simple (but high order functions), makes it much easier to reason about them:
- There are a few functional programming clichés that often help in dramatically speeding things up
                         - Memoization
                         - Make the algorithm lazy

  • Mathematical proofs are very easily given in terms of induction/recursion

- The literature on Lisp has lots of discussion about how you can convert between recursion and iteration.

  • Thinking about classes in terms of closures is helpful to me.

A common anti-pattern in legacy code is monolithic and large functions which give a detailed to do list.  Typically, I end up extracting functions from the huge monster, turning them into classes, and then parameterizing their behavior.  This is really almost the same thing as taking a code snippet, making a closure over the variables you need to encapsulate, etc.

C/C++  still tends to be ubiquitous because:
(a) So many system libraries are written in C or C++
(b) Well written C++ can be very fast

However, C-style languages don’t lend themselves to simple and concise reasoning about code.  If there were a well-established Lisp with a good linker, it might eat C’s lunch.

Here's a cartoon on the subject http://imgs.xkcd.com/comics/lisp.jpg

What do you think?


The R24 release of 3D InterOp is now available for download. Although they are available online, not everyone pours over the 3D InterOp Release Notes for R24 like we might hope.  What follows is a shorter summary of what’s new in 3D InterOp Suite R24. The description of what’s new falls into three areas; new products, functional enhancements, and platform changes.

Addressing the first, 'new products' area, several additions are included in the R24 release of 3D InterOp. 3D InterOp Graphical now provides the ability to import Solid Edge files. In addition, the new Solid Edge Reader Component allows the import of product structure or exact geometry. The Solid Edge Reader Component is also available as a Direct translator or a Parasolid kernel-based translator. Still on the subject of expanded graphical import, the STEP Graphical Component in 3D InterOp now supports importing graphical PMI from STEP files.

Beyond data translation, many applications have a need to publish graphical data. 3D InterOp Graphical now provides support for writing 3D PDF files. This provides an easy way to distribute 3D information to an audience using the ubiquitous Adobe PDF Reader.

The second area describes the functional enhancements in the R24 release. This is by far the largest area with significant enhancements to every translator. As with each release, 3D InterOp R24 includes faster performance for every translator, especially for large multi-body parts. By leveraging the benefits of multi-processing, most applications should see up to 40% faster translation.

One of the unique characteristics of 3D InterOp translators is the ability to import the various data types as independent chapters of a book. Applications can selectively access product structure, graphical data, geometry, or PMI information. This offers tremendous flexibility to application developers. However, once an application imports data, R24 provides the ability to associate information between these different 'data buckets'. For example, applications can relate PMI information with the Geometry that’s associated with a given GEOMTOL. Or functionality can be presented which allows a user to associate (or link) the graphical display with the associated PMI information highlighted. In other words, this new functionality provides full associativity with owning model geometry and datum / datum targets enabling the applications to walk from graphical PMI to semantic PMI similar to originating source CAD system.


Figure 1: Linking between Graphical PMI and Mechanical/Semantic PMI

Several of the translators now allow the import of materials properties. Material properties could include name, density, or strength. This is now supported in the CATIA V5, NX, Creo, SolidWorks, and Inventor Reader Components. For even more flexibility, the CATIA V5, NX, Creo, and SolidWorks Reader Components now support User Defined Attributes (UDA). This allows applications to import custom name and value pairs.

Although platform changes are not the biggest news, they tend to affect the largest number of users. Mac OS X has changed significantly for this release. The product is now available as 64-bit binaries with the architecture name 'macos_a64'. This new 64-bit support replaces the previous 32-bit support. Microsoft Visual C++ 2010 support was upgraded to Microsoft Visual C++ 2010 (SP1). Additionally, 3D InterOp now supports the Microsoft Visual C++ 2012 32-bit compiler and Microsoft Visual C++ 2012 64-bit compiler on the Windows 32/64-bit (excluding Windows XP) operating systems.

R24 marks the beginning of depreciation for the gcc 4.1.2 (RHEL 4.0 OS), VS 2005 for (Microsoft Windows), and IBM VisualAge C++ 10.1 (Microsoft Windows) compilers. R24 is the last version that supports Windows Vista, Windows XP, as well as the VS 2008 compiler.

Hopefully, this overview has piqued your curiosity to learn more about the R24 release of 3D InterOp Suite. The best resource to see more detail is the 3D InterOp Release Notes for R24. There’s also an excellent on-demand webinar 3D InterOp R24 - Much More Than Just Reading Data hosted by Vivekan Iyengar, Director of Product Development for Spatial.

Twitter Facebook LinkedIn YouTube RSS