We are just starting the 3rd day of 2015 SolidWorks World. The first two days have been very well attended and with a great deal of excitement.

There has been a lot of curiosity about Spatial and our role in the Dassault Systemes ecosystem. For many, it is the first time that they have heard of us. After some explanation, many are beginning to connect the dots on how we can add value in to their company. The primary interest has been around how we can help additive manufacturing bridge the gap between precise models and non-precise data. 

Additive Manufacturing is a vital market for many of the Solidworks partners and users. Several are showing how this can be applied alongside traditional segments such as medical and dental, aerospace and automotive. The requirements for these parts are quickly becoming more and more stringent. Precise geometry is going to be necessary to help address these challenges.

In addition to what is happening with Spatial at SolidWorks World, you can see many new use models for the 3DExperience where companies are changing the way we imagine, design and manufacture. A great example is Augmented Reality. There are several companies showing how this can be used in an industrial context. One of the most impressive is what 3DExcite is showing in the DS booth. The rendering and animation from their technology, coupled with augmented reality it truly stunning.

There are going to be several new product announcements on the floor today that I am looking forward to. It is great to see that design and manufacturing is alive and thriving in the Americas. 

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
 
OMAX_Intelli-CAM

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?

Tags:
Twitter Facebook LinkedIn YouTube RSS