Est. 2000 Advanced

Knowledge Fusion

The knowledge-based engineering (KBE) rule language built into Unigraphics and Siemens NX - a declarative class-and-rule language, derived from Heide Corporation's Intent!, that drives CAD geometry, assemblies and design checks from engineering rules

Created by Unigraphics Solutions (later UGS / Siemens), from the Intent! engine of Heide Corporation / Engineering Intent

Paradigm Declarative, rule-based, object-oriented (knowledge-based engineering)
Typing Typed rules (number, integer, string, name, boolean, list, point, ...)
First Appeared 2000
Latest Version Ships as part of Siemens NX (no separate version number)

Knowledge Fusion (KF) is the knowledge-based engineering (KBE) language built into the Unigraphics CAD system, now Siemens NX. A KF program is a set of classes made of typed rules, written in text files with the .dfa extension. Each rule states how a value is derived, such as a length, a list of holes, a material choice or a whole child solid, and NX keeps the model consistent with those rules. Engineers use it to encode design knowledge (“a flange this thick needs this many bolts of this size”) so that parts and assemblies regenerate correctly when inputs change, and to check models against company standards.

The language came from outside Unigraphics. It is a descendant of Intent!, a Lisp-based KBE language written by Heide Corporation, a company founded by veterans of the pioneering ICAD system. According to Engineering Intent, Unigraphics bought the engine in 1997; it released it as Knowledge Fusion with Unigraphics V17 in 2000.

History & Origins

From ICAD to Intent!

Knowledge-based engineering began with ICAD, founded in Cambridge, Massachusetts in 1984. ICAD’s language (IDL) was an object-oriented, declarative language built on Lisp. Customers such as aerospace and automotive manufacturers used it to generate designs from rules rather than draw them. According to Engineering Intent’s own history, one of ICAD’s early hires was Scott Heide, an MIT engineering graduate who went on to build a consulting department there and run ICAD’s Far East distribution.

Heide later set up Heide Corporation, which became Engineering Intent in 1995. It built Intent, a Windows-based engineering automation environment that was much cheaper than ICAD. Nick Milton’s Knowledge Technologies (2008) describes the Intent! language as “in some ways similar to ICAD”: Lisp-based, and “developed by people who worked on the development of ICAD”.

Unigraphics buys the engine (1997)

According to Engineering Intent’s own company history, in 1997 it sold its core engine technology to Unigraphics; the terms of the deal are not public. Unigraphics was then a division of EDS and became the separately listed Unigraphics Solutions in 1998. Unigraphics put the Intent! engine inside its own CAD system, on top of the Parasolid geometry kernel. A 2013 survey in Computer-Aided Design by Chandrasegaran and colleagues summarises it: the Intent! KBE language “was integrated into NX as the Knowledge Fusion tool”.

Launch in Unigraphics V17

The Norwegian trade weekly Teknisk Ukeblad reported in September 2001 that Knowledge Fusion was “launched in Unigraphics version 17” and had since been “greatly expanded”. Unigraphics V17 is generally dated to October 2000. Real KF source files from the period carry a first-line header naming the release they target, such as #! UG/KBE 17.0 or #! UG/KF 17.0.

When Unigraphics NX arrived in July 2002, KBE was no longer a separate add-on. In March 2003, Automotive Design & Production quoted EDS as calling Knowledge Fusion its “knowledge engine” and said KBE was now “embedded throughout Unigraphics NX”. It appeared in the Quick Check and Check-Mate validation tools and in the packaged “process wizards”.

The other branch: Autodesk Intent

Engineering Intent kept selling its own Intent product. On 19 October 2005 Autodesk announced it had acquired “certain assets” of the Waltham, Massachusetts company, which it described as having “a competitively unique rules engine”. Autodesk sold the technology as Autodesk Intent, an engineer-to-order tool working with Inventor. So two commercial descendants of Intent! exist, one inside NX and one inside the Autodesk product line, and they developed separately after 1997.

A note on the 1995 date

