The icon library has been reorganized to improve consistency and make icons easier to find and maintain. Developers must update references to icons that were removed, moved, or renamed. References using outdated names or paths may no longer resolve, resulting in missing icons.
Old: Cut-Snip New: Cut-snip Old: Automatic-Dimension New: Automatic-dimension Old: Manual-Dimension New: Manual-dimension Old: List-Select New: List-select Old: Junction-2-Way-90 New: Junction-2-way-90 Old: Junction-2-Way-120 New: Junction-2-way-120 Old: Junction-3-Way New: Junction-3-way Old: Junction-4-Way New: Junction-4-way Old: Add-New-drawing New: Add-new-drawing Old: Query-history New: Search-history
From 17.5 onwards, we are adding support for both AND and OR matching condition when multiple External Reference Keys are used to match a Product's External Reference. As a result, the fundamental logic for finding matching External Reference using E-KEY is completely reworked.
The new DSI constraints logic will be enabled by default in the 17.5 Major release.
The logic has been rewritten to better support both CET and Stage, allowing them to share the same backend for improved consistency.
There should be no behavioral differences between the old and new constraints logic. However, if you encounter any broken or unexpected behavior after enabling the new DSI constraints logic, please report it to Dev Support.
As a temporary workaround, you can override the forceDsApplyLogic() method in the DsPData or DsPDataProxy class to fall back to the old constraints logic.
A few unused and legacy classes have been removed from this package to simplify the codebase and improve maintainability.
OFDA XML exports now preserve part attribute notes and descriptions in separate elements that can be imported correctly by Spec. Several line-item, option, and specification elements have also been reordered for schema compatibility.
The export format is labeled 04.02.00, but the root Envelope continues to contain SchemaVersion="04.00.00". This is intentional for the 04.02.00 schema and is not the version displayed in the Calculations export menu.
TypeElevation.mergeAll() previously searched specifically for PanelTypeElevation objects. As a result, merge did not work correctly for non-panel systems extending TypeElevation.
mergeAll() now delegates candidate selection to collectMergers(). This allows the base class to support non-panel type elevations while retaining panel-specific behavior in PanelTypeElevation.
The product-part Query implementation now supplies its import support through a specialized QueryPartImportTabBehavior. This keeps part file import and option drag/drop behavior while integrating it with the new Query dialog sidebar.
Physical dimensions, generic codes, and XML export hooks are being moved toward the common part APIs so non-data-symbol parts can participate in the same SIF and OFDA workflows. Product-part creators now share the option-processing implementation used for override and addition specials.
The option-special dialog now provides a multiline description area so long option descriptions can wrap instead of expanding the dialog horizontally. This complements the related part-special dialog and query tooltip changes in cm.core.part.query.
The Views menu now has separate entries for horizontal and vertical split layouts.
The "persistent"/"persistant"=true prop arg in PropInputSetting was meant to be a quick implementation of setting the same value of a prop as the previous inserting same class Snapper.
Example:
The "persistent"/"persistant" logic is also happening while stretching Snappers which makes no sense according to the original intent. Therefore "persistent"/"persistant" will now be executed only in insert animation (Previously happening to all animation properties).
The single label previously used for split views has been replaced with separate labels for horizontal and vertical layouts. This allows each split-view option to be clearly identified in the user interface.
The legacy contextual view-switch toolbar models have been removed as part of the split-view toolbar update.
Split views now support both horizontal and vertical layouts. The split-view API has been updated so that horizontal consistently means views stacked top/bottom and vertical means views arranged left/right.
Resetting item tags on a TaggableSnapper now handles each part's user-modified Ind. Tag explicitly. If resetting those tags would change the keys of existing part adjustments, CET identifies the affected article codes and asks whether the adjustments should be preserved.
Article-view information rows now honor the existing Use newline setting consistently, including text supplied by PartInfoColumn and BasicPartInfoTreeColumn implementations.
Query dialog side tools are now represented by QueryTabBehavior and QueryTabWindow objects managed by a QueryTabContainer. This replaces the single-purpose rightWindow and moves part-import behavior out of QueryDialogBehavior into QueryPartImportTabBehavior.
Extensions that customize the Query dialog can return additional tab behaviors from QueryDialogBehavior.tabBehaviors() or replace the standard part/model import behaviors by overriding the corresponding behavior factory method.
In 17.0 sourceId was introduced at the core level to give parts a snapper specific unique identifier to help identify the owning object and ItemTag associated with the part. A gap was found from the changes where merged parts didn't have enough information to link changes from a part back to all ItemTags across all owners of the part. The main issue was that itemTagKey could be changed to not be the sourceId in a customization. To help solve this issue, PartSouceInfo was created as an object to own all the unique information that identifies the part. Currently this is Snapper owner, str sourceId, and str itemTagKey.
Resetting a user-modified Ind. Tag can change a part's adjustment key. CET now detects adjusted parts before the reset and can migrate their adjustments to the new key. This prevents price, quantity, and other part adjustments from unexpectedly becoming orphaned when an Ind. Tag returns to its default value.
Part-special descriptions are now edited in a multiline area. Long query-cell tooltips are also split into shorter lines so they remain readable without producing excessively wide tooltips.
3D text built through Text3D now gets character spacing from glyph advance data instead of deriving spacing from each character outline's maximum x extent.
In practice this makes 3D text spacing better match 2D text, especially for strings containing whitespace. The change is most noticeable in snappers that build meshes from text outlines, such as 3D Text.

Many unused classes and functionality have been removed from this package to simplify the codebase and improve maintainability.
Many unused classes and functionality have been removed from this package to simplify the codebase and improve maintainability.