Open CASCADE Technology: Standard_NotImplemented Exception

Diagnostic signature

Standard_NotImplemented

Standard_NotImplemented is an Open CASCADE Technology runtime exception raised when invoking an unsupported algorithm, calling an optional or unfulfilled virtual interface method, or performing an operation that has no valid implementation for the specific geometry or driver class.

What it means

Standard_NotImplemented is a concrete exception class in Open CASCADE Technology (OCCT) that inherits from Standard_ProgramError (and ultimately from Standard_Failure and std::exception). It indicates that the invoked function, algorithm branch, or virtual interface method is deliberately declared but lacks an active or supported implementation in the target class. In the OCCT architecture, abstract base classes or specialized evaluators often provide default implementations of certain virtual methods that raise Standard_NotImplemented instead of being pure virtual. When client code or internal algorithms attempt to call one of these methods without a subclass override, or when calling operations on geometric entities where the operation is mathematically or architecturally unsupported, the kernel terminates the current execution path by raising this exception.

Why it happens

Open CASCADE Technology raises Standard_NotImplemented in several specific situations: (1) Calling a virtual method on a base class (such as presentation computation, persistence serialization, or surface topology analysis) where the base class provides a stub that raises Standard_NotImplemented, but the derived class did not override the method. (2) Performing geometric operations (such as reversal, coordinate transformations, or analytical derivations) on non-canonical or specialized evaluation curves and surfaces that explicitly forbid or do not implement those transformations. (3) Requesting document storage or retrieval operations through application framework drivers where the requested format, stream method, or session state is unsupported by the registered driver. (4) Explicit macro invocations via Standard_NotImplemented::Raise(...) or Standard_NotImplemented_Raise_if(condition, message) in OCCT component routines when reaching an unhandled feature branch.

Minimal reproduction

#include <iostream>
#include <Standard_NotImplemented.hxx>
#include <Standard_Failure.hxx>

class CustomEvaluator
{
public:
  virtual void Transform()
  {
    Standard_NotImplemented::Raise("CustomEvaluator::Transform is not implemented");
  }
};

int main()
{
  try
  {
    CustomEvaluator evaluator;
    evaluator.Transform();
  }
  catch (const Standard_Failure& anExcept)
  {
    std::cerr << "Caught exception: " << anExcept.GetMessageString() << std::endl;
    return 1;
  }
  return 0;
}

How to fix it

Implement the missing virtual member function in the derived class, convert specialized geometry into general B-Spline representations before performing transformations, or use supported algorithmic alternatives.

```cpp
#include <iostream>
#include <Standard_NotImplemented.hxx>
#include <Standard_Failure.hxx>

class CustomEvaluator
{
public:
  virtual void Transform()
  {
    // Concrete implementation provided instead of raising Standard_NotImplemented
    std::cout << "CustomEvaluator::Transform executed successfully." << std::endl;
  }
  virtual ~CustomEvaluator() = default;
};

int main()
{
  try
  {
    CustomEvaluator evaluator;
    evaluator.Transform();
  }
  catch (const Standard_Failure& anExcept)
  {
    std::cerr << "Caught exception: " << anExcept.GetMessageString() << std::endl;
    return 1;
  }
  return 0;
}
```

Step 1

Step 2

Step 3

Step 4

Upstream references

Open CASCADE Technology OCCT 7.8.0 — Standard_NotImplemented.hxx — retrieved 2026-08-11

Standard_ProgramError.hxx Source File - Open CASCADE Technology (OCCT 7.8.0)

Standard_DefineException.hxx Source File - Open CASCADE Technology (OCCT 7.8.0)