The CodeArchaeology encyclopedia lists Knowledge Fusion under 1995 and describes it as a general expert-system environment for “healthcare, finance, and industrial applications”. No source found supports that description. Knowledge Fusion is a CAD-embedded engineering language. 1995 is the year Heide Corporation became Engineering Intent and built the Intent environment that KF descends from. Knowledge Fusion itself first shipped around 2000.

Design Philosophy

KF follows the classic KBE model inherited from ICAD and Intent!:

  • Rules, not steps. A class does not run top to bottom. It declares rules, each of which says what a value is in terms of other values. Change an input and every dependent rule, including child geometry, follows.
  • The product model is an object tree. A class can declare child rules, which create instances of other classes: lines, datum planes, solid features, or other user classes. A design becomes a tree of objects, each defined by its own rules.
  • Live inside the CAD system. Unlike stand-alone KBE systems of the 1990s, KF classes create real NX objects. They can also adopt existing NX geometry so that rules can reason about models built interactively. Siemens’ “Knowledge Fusion for Designers” course lists the Knowledge Fusion Navigator, design control through engineering rules, adoption, user defined features, assemblies and optimisation as its core topics.
  • Non-geometric knowledge counts too. Rules can compute weights, select catalogue parts, read files, or query databases through ODBC. Milton calls the database access one of KF’s strengths.

Key Features

Classes and typed rules

A KF source file defines a class with DefClass: and lists the classes it inherits from in parentheses. Every rule has a type in parentheses, a name, a colon, and a value expression. Published DFA files use rule types including number, integer, string, name, boolean and list, and constructors such as Point(x, y, z). Modifiers in the same parentheses change how a rule behaves:

ModifierMeaning
ParameterAn input that can be supplied by a parent class, a dialog, or the user
CanonicalMarks a parameter as one of the class’s defining inputs
UncachedThe value is recomputed each time it is asked for instead of being stored

A rule refers to another rule by its name followed by a colon. Width: means “the value of the Width rule”. Comments start with #, and #+ ... #- brackets a block comment.

Child rules

A (child) rule creates an instance of another class and gives its attributes as name, value; pairs, for example a ug_line with Start_Point and End_Point. Other classes found in published code include ug_point, ug_datum_plane, ug_mass_props, ug_base_part and ug_scenario_result (CAE results). Instances can also be created programmatically with ug_createInstance({ class, ug_point; Position, ...; }).

Blocks and loops

@{ ... } introduces a block of sequential expressions with local variables, which are prefixed $ and bound with <<. A Lisp-like loop form iterates and accumulates:

loop {
  for $i from 1 to length(points:);
  for $p is nth($i, points:);
  collect ...;
};

Both collect and append gather results, and do runs an expression for its side effects.

Dialogs bound to rules

KF classes can drive NX dialogs designed with UI Styler and stored in .dlg files. The binding works through naming conventions on rules. A rule named Material is the field value. Material_LIST supplies its menu choices, Material_VISI its visibility, and Material_SENS or ok_sens whether a control is enabled. In-house KF applications such as the published GitHub examples use this to give engineers a form-driven front end to a rule-driven model.

A small example

The following illustrative class draws a rectangular border whose size depends on a sheet-size parameter. It is written in the syntax of published DFA files, but it is not copied from any of them and has not been run in NX.

#! NX/KF 3.0
DefClass: SheetBorder (ug_base_part);

  # Input: 1 = A-size, 2 = B-size (inches)
  (integer Parameter) SheetSize: 1;

  (number) Width:  if (SheetSize: = 1) then 11 else 17;
  (number) Height: if (SheetSize: = 1) then 8.5 else 11;

  (child) bottomEdge:
  {
    class,       ug_line;
    Start_Point, Point(0, 0, 0);
    End_Point,   Point(Width:, 0, 0);
  };

  (child) topEdge:
  {
    class,       ug_line;
    Start_Point, Point(0, Height:, 0);
    End_Point,   Point(Width:, Height:, 0);
  };

  # ... left and right edges follow the same pattern

Changing SheetSize from 1 to 2 changes Width and Height, and the child lines follow. Nothing in the class says when to redraw. The dependencies say what each value is.

