NXKnowledge

NX Open C++ Reference Guide > Namespaces > NXOpen::Features

NXOpen::Features Namespace Reference (C++)

Documented purpose: "Provides classes and interfaces for features."

This namespace is enormous — 759 classes in the NX 2212 C++ reference — because nearly every parametric feature type in NX (every dialog you can open from Insert > Design Feature, Insert > Detail Feature, sheet metal, routing, etc.) gets its own Feature subclass plus a matching ...Builder class. This file summarizes the pattern and the handful of classes almost every NX Open developer touches, rather than enumerating all 759.

Sub-namespaces

NXOpen::Features itself nests further feature-domain namespaces: AECDesign, DrawShapes, Industry, SheetMetal, ShipDesign, StructureDesign, Subdivision, TopologyOptimization, VehicleDesign — each scoped to one discipline's feature set (e.g. SheetMetal for sheet metal features).

The core pattern: Feature + Builder

Every parametric feature in NX Open follows a two-class pattern:

  • Feature (base class, abstract) — "Represents a feature on a part. This is an abstract class, and cannot be instantiated." All concrete feature types (e.g. Extrude, Revolve, a specific Hole) derive from this. You interact with existing features on a part primarily through this base type and its subclasses, reached via NXOpen::Features::FeatureCollection.
  • <Name>Builder — the object you actually construct, configure, and Commit() to create or edit an instance of the corresponding feature. NX Open's convention (documented on nearly every builder class) is: "To create or edit an instance of this class, use NXOpen::Features::Builder." Builders are always obtained from a factory method (typically on NXOpen::Features::FeatureCollection or a domain-specific collection), configured via properties/methods, then committed — the standard NX Open builder pattern used across the entire API (not just Features).

FeatureCollection

NXOpen::Features::FeatureCollection"Represents a collection of features. To obtain an instance of this class, refer to NXOpen::BasePart." (Created in NX3.0.0.) This is the entry point for enumerating a part's feature tree and for creating new features via its Create...Builder() factory methods.

Commonly used builders (class-level summary)

Class One-line description
ExtrudeBuilder Represents a extrude feature builder.
RevolveBuilder Represents a revolve builder.
HoleFeatureBuilder Represents a Hole feature builder.
HolePackageBuilder Builder for a hole package (pattern of holes using a standard/counterbore/countersink/tapped definition).
FillHoleBuilder Builder for a "fill hole" feature (plugs/removes a hole).
ResizeHoleBuilder Builder for resizing an existing hole feature.

(HolePackage / FillHole / ResizeHole are the corresponding Feature subclasses for each of those builders, following the Feature+Builder pattern above.)

Other very-high-traffic builders that exist in this namespace but were not individually pulled in this pass (same pattern applies — look them up by name in annotated.html or classes.html in this book): BlockFeatureBuilder, CylinderBuilder, SphereBuilder, ChamferBuilder, EdgeBlendBuilder, PatternFeatureBuilder, MirrorBuilder, TrimBodyBuilder, BooleanFeatureBuilder/boolean-operation builders, UserDefinedFeatureBuilder (for adding custom/UDF features).

Practical notes for NX Open developers

  • Because Feature is abstract, generic code that walks a part's feature tree (Part.Features in the object model) works with the base type and down-casts (or uses type checks) to the specific subclass only when it needs feature-specific data.
  • Builders are transient — create one, set its inputs, call Commit() (and typically Destroy() afterward to free the builder), and the committed result is the actual Feature object added to the part.
  • This is the same namespace/class-per-feature pattern mirrored in the .NET, Java, and Python NXOpen bindings (only naming casing/module path differs) — see the sibling features-namespace.md files in the other three language folders where available.

Source: https://docs.sw.siemens.com/en-US/doc/209349590/PL20220512394070742.nx_open_c_plus_plus_ref · retrieved 2026-07-07