Receive Posts by Email

Blog Home

Rounding Dimension Values from 3D InterOp

Wed Aug 16, 2017

 Recently I was asked a question about one of the standard test files generated by NIST (National Institute for Standards and Technology) that was being translated by our 3D InterOp translator.  The question concerned the diameter of a hole in the geometry with a dimension on it specifying ⌀0.238, which sounded innocuous enough at first.

Tags: 3D InterOp 3D Interoperability

Read More 0 Comments

Healing and Preserving 3D Model Intent

Tue Aug 23, 2016

Part and parcel with model-based engineering is model translation. Because the model is now the specification, accurate translation from one system to another becomes essential. But even if a model is accurately read, the intent of the model has to also be properly interpreted. Key to proper model interpretation is healing — the process of modifying model data so that it conforms to the rules of the target system, while adhering to the intent of the source.

Tags: 3D InterOp 3D Software Development Kits 3D ACIS 3D Modeling

Read More 0 Comments

Emergence of STEP AP 242

Wed Jul 13, 2016

In a past blog, The Impact of Model-Based Definition (MBD) on 3D Modeling and Manufacturing, we discussed the growing role of MBD. To recap: although 3D modeling has been the standard in design for decades, many manufacturers still rely heavily on 2D drawings when communicating with suppliers. MBD enables the next step in CAD evolution where the 3D model becomes the means of communicating manufacturing data and specifications (product and manufacturing information or PMI).

Tags: 3D InterOp

Read More 0 Comments

One-Way Associativity for 3D CAD Analysis Applications

Tue Mar 1, 2016

Analysis applications often use solid models generated by CAD systems as their input; for example, the structural analysis of an engineering model. The user of the system applies a set of loads and boundary conditions to the model, and then the software performs its analysis and supplies a set of deformations or stresses in the material, allowing an engineer to look at the results and decide whether the design fits its purpose.

Tags: 3D InterOp 3D Interoperability

Read More 0 Comments

The Impact of Model-Based Definition on 3D Modeling & Manufacturing

Fri Feb 19, 2016

The beginning of the year is a time for planning, both in our personal lives, as well as professional. It is no different here at Spatial. We are excited to begin sharing our plans and goals for the future with our customers. One of our focus areas this year is model-based definition, or MBD.

Tags: 3D InterOp

Read More 0 Comments

3D InterOp TranslationDriver for Multi-Threaded and GUI Applications

Mon Jun 15, 2015

Spatial's 3D InterOp requires that all translations be done on the same thread that creates the SPAISystemInitGuard. This complicates programs that may wish to create separate threads for a translation. This is often done in GUI applications that require the main thread to listen for events and handle all translation logic in a separate thread that will not impact the interactivity of the main thread. It would be highly undesirable to block all event processing for the duration of a translation, so a separate thread is often used to do the translation so that the application can still be interactive. 

Tags: 3D InterOp

Read More 0 Comments

Rendering Graphical Data from 3D InterOp with HOOPS Visualize

Tue May 12, 2015

Recently I was asked by a customer how to render a 3D visualization model translated from a CAD file by Graphical 3D InterOp (see ref 1 below.)  The customer is using HOOPS so the quick answer was to use our bridge libraries which connect our products together and sure enough there is a 3D InterOp/HOOPs bridge for precisely this purpose.  However I thought that I would really like to know how the data gets passed between the different components, especially as I had a small test application I had used a while ago and I never got the display to be as good as that generated by the bridge.  (The bridge is actually shipped as source, so the code is available if you want to take a look at it.)

Tags: 3D InterOp

Read More 0 Comments

Helpful Qt Tools for 3D Software Development Kits

Mon May 4, 2015

Helpful Qt Tools for 3D Software Development Kits

When software developers opt for tools that are cross platform, they often turn to Qt. Qt is arguably the most popular toolkit for making applications that can run on Windows, Mac or Linux with little additional effort. Spatial’s 3D software development kits can be paired with Qt to produce enterprise quality applications that are platform agnostic.

To help developers get started in this environment, here we present a small collection of files that can be used with qmake for generating makefiles and IDE workspaces that are configured to use software components from Spatial. We’ve also included a simple project that illustrates the use of these add-ons.


Qt 5.4 is the current version available, but these scripts should work with earlier and future versions as well.  You’ll also need an installation of the Spatial software components for each platform you want to support. To take advantage of the qmake scripts provided here, install your Spatial components in a common root directory and name the product folders according to the following naming convention:

By using a network share as the installation location, all Spatial components for all supported platforms can be installed to the same location. The qmake system has support for prefix headers (sometimes called pre-compiled headers) which can be used dramatically decrease build times when third party software components such as ACIS are shared on a network drive.

* If you don’t install your components this way, you can specify their locations individually by setting the variables in your shell environment or in your qmake project file prior to using the pri files provided here.


In order to add support for Spatial components, edit your product’s .pro file and add the following variables:

With this information, your environment is completely specified, and all that’s left to do is include the components you want to build into your application.

Here is an example of a .pro file that takes advantage of this build configuration:


# Specify default values for versions

# Allow local configuration file to specify SPA_ROOT
# and to override default versions as needed.
# config-local.pri should not be kept in revision control
# but created and modified by the developer in their working copy

isEmpty(SPA_ROOT):error(Edit config-local.pri to set SPA_ROOT)
!include($$SPA_ROOT/spa_pri/acis.pri):error(Unable to include acis.pri)
!include($$SPA_ROOT/spa_pri/iop.pri):error(Unable to include iop.pri)

message(A3DT: $$A3DT)
message(X3DT: $$X3DT)
message(ARCH: $$ARCH)

CONFIG*=thread console
SOURCES += main.cpp


After including any of the .pri files provided, you can access the values they define. This can be useful for automatically writing a batch file that augments your PATH environment variable, which makes dynamic loading of the libraries much easier. For example:

win32 {
  bs_a3dt = $$replace(A3DT, '/', '\\')
  cmd = echo 'set PATH=$${bs_a3dt}\\$${ARCH}$${d}\\code\\bin;^%PATH^%' > acisPath.bat
  cmd = echo 'set A3DT=$${bs_a3dt}'>> acisPath.bat
  cmd = echo 'set ARCH=$${ARCH}'>> acisPath.bat

The variables A3DT and ARCH are defined by including acis.pri. The forward slash to backslash conversion is done because all paths in the qmake environment use forward slashes, while the windows command prompt expects backslashes.

In addition to modifying your PATH variable, the batch file created by the above snippet sets A3DT and ARCH shell environment variables. This can be useful when opening and building visual studio solutions that ship with Spatial’s software components.

Link to Zip File


By pairing Spatial’s software components with the power of Qt, you can create applications quickly and easily that run on all the major platforms. By using .pri and .pro files, configuring a build environment is easy, reliable, and flexible. Even if you choose not to use Qt as your GUI toolkit, you can use qmake as a platform independent build tool for easily generating makefiles and IDE workspaces.

Tags: 3D InterOp

Read More 0 Comments

Highlights of the R24 Release of 3D InterOp

Wed Jul 17, 2013

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.

Tags: 3D InterOp

Read More 0 Comments

3D InterOp in a Multi-Core World: Part 1

Wed Mar 13, 2013

Try to buy a single-core laptop today and you’ll have a difficult time even finding one.  The leading computer manufacturers offer at least dual-core for base models of their economy lines, even for laptops.  Let that sink in.  Our days of single core machines, even laptops, are over.  Many of the leading mobile products are also at least dual-core with higher end products having even more cores.

Tags: 3D InterOp

Read More 0 Comments