Evolution

  • Unigraphics V17-V18 (2000-2001): KF arrives and is quickly extended. Unigraphics Solutions told Teknisk Ukeblad in 2001 that it had been greatly expanded.
  • Unigraphics NX (2002) onwards: KBE spreads into standard NX functions, including validation (Check-Mate, Quick Check) and the process wizards. File headers in community code show KF being used continuously from UG/KF 17.0 through UG/KF 19.0, UGNX/KF 2.0 and NX/KF 3.0.
  • NX Open era: Siemens’ general-purpose API, NX Open, available from C++, .NET, Java and Python, became the main route for NX automation. It includes KF interfaces, such as rule-manager and adoption calls, so the two can be mixed. In June 2021 Siemens made NX/Open an alternative to KF for writing Check-Mate checks. In June 2023 it added a graphical Checker Editor to reduce “the need for complex language expertise”.

Current Relevance

Knowledge Fusion is a mature, specialised language with a small but real audience. It still ships as part of Siemens NX, and Siemens’ 2023 Check-Mate announcement still discusses KF expertise. Some third-party NX training providers reportedly still offer KF courses. However, Siemens has steered most new automation work towards NX Open and graphical rule editors, and its own “Knowledge Fusion for Designers” instructor-led course is listed as no longer offered. KF code also stays inside NX: there is no stand-alone interpreter, compiler or open-source implementation, so it cannot be run without an NX licence. That is why there is no Docker image for it.

Why It Matters

Knowledge Fusion is arguably one of the main routes by which 1980s knowledge-based engineering, the Lisp-based, rule-driven product modelling pioneered by ICAD, entered mainstream CAD. Through Intent! it carries ICAD’s ideas of declarative rules, rule-driven object trees and child objects into a system used by large manufacturers. Its separate descendant, Autodesk Intent, took the same lineage into the Autodesk world. KF showed that KBE did not have to be a separate, expensive specialist system: it could be a language inside the CAD tool, editing the same parts and assemblies engineers already work on.

Timeline

1984
ICAD, widely described as the first commercial knowledge-based engineering system, is founded in Cambridge, Massachusetts; Scott Heide joins its staff soon after
1995
Heide Corporation becomes Engineering Intent and builds Intent, a low-cost Windows-based engineering automation environment around its Intent! KBE language
1997
According to Engineering Intent's own history, it sells its core engine technology to Unigraphics, which markets it as Knowledge Fusion
2000
Knowledge Fusion is launched in Unigraphics version 17 (V17 is dated October 2000)
2001
September: Unigraphics Solutions says Knowledge Fusion has been greatly expanded to make wider use of engineering knowledge across the development process
2002
July: Unigraphics NX ships, with KBE (Knowledge Fusion) built into design-validation tools such as Check-Mate and into the process wizards
2005
19 October: Autodesk announces it has acquired certain assets of Engineering Intent; the sibling Intent language continues as Autodesk Intent, separate from Knowledge Fusion
2023
June: NX adds a graphical Checker Editor for Check-Mate, reducing the language expertise needed to write custom checkers; Knowledge Fusion remains part of NX

Notable Uses & Legacy

NX Check-Mate and Quick Check

Siemens' design-validation tools check parts, assemblies and drawings against company standards. In 2003 Gardner's coverage of Unigraphics NX named them among the places KBE is embedded in the product; Check-Mate checks can be customised by users. Siemens added NX/Open as an alternative way to write checks in June 2021 and a graphical Checker Editor in June 2023.

Unigraphics NX process wizards

Packaged applications such as the Body Design Wizard for automotive work, described by EDS in 2003 as capturing industry-specific process knowledge in best-practice workflows, with KBE 'at the core' doing many computations in the background.

Rule-driven drafting and design utilities

In-house KF applications such as those Dave Tolsma published on GitHub: drafting borders, fastener selection dialogs, hole charts, combined-centroid and mass-property expressions, and points imported from text files, written in versions from UG/KF 17.0 to NX/KF 3.0.

Mould design research

Wang and Huang (Advanced Materials Research, 2011) used NX/KF to build rule-driven mould parts, presenting it as a way to combine CAD geometry with knowledge-based engineering.

Language Influence

Influenced By

Intent!

Running Today

Run examples using the official Docker image:

docker pull
Last updated: