Share

Applies to 2020.0 Update and later

 
 

About the host application workflow

With the ability to change layer contour data and to create toolpaths and machine buildfiles, the ATU build processor can be used for various tasks. To ensure a consistent behavior across different host applications (eg. Autodesk® Netfabb®), a strict integration workflow for host applications was set up to guarantee identical processing results. It is important for every ATU developer to be aware of this workflow, because it influences operation order and data management of ATU JavaScript projects:

Host application workflow

EBPA initialization

The Netfabb integration is taken as an example:

  1. An EBPA (Encrypted Build Processor Archive) file is loaded and initialized by the ATU runtime environment.
  2. Netfabb slicing generates contour data for the layers, one part at a time. This data is passed to the ATU runtime. Support structures for each part are usually passed as well, so that part and support contours are available on ATU side.
  3. During preprocessing, EBPA JavaScript code may manipulate contour data from the current part and/or its supports.
  4. After preprocessing for the whole platform, the toolpaths are generated layer by layer.
  5. The postprocessing step is called. It provides access to toolpath vectors for all parts and layers. This may be used to rearrange their order, for example.
  6. For toolpath previews within Netfabb, the toolpaths are transferred back.
  7. The toolpath vectors and attributes are used to generate machine buildfiles.

ATU-side of this workflow

Initialization

The initialization makes all files of an EBPA archive available and calls the following Javascript functions:

about This function returns description and copyright information from used EBPA files.
declareBuildstyleAttributes Buildstyle attributes are used to add parameters to the toolpath. They have to be declared at this function.
declareExportFilter All available export formats are listed here so that the host application can choose from them.
declareMachine The buildstyle sets up machine and materials for EBPA calculations. Since buildstyles can support more than one material, the host application queries a list of supported materials, which are specified here.
declareModelFeatures Some special operations can be turned on or off here (Hull/Core generation, shadow polygon etc.)
declareParameters Each buildstyle can have its own set of parameter groups and parameters. This function sets up available groups and parameters.
declareBuildstyleProperties Define arbitrary additional properties. These properties can be read by the host program (e.g. ATU or Netfabb) directly. There are some predefined properties such as adsk_main.custom_thickness_allowed.

Layer contour data

Any slicer can be used with the ATU runtime. In case of Netfabb, the Netfabb slicer module creates layer contour data from each part on the platform. These contours are transferred to the ATU runtime and they are saved to an ATU layer stack. This layer stack is the central database for all contours and toolpaths. All following operations query, add, modify or delete data on this central data storage.

Preprocessing

At this stage, customized JavaScript code can be used to analyze, add, modify or delete layer contour data from a part and its supports.

Toolpath generation

Toolpaths are generated by a thread at the ATU runtime environment. For every layer the makeExposureLayer javascript function is called to generate toolpaths for each layer.

Postprocessing

The postprocessing step is the first place, where contours and toolpaths of all parts and all layers are available. It is commonly used to create the overall processing order of all toolpath vectors. The postprocessed toolpath data can be used to create toolpath previews or it can be used for further processing at Netfabb slicing.

Machine buildfile creation

Similar to the postprocessing step, all toolpaths of all layers can be accessed here to generate machine/vendor-specific buildfiles.

Workflow impacts on ATU developers

  • At the preprocessing phase, the ATU program has guaranteed access to contours of a single part only, because parts are added one after the other.
  • Toolpath generation is done multithreaded and the Javascript implementation is called once for each layer. The processing order of layers is managed by a thread and it is not safe to access toolpath data from other layers (but it is safe to access contour data from other layers, as they are generated while layer contours are copied or at the preprocessing step)
  • Toolpaths are generated for single parts. The makeExposureLayer function only has access to contours of this single part.

A laser index can be added to the toolpath as an attribute.

Common tasks

Preprocessing support structures of a part

ATU has built-in functions to merge support structure with the part, if they collide. These calculations are done at the preprocessing step.

Getting the platform dimensions

The final layer stack is filled part by part. The dimension of all parts can be calculated step by step at the preprocessing step.

Query data from other layers

It is not safe to query toolpath data from other layers while in multi-threaded toolpath generation step. This data is not guaranteed to be available. Contour data is always available at the toolpath processing step and can be used.

Define start and end positions for toolpaths on each layer

These positions can be determined at the preprocessing step. It is possible to add layer attributes to pass these coordinates to the toolpath creation step.

Create an optimized order for toolpath vectors

The postprocessing step is the right place to go. At this step, all toolpaths of all parts are generated, and it is possible to access these.

Create toolpaths for variable layer thicknesses

Layer thicknesses must be a multiplier of the ATU layer thickness, which will be the thinnest possible layer thickness. Layer attributes can be used to declare the current layer thickness and toolpaths are generated once per "layer pack".

Moving away from printing a platform layer by layer

For some manufacturing methods it makes sense to print several layers at a certain area and then move back to a layer underneath to start printing several layers at another area of the platform. Again, layer and toolpath attributes can be used to create processing groups, that are used at the export step to create the buildfile. It might be necessary to iterate through layers more than once.

Was this information helpful?