HOOPS Visualize Release Notes
IMPORTANT:
- The DirectX 9 driver has been removed as of HPS version 2020.
- The OpenGL1 driver has been deprecated. We encourage Visualize users to upgrade to DirectX 11 or OpenGL 2.
HPS 2020
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Communicator | 2019 SP2 U1 | ||||||
HOOPS Exchange | 2020 U1 | Android simulator support is limited. See this explanation. | |||||
HOOPS Publish | 2020 U1 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 32.0.x | For iOS platforms, support is limited to 64-bit platforms for the Parasolid Sprockets (hps_sprk_parasolid and hps_sprk_exchange_parasolid). | |||||
RealDWG | 2019 | RealDWG 2019 works with Visual Studio 2017 Update 2 and Visual Studio 2015 Update 3 | |||||
Qt | 5.12.7 LTS | ||||||
SketchUp | 2019.2 | Only x64 Sketchup is supported |
Functional Changes
Windows Vista support ended. Windows 7 is now the minimum supported OS.
Qt support. We have upgraded our supported version of Qt to the latest LTS release (Qt 5.12.7). Please read about specifics for running the Qt Sandbox here.
iOS libary changes. The armv7 and i386 platforms for iOS have been removed.
WX Widgets. Support for WX Widgets has been removed. WX samples and sandbox have been removed.
OpenGL. The OpenGL driver now requires OpenGL 3.2 or higher.
Linux toolset. The Linux toolset has been upgraded to Devtoolset 8.
Mac packaging changes. We are renaming the Mac packages from HOOPS_Visualize_2020_OSX.zip to HOOPS_Visualize_2020_macOS.zip, and this pattern will continue for future releases. The bin subdirectories have been renamed from osx to macos.
macOS window management. The way windows are created and managed has changed for macOS platforms. Please see this note for details.
Parasolid. HPS now works with Parasolid 32.0.
SketchUp. HPS now works with SketchUp 2019.2.
Communicator. HPS now works with HOOPS Communicator 2019 SP2 U1.
Component visibility changes. Several changes have been made related to the way components in the component hierarchy are shown, hidden, and isolated. The HPS::Component::Visibility enum has been removed. See this section for details.
Android platform and compiler updates. See the Supported Platforms page for details on the current requirements.
DX9 driver interface. The DirectX9 driver has been removed. Please use a newer driver, such as DirectX11.
IMPORTANT: If you are using C# with WPF and D3DImageCanvas, you still need to include d3dcompiler_XX.dll with your application (if it doesn't already exist in the execution environment) regardless of which driver interface you are using.
Standalone windows removed from certain platforms. HPS::StandAloneWindowKey and all related StandAlone* classes have been removed from platforms where they are not applicable: Android, iOS, and macOS. The functions HPS::Database::CreateStandAloneWindow() and the standalone variant of HPS::Factory::CreateCanvas() are also removed on those platforms.
Changes to anti-aliasing. VisualEffects(Kit|Control).SetAntiAliasing(bool state) is being deprecated in favor of splitting anti-alias settings into separate text-specific and screen-specific settings. The puropse of this change is to improve text-rendering performance when anti-aliasing of text is not necessary and screen anti-aliasing is. to see new functions related to this change.
Enhancements
Bidirectional text support. Visualize supports left-to-right and right-to-left reading-order text, as well as ligature and digraph glyphs, for fonts where these features are supported.
OOC point clouds. Multiple point clouds can now be loaded into a single scene.
New functions in ReferenceKey. The HPS::ReferenceKey class has three new functions:
- SetMaterialMapping(MaterialMappingKit const & in_kit)
- UnsetMaterialMapping()
- ShowMaterialMapping(MaterialMappingKit & out_kit) const
Spherical texturing. We have improved our algorithm that applies spherical texturing. Spherical textures will now wrap once both laterally and vertically by default, and texture orientation will flip vertically.
DXT support. DXT textures are now supported in software drivers, or in drivers operating in software mode.
ResetVisibility. HPS::ComponentTreeItem::ResetVisibility has been added to the API. This function resets the visibility to what is computed by the associated HPS::CADModel and HPS::View.
HPS 2019 SP2
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Communicator | 2018 SP2 U1 | ||||||
HOOPS Exchange | 2019 SP2 | Android simulator support is limited. See this explanation. | |||||
HOOPS Publish | 2019 SP2 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 30.1 | For iOS platforms, support is limited to 64-bit platforms for the Parasolid Sprockets (hps_sprk_parasolid and hps_sprk_exchange_parasolid). | |||||
RealDWG | 2019 | RealDWG 2019 works with Visual Studio 2017 Update 2 and Visual Studio 2015 Update 3 | |||||
Qt | 5.6 | ||||||
SketchUp | 2018 | Only x64 Sketchup is supported | |||||
wxWidgets | 3.1.1 | Linux uses wxWidgets 3.0.2 OS X uses wxWidgets 3.0.0 |
Enhancements
StepXML format supported. The StepXML file format can now be read by Visualize using the HOOPS Exchange sprocket.
HPS 2019 SP1 U1
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Communicator | 2018 SP2 U1 | ||||||
HOOPS Exchange | 2019 SP2 | Android simulator support is limited. See this explanation. | |||||
HOOPS Publish | 2019 SP2 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 30.1 | For iOS platforms, support is limited to 64-bit platforms for the Parasolid Sprockets (hps_sprk_parasolid and hps_sprk_exchange_parasolid). | |||||
RealDWG | 2019 | RealDWG 2019 works with Visual Studio 2017 Update 2 and Visual Studio 2015 Update 3 | |||||
Qt | 5.6 | ||||||
SketchUp | 2018 | Only x64 Sketchup is supported | |||||
wxWidgets | 3.1.1 | Linux uses wxWidgets 3.0.2 OS X uses wxWidgets 3.0.0 |
HOOPS Visualize 2019 Service Pack 1 Update 1 updates the Exchange and Publish APIs to version 2019 SP2, and also contains a number of bug fixes.
HPS 2019 SP1
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Communicator | 2018 SP2 U1 | ||||||
HOOPS Exchange | 2019 SP1 U1 | Android simulator support is limited. See this explanation. | |||||
HOOPS Publish | 2019 SP1 U1 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 30.1 | For iOS platforms, support is limited to 64-bit platforms for the Parasolid Sprockets (hps_sprk_parasolid and hps_sprk_exchange_parasolid). | |||||
RealDWG | 2019 | RealDWG 2019 works with Visual Studio 2017 Update 2 and Visual Studio 2015 Update 3 | |||||
Qt | 5.6 | ||||||
SketchUp | 2018 | Only x64 Sketchup is supported | |||||
wxWidgets | 3.1.1 | Linux uses wxWidgets 3.0.2 OS X uses wxWidgets 3.0.0 |
Functional Changes
Operator translation. The HandlesOperator translation function now appends transforms instead of applying a new transform after each action.
SketchUp support upgraded. HPS now supports SketchUp 2018, and SketchUp 2015 is no longer supported. The SketchUp 2018 API is only available for x64 Windows, which means 32-bit Visualize applications can no longer use SketchUp.
Enhancements
Shell merging. Multiple shells can now be automatically merged into a single shell using a HPS::SegmentOptimizationOptionsKit.
New way of copying components. Component entities can now be copied using HPS::Exchange::Component::CopyTo().
New import option. A new option related to configuration of sewing parameters called "Compute Non-Solid Shell Orientation" has been added.
to see new functions related to this enhancement.Override intrinsic color. A new setting is now available which enables developers to override the intrinsic color of geometry.
Physically Based Rendering. Visualize now supports Physically Based Rendering (PBR) materials. HPS::Search::Type::PBRMaterial was added to support PBR material searches.
New NVIDIA Profile Creator sample. A new sample, nvidia_profile_creator, is now available, which demonstrates how to programmatically select a GPU for NVIDIA-based systems.
New Space Mouse Operator. A new operator, HPS::SpaceMouseOperator, is now available, which works with the proprietary 3DConnexion Space Mouse. A sample is also provided, which demonstrates how to use it.
ExternalData flag. The new function HPS::Exchange::Component::IsExternalData() is now available, which can be used to determine if a product occurrence is "external data". This allows you to distinguish the component from a normal product occurrence.
HandlesOperator constraints. The HPS::HandlesOperator can now be constrained to specific rotation and translation axes.
Added ability to set alpha color value for lines. HPS::MaterialMappingKit and HPS::MaterialMappingControl now have [Set|Unset|Show]LineAlpha functions. You can also set the alpha value when you set an RGBA color. Setting an RGB color will default to an opaque alpha value.
New glyph options. Two new glyph options have been added related to disjoint regions and draw order. These are relevant for creating complex custom glyphs.
to see new functions related to this enhancement.Backgrounds in hardcopy. Your scene's background can now be exported with the rest of your scene during a hardcopy export. See HPS::Hardcopy::File::ExportOptionsKit::SetBackgroundPreference().
Using Unicode characters in 2D PDF. Exporting non-ASCII characters to 2D PDF is now supported. However, non-ASCII characters are exported as shells. The resulting "text" is not selectable and can't be copy-pasted, but otherwise appears normally.
New ambient occlusion option. A new optional parameter for setting the ambient occlusion sharpness value has been added. Please see HPS::PostProcessEffectsControl::SetAmbientOcclusion(). to see new functions related to this enhancement.
Parasolid on iOS. Parasolid is now supported on 64-bit iOS platforms.
New function for transforming HPS::Component. A new function, AddTransform(), appends a transform to Visualize geometry as well as its underlying PRC data. The function is available in HPS::Component, HPS::Exchange::Component, and HPS::Parasolid::Component.
Handedness for returned normals. The functions returning net vertex normals in HPS::ShellKey and HPS::MeshKey now take an additional parameter that specifies which polygon handedness (left or right) to assume. If no handedness is specified, Visualize will return data based on its implicitly precomputed values.
Images as marker glyphs. Defined images may now be used as glyphs. Rotation is also now supported.
Navigation cube. The navigation cube's faces, highlight, lines, and text can now be customized.
HPS 2019
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Communicator | 2018 SP2 U1 | ||||||
HOOPS Exchange | 2019 U1 | Android simulator support is limited. See this explanation. | |||||
HOOPS Publish | 2019 U1 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 30.1 | ||||||
RealDWG | 2019 | RealDWG 2019 works with Visual Studio 2017 Update 2 and Visual Studio 2015 Update 3 | |||||
Qt | 5.6 | ||||||
SketchUp | 2015 | 32-bit Sketchup is deprecated | |||||
wxWidgets | 3.1.1 | Linux uses wxWidgets 3.0.2 OS X uses wxWidgets 3.0.0 |
Functional Changes
Linux Compiler Upgrade. The compiler for Linux binaries has been upgraded to gcc/g++ 6.3. The glibc version is unchanged (still version 2.12). Please see the Supported Platforms page for more information.
ShowSubwindow Functions Removed. These previously deprecated overloads for ShowSubwindow() in SubwindowKit and SubwindowControl have been removed from the API:
- HPS::SubwindowKit::ShowSubwindow(Rectangle, Subwindow::Type) const
- HPS::SubwindowControl::ShowSubwindow (Rectangle, Subwindow::Type) const
Please use the other respective overloads from SubwindowKit or SubwindowControl instead.
RealDWG Functions Removed. These previously deprecated functions have been removed from the API:
- HPS::World::SetRealDWGDirectory()
- HPS::World::UnsetRealDWGDirectory()
Instead, please see the Programming Guide for instructions on how to set the RealDWG directory (as well as the object enablers directory, if used) in your environment's PATH.
Sketchup Deprecated for 32-bit Architectures. The 32-bit Sketchup sprocket will be removed in HPS 2019 SP1.
Operator Callback Changes. Operator::OnViewAttached and Operator::OnViewDetached now require a HPS::View parameter. This change enables the developer to easily know which HPS::View was attached or detached by the operator. Here are the new function signatures:
- virtual void HPS::Operator::OnViewAttached(HPS::View const & in_attached_view)
- virtual void HPS::Operator::OnViewDetached(HPS::View const & in_detached_view)
RealDWG Multiline Text. Visualize now uses RealDWG 2019, and the way multiline text is handled in RealDWG 2019 is not consistent with the previous release. RealDWG breaks long lines of text into multiple lines, and as a result, multiline text is not guaranteed to look the same as AutoCAD.
Enhancements
GPU Selection. For Visualize applications using DirectX 11 drivers, it is now possible to select a specific GPU or to direct Visualize to select an appropriate GPU. Users can select which GPU to use with the new function SetPreferredGPU(), which is available in the following classes:
In addition, users can query GPUs using Database::ShowAvailableGPUs().
Note: This option is not available for C# users using D3DImage, due to the reliance of D3DImage on the DirectX 9 driver.
KeyPath and ComponentPath Containers. New functions have been added to make it easier and less cumbersome to work with KeyPath and ComponentPath objects. Users can now interact with objects from these two classes as if they were simple data containers. These functions may also help reduce memory usage and simplify code.
As part of this change, all variations of the Append() function in both the KeyPath and ComponentPath classes have been marked as deprecated and will be removed in a future release.
Any KeyPath::Append() functions in your code should be replaced with the new KeyPath::PushBack() functions, which have exactly the same signature and return value as the KeyPath::Append() functions.
to see the KeyPath-related changes.
Distance Culling. It is now possible to cull geometry from a scene using distance culling. Every segment whose bounding is within the distance specified by the user will be drawn, while everything else will be culled.
In addition, it's now possible to search for segments which contain distance culling (similar to searching for any other attribute) using the new enumeration Search::Type::CullingDistance.
Usage information is available in the Programming Guide, and API additions can be viewed by .
Volume Culling. A new option for volume culling is now available. Users can specify a volume in world-coordinates. Every segment whose bounding is inside (either completely or at least partially) the defined volume will be drawn, while everything else will be culled.
A typical use case would be for reading in a model of a large building. When the user inspects a room in the building, the volume culling can be set up to be a bit larger than the volume the user is viewing, in which case the rest of the model will not be drawn, thus improving performance.
A simple example of volume culling is demonstrated in the Programming Guide, and the API changes can be reviewed by expanding the section below.
Physically Based Rendering. Visualize has added a new Physically Based Rendering mode. PBR simulates photo-realism by calculating the natural interaction of light and materials. There is a significant change to the underlying data and algorithms to accommodate this. For HPS 2019, PBR is offered as a read-only preview, for GLTF files imported through HOOPS Exchange. API access will be available in a subsequent release.
To try out PBR in Visualize, a sample GLTF file can be downloaded here.
HandlesOperator Available for Parasolid/Exchange Models. The HandlesOperator can now be used on models loaded through the Exchange, Parasolid, or ExchangeParasolid sprockets. Please see the Programming Guide for instructions on associating the HandlesOperator with an Exchange or Parasolid CAD model.
File Format Changes for Exchange Sprocket. This release includes a number of changes to the Exchange Sprocket. Please expand the section below for more details.
Hardcopy Export Improvements. Support has been added for transparent lines and text in hardcopy export.
Text Anti-Aliasing. Text Anti-Aliasing is now controlled by the VisualEffectsControl::SetAntiAliasing() function. By default, this value is on; therefore, all text will now be anti-aliased. There will be some minor text size and position changes as a result of this new behavior.
New ComponentPath Option. When calling CADModel::GetComponentPath(), there is a new optional PathType parameter which can be used to specify whether only unique, unambiguous components are returned, or whether all components are returned, regardless of ambiguity.
Nav Cube Transition Time. The Nav Cube's Smooth Transition time is now user-configurable. This sets the camera transition time when clicking on the Nav Cube. Here are the new API functions for this feature:
- NavigationCubeOperator::SetTransitionTime(HPS::Time const & in_time)
- NavigationCubeOperator::GetTransitionTime()
Component Transforms and DeInstancing. It is now possible to use Component::SetTransform() to modify PRC entity transforms. Additionally, Factory::DeInstanceComponent() is a new function which enables you to modify an instance of a component without affecting other instances.
MatrixKit Changes. For the C++ API, MatrixKit members are no longer opaque and you can now directly access the underlying float array via the data member. Due to this change, MatrixKit is no longer a subtype of Kit or Object.
OpenVR Sandbox Application Updated. The hps_openvr_sandbox application has been refactored for ease of use and simplicity, and now supports the OpenGL2 driver (in addition to the DX11 driver). For more information please see these instructions for building the OpenVR Simple application as well as a more in-depth explanation of the OpenVR sandbox in the updated Virtual Reality documentation.
ARKit for iOS. A new sandbox named ios_arkit_sandbox is now available in the samples directory. This sandbox provides a framework for developing augmented reality applications on iOS devices. Please see the Getting Started section for usage instructions.
ARCore for Android. A new sandbox named arcore_sandbox is now available in the samples directory. This sandbox provides a framework for developing augmented reality applications on Android devices. Please see the Getting Started section for usage instructions.
Miscellaneous
C# Intellisense XML files. XML files containing the C# documentation are now available for Windows C# users in the bin directories. The content of these files will be displayed via Intellisense in Visual Studio for C# users.
Downloadable Assets. New assets for use with the Visualize package can be downloaded from the Dev Zone. There you will find a large point cloud for benchmarking the OOC sprocket as well as a spherical panorama for building a skybox cubemap.
New Documentation. The following sections have been added to the documentation:
HPS 2018 SP2
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Communicator | 2018 SP1 U1 | ||||||
HOOPS Exchange | 2018 SP2 U1 | Android simulator support is limited. See this explanation. | |||||
HOOPS Publish | 2018 SP2 U1 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 30.1 | ||||||
RealDWG | 2018 | RealDWG 2018 works with Visual Studio 2017 and Visual Studio 2015 Update 3 | |||||
Qt | 5.6 | ||||||
SketchUp | 2015 | ||||||
wxWidgets | 3.1.1 | Linux uses wxWidgets 3.0.2 OS X uses wxWidgets 3.0.0 |
Enhancements
Shader-Based Face Displacement Redesign. Our face displacement algorithm has been redesigned to handle face displacement in a more robust way, resulting in more accurate z-ordering of geometry situated very close together. This will largely eliminate "bleed through" and stitching of edges that are supposed to be obscured.
As a result of the redesign, the units of face displacement have changed: The new units are linear, camera independent, and represent a much smaller displacement. The new units are 1/224 in the normalized depth range [0,1]. When calibrating your scene with the new units, it's likely that you will need much larger values than previous versions of Visualize. Any uses of face or vertex displacement may need to be re-tuned to render optimally. This affects the following functions:
- DrawingAttributeKit::SetFaceDisplacement()
- DrawingAttributeKit::SetVertexDisplacement()
- DrawingAttributeKit::SetGeneralDisplacement()
- DrawingAttributeControl::SetFaceDisplacement()
- DrawingAttributeControl::SetVertexDisplacement()
- DrawingAttributeControl::SetGeneralDisplacement()
- HiddenLineAttributeKit::SetFaceDisplacement()
- HiddenLineAttributeControl::SetFaceDisplacement()
If you previously set any face displacement values to correct for problematic rendering or artifacts in past versions of Visualize, we recommend trying to remove these adjustments, as it's possible that they may no longer be necessary.
Lastly, the z-order of co-planar geometry may change. Z-order of co-planar geometry is non-deterministic, and this new algorithm may yield different visual results than in previous releases.
These images show sample renderings from before and after this change:
![]() Before | ![]() After |
![]() Before | ![]() After |
![]() Before | ![]() After |
Segment-Level Display Lists Redesign. A redesign of segment-level display list handling should result in more accurate rendering. This change will provide a foundation for future enhancements in this area.
Attribute Remapping in Shell Optimization Functions. These functions for optimizing shells will now remap vertex and face attributes to match optimizations, using a heuristic process to determine the resulting attributes in the optimized shells:
Expose Implicit Capping Geometry Color. A new interface has been added to query color on cut geometry when used with the HPS::CuttingSection::MaterialPreference::Implicit setting, which allows HPS::KeyPath::GatherCutGeometry() to copy the implicitly generated face color (i.e., the weighted average of all geometry face colors where cut is applied) onto the gathered copy of the capping shell. The color is set on the faces of each shell gathered. Here are the new functions in the CutGeometryGatheringOptionsKit class:
- CutGeometryGatheringOptionsKit::SetColor(bool in_color)
- CutGeometryGatheringOptionsKit::ShowColor(bool &out_color)
- CutGeometryGatheringOptionsKit::UnsetColor()
Adding Parasolid Entities to HOOPS Exchange Models. A new function has been added to the Exchange-Parasolid Sprocket that facilitates adding a Parasolid body to an Exchange CAD Model:
In order to demonstrate various workflows using the Exchange-Parasolid Sprocket, including the simultaneous use of the native Exchange and Parasolid APIs in Visualize, we've added a new section to the Programming Guide for the Exchange-Parasolid Sprocket.
Marker Drawing Preference. The enum Marker::DrawingPreference has been added to the Marker class. This enum is useful when it's necessary to override the maximum size of hardware-based rendering of vertex markers. The value of DrawingPreference can be set or shown in these new functions in the MarkerAttributeControl and MarkerAttributeKit classes:
- MarkerAttributeControl::SetDrawingPreference::Marker::DrawingPreference in_preference)
- MarkerAttributeControl::ShowDrawingPreference(Marker::DrawingPreference &out_preference) const
- MarkerAttributeControl::UnsetDrawingPreference()
- MarkerAttributeKit::SetDrawingPreference::Marker::DrawingPreference in_preference)
- MarkerAttributeKit::ShowDrawingPreference(Marker::DrawingPreference &out_preference) const
- MarkerAttributeKit::UnsetDrawingPreference()
For more information on how to use Marker::DrawingPreference, please see the Programming Guide.
HPS 2018 SP1 U1
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Communicator | 2018 U2 | ||||||
HOOPS Exchange | 2018 SP2 | ||||||
HOOPS Publish | 2018 SP2 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 30.1.190 | ||||||
RealDWG | 2018 | RealDWG 2018 works with Visual Studio 2017 and Visual Studio 2015 Update 3 | |||||
Qt | 5.6 | ||||||
SketchUp | 2015 | ||||||
wxWidgets | 3.1.1 | Linux uses wxWidgets 3.0.2 OS X uses wxWidgets 3.0.0 |
HOOPS Visualize 2018 Service Pack 1 Update 1 is a bug fix release only.
HPS 2018 SP1
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Communicator | 2018 U2 | ||||||
HOOPS Exchange | 2018 SP1 U1 | ||||||
HOOPS Publish | 2018 SP1 U1 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 30.1.190 | ||||||
RealDWG | 2018 | RealDWG 2018 works with Visual Studio 2017 and Visual Studio 2015 Update 3 | |||||
Qt | 5.6 | ||||||
SketchUp | 2015 | ||||||
wxWidgets | 3.1.1 | Linux uses wxWidgets 3.0.2 OS X uses wxWidgets 3.0.0 |
Enhancements
OBJ Export. Visualize now supports export to the OBJ file format. Geometry-level color set on Shells and Meshes is supported, but please note the following are not currently supported: Line patterns, marker symbols, texture matrices, and face-level, edge-level and vertex-level colors, and shells with holes defined by negative face list values. For more information, please see the API Reference and the Programming Guide.
New Shell Functions. Three new InsertShellFromGeometry() function overloads have been added to the SegmentKey class. These are the same as other InsertShellFromGeometry() functions, only with different parameters:
- ShellKey HPS::SegmentKey::InsertShellFromGeometry(EllipseKey const &in_ellipse)
- ShellKey HPS::SegmentKey::InsertShellFromGeometry(CircleKey const &in_circle)
- ShellKey HPS::SegmentKey::InsertShellFromGeometry(CircularWedgeKey const & in_circular_wedge)
New Mesh Functions. These new functions always return a normal for a vertex, even if a normal hasn't been explicitly set. If a normal hasn't been set, Visualize computes one and returns it.
- HPS::MeshKey::ShowNetVertexNormals(VectorArray & out_normals)
- HPS::MeshKey::ShowNetVertexNormalsByRange(size_t in_start, size_t in_count, VectorArray & out_normals)
Exchange Sprocket: Directory File Search.Three new functions have been added to HPS::Exchange::ImportOptionsKit:
- HPS::Exchange::ImportOptionsKit::SetSearchRootDirectory()
- HPS::Exchange::ImportOptionsKit::UnsetSearchRootDirectory()
- HPS::Exchange::ImportOptionsKit::ShowSearchRootDirectory()
SetSearchRootDirectory() tells Exchange where to look for files related to the files currently being loaded. By default Visualize searches that directory and its subdirectories to find files referenced by the main file. Before this change, if a user wanted to search for files in other directories, these root directory settings (i.e., whether to search the root directory and its subdirectories for sub-parts) would be automatically set to false.
Isolate/Show/Hide Improvements. Specifically for models that use a HPS::ComponentPath (e.g., models loaded via the Exchange or Parasolid sprockets), a new setting is now available to control visibility with more precision. The optional HPS::Component::Visibility enum determines which parts of a subtree in a 3D model remain visible during Isolate/Show/Hide operations. Please see the Programming Guide for more information.
Parasolid: Convergent Modeling. Convergent modeling (i.e., hybrid modeling that combines faceted geometry with solid geometry) has been enabled in the Parasolid sprocket and the Exchange_Parasolid sprocket. Previously, Parasolid files were required to contain B-rep; this requirement has been lifted.
To convert non-Parasolid files containing faceted geometry (e.g., an STL file) to Parasolid, use the Exchange_Parasolid sprocket.
Limitation: When importing tessellated files via Exchange to Parasolid, face colors will not be imported. This limitation will be removed in the next release.
Parasolid Sprocket: Load Multiple Models. It is now possible to load multiple Parasolid files in a single scene. Before calling Parasolid::File::Import() for your second Parasolid file, call SetLocation() with a ComponentPath that indicates the location in the first CAD model where you would like to insert the second CAD model. Here are the new functions for this feature:
- HPS::Parasolid::ImportOptionsKit::SetLocation(ComponentPath const & in_path, MatrixKit const & in_transform = MatrixKit())
- HPS::Parasolid::ImportOptionsKit::UnsetLocation()
- HPS::Parasolid::ImportOptionsKit::ShowLocation(ComponentPath & out_path, MatrixKit & out_transformation) const
AR/VR Beta Release. A Beta release of Augmented Reality and Virtual Reality is now available for C++ users on Windows using the DirectX 11 driver only. Please see the Getting Started section and the Programming Guide for more information. This feature will be significantly modified in the next release, with a simpler interface for easier integration.
Selection Performance Improvements. SelectByRay() is faster in most cases. SelectByPoint() and SelectByArea() are faster for extremely large polyhedrons.
Implicit Capping Geometry Color. HPS::CuttingSection::MaterialPreference::Implicit now supports Segment and SegmentTree capping level.
Multiple Highlights of the Same Overlay Type. The Highlight functions in HighlightControl now include an option to remove existing highlights of the same Overlay type. The default (and previous) behavior is to remove highlights of the the same Overlay type. You can use this option to retain existing highlights and apply multiple highlights to a HighlightControl.
Passive Highlighting. Highlighting is typically active, meaning highlight attributes always override attributes set in the tree. There is now an option for passive highlighting, meaning that attributes that are attribute locked in the tree will not be overriden by the (passive) highlight. To use passive highlighting, use HighlightOptionsKit::SetPassive(true).
Functional Changes
Important: Kits are no longer thread-safe. (This change was originally communicated in the 2018 release notes – we are simply re-iterating it in this release for visibility.) Previously Kits were internally thread-synchronized. That thread-synchronization has been removed. Therefore, two or more user-defined threads cannot operate simultaneously on the same kit without incurring risk of data corruption. If you need to use Kits in this manner, you will need to protect the Kit access with thread synchronization techniques.
DirectX Driver DLLs Renamed. The DirectX 9 and DirectX11 driver DLLs have been renamed:
- hps_dx9.dll is now hps_directx9.dll
- hps_dx11.dll is now hps_directx11.dll
Exchange Sprocket: Platform Dependent Symbols. Classes and functions that are not supported on a particular platform will not be included in the sprocket library for those platforms. This mostly affects mobile platforms.
Xamarin for Android Update. The Xamarin sandbox for Android has been fixed with a new handle for passing platform data in calls to ApplicationWindowOptionsKit.SetPlatformData(). The new handle pins the platform data in memory to avoid garbage collection. For more information, see the GCHandle object named platformDataHandle in HPSView.cs.
iOS Static Libraries Name Change. The iOS static libraries have been renamed for consistency with other platforms. For example, instead of libhps_core_ios.a, this library is now called libhps_core.a in the iOS package.
HPS::TreeContext Documentation Corrections. The Programming Guide and API Reference have been updated to indicate that HPS::TreeContext is used for SelectByShell() and shell relation computations; it is not used with SelectByRay().
Changes to Multi-Coordinate Lines. (This change was originally communicated in the 2018 Update 1 release – we are re-iterating it for visibility.) For lines with specified coordinate spaces (often referred to as multi-coordinate lines), the following changes were made:
- The coordinate enumerations HPS::Line::CoordinateSpace::InnerWindow and HPS::Line::CoordinateSpace::InnerPixel have been renamed HPS::Line::CoordinateSpace::NormalizedInnerWindow and HPS::Line::CoordinateSpace::NormalizedInnerPixel. The new names will match the behavior of HPS::Coordinate::Space::NormalizedInnerWindow and HPS::Coordinate::Space::NormalizedInnerPixel (see HPS::WindowKey::ConvertCoordinate()).
- HPS::Coordinate::Space::NormalizedInnerPixel points are now transformed with the origin at the top lefthand corner instead of the bottom lefthand corner. Important: If your application is using HPS::Coordinate::Space::NormalizedInnerPixel, please be sure to update your code to reflect this change.
Upcoming Changes
DevToolSet Upgrade for Linux in 2019 Release. We're currently using DevToolSet 2 for Linux packages. For the 2019 release of Visualize HPS, we'll be upgrading to DevToolSet 6.
HPS 2018 U2
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Communicator | 2017 SP2 | ||||||
HOOPS Exchange | 2018 U2 | ||||||
HOOPS Publish | 2018 U2 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 30.1.190 | ||||||
RealDWG | 2018 | RealDWG 2018 works with Visual Studio 2017 and Visual Studio 2015 Update 3 | |||||
Qt | 5.6 | ||||||
SketchUp | 2015 | ||||||
wxWidgets | 3.1.1 | Linux uses wxWidgets 3.0.2 OS X uses wxWidgets 3.0.0 |
HOOPS Visualize 2018 Update 2 is a bug fix release only.
Functional Changes
DirectX Driver DLLs Renamed. The DirectX 9 and DirectX11 driver DLLs have been renamed:
- hps_dx9.dll is now hps_directx9.dll
- hps_dx11.dll is now hps_directx11.dll
HPS 2018 U1
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Communicator | 2017 SP2 | ||||||
HOOPS Exchange | 2018 U2 | ||||||
HOOPS Publish | 2018 U2 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 30.1.190 | ||||||
RealDWG | 2018 | RealDWG 2018 works with Visual Studio 2017 and Visual Studio 2015 Update 3 | |||||
Qt | 5.6 | ||||||
SketchUp | 2015 | ||||||
wxWidgets | 3.1.1 | Linux uses wxWidgets 3.0.2 OS X uses wxWidgets 3.0.0 |
Changes to Multi-Coordinate Lines. For lines with specified coordinate spaces (often referred to as multi-coordinate lines), the following changes were made:
- The coordinate enumerations HPS::Line::CoordinateSpace::InnerWindow and HPS::Line::CoordinateSpace::InnerPixel have been renamed HPS::Line::CoordinateSpace::NormalizedInnerWindow and HPS::Line::CoordinateSpace::NormalizedInnerPixel. The new names will match the behavior of HPS::Coordinate::Space::NormalizedInnerWindow and HPS::Coordinate::Space::NormalizedInnerPixel (see HPS::WindowKey::ConvertCoordinate()).
- HPS::Coordinate::Space::NormalizedInnerPixel points are now transformed with the origin at the top lefthand corner instead of the bottom lefthand corner. Important: If your application is using HPS::Coordinate::Space::NormalizedInnerPixel, please be sure to update your code to reflect this change.
wxWidgets Library Version. wxWidgets library support on Windows has been changed to v3.1.1. Linux binaries for Visualize HPS continue to support wxWidgets v3.0.2, and OSX binaries continue to support wxWidgets v3.0.0.
HPS 2018
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Communicator | 2017 SP2 | ||||||
HOOPS Exchange | 2018 | ||||||
HOOPS Publish | 2018 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 29.1 | ||||||
RealDWG | 2018 | RealDWG 2018 works with Visual Studio 2017 and Visual Studio 2015 Update 3 | |||||
Qt | 5.6 | ||||||
SketchUp | 2015 | ||||||
wxWidgets | 3.0 |
Enhancements
Highlight Querying. New functions are available to query the Highlight state within the scene. The HPS::HighlightControl class has two new functions, ShowHighlightState() and ShowHighlightStates() that query the highlight state of one or more KeyPaths. These functions answer the question, "Is this geometry or segment highlighted?" The WindowKey class has a new function FindHighlights() that returns an iterable list of KeyPaths that are highlighted. This function answers the questions, "Which Objects are highlighted in this Window?"
NavigationCubeOperator with Keypaths. In the NavigationCubeOperator class, the functions for setting and showing Navigation Cube's reference segments now use KeyPaths instead of SegmentKeys. This change allows Visualize to collect transformation information from along the KeyPath, which in turn sets more natural zoom and rotation points in the model for the NavigationCubeOperator.
Leader Line Clipping. To provide better visual appearance of text background shapes, a new class has been added to clip leader lines around a text background, keeping the text visible when a 3D model is rotated. Please see LeaderLineClippingElement in the API Reference.
Vertex Decimation, Randomization, and Displacement. New functions are available in the DrawingAttributeKit and DrawingAttributeControl. These functions are most relevant for applications using the OOC API and can help improve the appearance of point clouds/shells. Please see the API Reference for more information.
Hidden Line Sorting in Hardcopy. There is a new option to turn on Line Sorting for hardcopy export. This will ensure that lines and edges are printed in the proper Z-Order; however, performance will be slower. Use the function HPS::Hardcopy::GDI::ExportOptionsKit::SetHiddenLineSorting or HPS::Hardcopy::File::ExportOptionsKit::SetHiddenLineSorting to enable this option.
Windows C# assemblies. Windows C# assemblies now contain file version information.
Functional Changes
Changes in Visual Studio support. Visual Studio 2017 is now supported. Visual Studio 2013 is no longer supported.
Changes to debug binaries. Debug binaries in the Visual Studio packages are no longer appended with the 'd' character.
Changes in Linux support. The CentOS and Ubuntu Linux packages have been consolidated into a single package using glibc 2.12.
Important: Kits are no longer thread-safe. Previously Kits were internally thread-synchronized. That thread-synchronization has been removed. Therefore, two or more user-defined threads cannot operate simultaneously on the same kit without incurring risk of data corruption. If you need to use Kits in this manner, you will need to protect the Kit access with thread synchronization techniques.
OpenGL 1 driver discontinued. OpenGL 1 driver functionality was deprecated in the 2016 SP2 release and is no longer supported or available as a high-performance screen driver in Visualize. The driver enum setting of HPS::Window::Driver::OpenGL is now an alias for HPS::Window::Driver::OpenGL2. An enum called HPS::Window::Driver::OpenGL1Deprecated has been added - this enum references the OpenGL driver, which can still be used for headless environments, printing, and offscreen rendering. The HPS::Window::Driver::OpenGL1Deprecated enum is not suitable for high-performance screen rendering.
DX9 driver deprecated. The DX9 driver has been deprecated since the 2016 SP2 release. It will be discontinued in a future release. We strongly encourage partners to use a newer driver, such as DX11.
Selection Sorting behavior modification. Users may now choose how selection results are sorted. The HPS::SelectionOptionsKit and HPS::SelectionOptionsControl added an overload to the HPS::SelectionOptionsKit::SetSorting() function that takes an enumeration parameter that specifies the sorting method. Using the original function signature, SetSorting(true) will use Proximity sorting instead of Z sorting for HPS::SelectionControl::SelectByPoint().
Backface culling behavior modification. In previous versions of Visualize, backface culling was not properly activated with Segment-Level Display Lists due to a bug. The bug caused Visualize to draw backfaces that should have been culled. This bug has been fixed. In the new behavior, backfaces will not be drawn if they have a handedness set and backface culling is on. Some partners may experience an undesired change resulting from this bug fix. If you want backfaces to be drawn in your scene, call HPS::CullingControl::SetBackFace(false).
SetBRepData() replaced with SetBRepMode(). The deprecated function HPS::Exchange::ImportOptionsKit::SetBRepData() has been replaced by HPS::Exchange::ImportOptionsKit::SetBRepMode(). See HPS::Exchange::BRepMode for more information on the available import options.
Changes to Path Returned by CADModel::GetComponentPath(). Previously, if an unambiguous but simplified key path (e.g., an include path) were passed to CADModel::GetComponentPath(), not all components along that path would be returned. As of this release, components associated with keys that are implicitly along the key path will be included in the returned path. Please see the API Reference for more information.
ShowLicense() removed. HPS::World::ShowLicense(UTF8 & out_license) has been removed.
RealDWG loading. The following RealDWG functions have been deprecated: SetRealDWGDirectory(), ShowRealDWGDirectory(), and UnsetRealDWGDirectory(). Please see the DWG section of the programming guide for new instructions on loading RealDWG, in particular Step 3 of the Prerequisites section.
Transparent background export. One overload of Image::File::Export() function signature now includes an optional parameter for setting a transparent background (which can be useful for exporting PNG files):
Surface splitting. In the Exchange Sprocket, the following function names have been changed to match the corresponding functions in the HOOPS Exchange API:
- SetClosedSurfaceSplitting() is now SetClosedFaceSplitting()
- UnsetClosedSurfaceSplitting() is now UnsetClosedFaceSplitting()
- ShowClosedSurfaceSplitting() is now ShowClosedFaceSplitting()
- SetPeriodicSurfaceSplitting() is now SetPeriodicFaceSplitting()
- UnsetPeriodicSurfaceSplitting() is now UnsetPeriodicFaceSplitting()
- ShowPeriodicSurfaceSplitting() is now ShowPeriodicFaceSplitting()
Changes to the hps_dx9.dll and hps_dx11.dll files. The hps_dx9.dll and hps_dx11.dll binaries have a file version number that matches the rest of the Windows binaries. The version number is lower than in previous releases.
Known Limitations
DWG import. DWG import via the Exchange Sprocket is Beta. The behavior may not be stable. (There are no known problems with the DWG Sprocket.)
Multiprocess Translate to Parasolid. Multiprocess Translation to Parasolid via the Exchange Sprocket does not work on Linux.
Handles Operator Plane Translate. Using the HandlesOperator, if you rotate the model with the rotation handles and then use the plane handles to translate the model, the Plane handles will translate the model along an incorrect plane.
HPS 2017 SP2 U2
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Exchange | 2017 SP2 | ||||||
HOOPS Publish | 2017 SP2 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 29.1 | ||||||
RealDWG | 2018 | RealDWG 2018 works with Visual Studio 2015 There is no support for RealDWG in Visual Studio 2013 | |||||
Qt | 5.6 | ||||||
SketchUp | 2015 | ||||||
wxWidgets | 3.1 | Linux and OS X use wxWidgets 3.0 |
HOOPS Visualize 2017 Service Pack 2 Update 2 is a bug fix release only.
HPS 2017 SP2 U1
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Exchange | 2017 SP2 | ||||||
HOOPS Publish | 2017 SP2 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 29.1 | ||||||
RealDWG | 2018 | RealDWG 2018 works with Visual Studio 2015 There is no support for RealDWG in Visual Studio 2013 | |||||
Qt | 5.6 | ||||||
SketchUp | 2015 | ||||||
wxWidgets | 3.1 | Linux and OS X use wxWidgets 3.0 |
HOOPS Visualize 2017 Service Pack 2 Update 1 is a bug fix release only.
HPS 2017 SP2
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Exchange | 2017 SP2 | ||||||
HOOPS Publish | 2017 SP2 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 29.1 | ||||||
RealDWG | 2018 | RealDWG 2018 works with Visual Studio 2015 There is no support for RealDWG in Visual Studio 2013 | |||||
Qt | 5.6 | ||||||
SketchUp | 2015 | ||||||
wxWidgets | 3.1 | Linux and OS X use wxWidgets 3.0 |
Packaging Changes
- Directory names have changed: HOOPS_Visualize_2017_SP2_Win_vc12 has become HOOPS_Visualize_2017_SP2_Win_v120 and HOOPS_Visualize_2017_SP2_Win_vc14 has become HOOPS_Visualize_2017_SP2_Win_v140.
- A new sandbox for point cloud support is now available in samples->mfc_ooc_sandbox. This sandbox is an MFC-based application for showcasing the OOC feature. OOC is a Preview Release and may change in the 2018 release.
Enhancements
- Out-of-core point cloud support is now available as a preview release for 32-bit/64-bit Windows applications. Please see the Programming Guide for more information.
- Export to 3MF is now supported via the Exchange sprocket. This new implementation is largely modeled on HPS::Exchange::File::ExportPRC and similarly allows export of HPS::KeyPath objects. As with the ExportPRC interface, if the user wants to export a CADModel and key paths, the key paths can be specified via the Export3MFOptionsKit::SetAdditionalKeyPaths(). Export3MF variants now return an HPS::Exchange::ExportNotifier as the process of building up the A3DAsmModelFile is cancellable. Please see HPS::Exchange::File::Export3MF and HPS::Exchange::Export3MFOptionsKit.
- HTML Export is now available for 64-bit Windows applications through the HTML sprocket or the Publish sprocket. For more information, please see the following Programming Guide sections:
- HPS::Exchange::MeasurementOperator now handles touch events with new OnTouchDown(), OnTouchUp(), and OnTouchMove() handlers.
- It's now possible to modify anti-aliasing settings on the fly. See this function in the HPS::StandAloneWindowOptionsControl and HPS::StandAloneWindowOptionsKit classes:
- A new image export option has been added for setting a transparent background:
- PRC Export: Geometry References and Conditional Includes are now supported.
- In order to make the static model more flexible, Visualize now avoids complete static model regeneration in favor of patching portions of the static model in some cases. For more details, please see the Performance Considerations section of programming guide.
- Support for sub-geometry attributes has been expanded. For ShellKey, ShellKit, MeshKey, MeshKit, it's now possible to set edge visibilities and edge colors. For CylinderKey and CylinderKit, it's now possible to set vertex colors.
-
Memory usage has been reduced for two-point lines; the impact of this change will only be noticeable in scenes that contain large numbers of two-point lines.
-
For Windows applications, there is a new API for exporting to an EMF file:
- For Windows applications, there is a new API for exporting to the clipboard:
- In HPS::Exchange::CADModel, a new member function SetAllPMIInFront() forces all of the PMI in the CADModel to be rendered in front of the other geometry.
- Simulator targets are now included in the Android Package.
- In the Exchange Sprocket, metadata now reports units for Product Occurrences (previously only units for the CADModel were available). In the HOOPS Demo Viewer, these units are visible in the Properties pane.
Functional Changes
- In the HPS::SelectionOptionsKit class, SetScope() has a new optional parameter, in_scope_only, which offers added control over which elements are included in a selection:
- The syntax for ShowScope has changed; an extra boolean parameter is now required:
- New unset functions added to HPS::SelectionOptionsControl.
- Set/Unset/Show functions for vertex decimation and vertex randomization have been added to the HPS::DrawingAttributeKit and HPS::DrawingAttributeControl.
- Visualize has been updated to use RealDWG 2018.
- The function UnsetResourceMonitor() has been added to the HPS::DebuggingControl and HPS::DebuggingKit.
- OperatorControl functions that take raw Operator pointers as parameters have been deprecated. Please use these Set() and Push() functions with an OperatorPtr parameter. These are the functions that have been deprecated:
- Also in the HPS::SelectionOptionsKit, it's now possible to apply conditions during a selection operation:
Upcoming Changes
Starting with the 2018 release, the following changes will be in effect:
- Support for Visual Studio 2013 will be discontinued, and support for Visual Studio 2017 will be added.
- Ubuntu and CentOS packages will be consolidated into a single Linux package.
HPS 2017 SP1
Library compatibility information:
Library name | Version | Windows | Linux | OS X | Android | iOS | Notes |
---|---|---|---|---|---|---|---|
HOOPS Exchange | 2017 SP1 U1 | ||||||
HOOPS Publish | 2017 SP1 U1 | ||||||
.NET Framework | 4.0 | 4.5 required when using D3D_IMAGE_CANVAS | |||||
Parasolid | 29.1 | ||||||
RealDWG | 2017 | RealDWG 2017 works with Visual Studio 2015 There is no support for RealDWG in Visual Studio 2013 | |||||
Qt | 5.6 | ||||||
SketchUp | 2015 | ||||||
wxWidgets | 3.1 | Linux and OS X use wxWidgets 3.0 |
Functional Changes
- Starting with this release, the header file visualize_license.h has been replaced by hoops_license.h. Please replace your header files when upgrading your license. A new header file can be generated on the Developer Zone. By the 2018 release, licenses for all HOOPS products will be replaced with this single unified license.
Enhancements
- PRC, STL, VRML and U3D Import: HOOPS Visualize users now have access to a limited license of HOOPS Exchange that provides the ability to import these popular formats. Once you download and install HOOPS Exchange, you will be able to easily import these formats via the Sprocket Exchange component.
- HTML Export via HOOPS Publish: HOOPS Visualize licensees of HOOPS Publish Advanced now get high-level access to the HTML export capabilities that were added to HOOPS Publish. Direct HTML export without requiring HOOPS Publish will be added in the next release of HOOPS Visualize. This feature is only available on 64-bit versions of Visualize. This functionality is exposed in the File class through the ExportHTML() function.
-
Visualize now supports exporting PDFs with the Parts List widget through the Publish Sprocket. This feature requires the TableToPDF Publish add-on and a Publish Advanced license.
Click to see more info on the new Parts List feature.