Introduction
In FME 2025.2 we are simplifying the curve geometry API to support upcoming b-spline functionality. Two long-standing methods - IFMECurve::snip() and IFMECurve::snipByPoints() - are now deprecated and replaced with methods on IFMEGeometryTools. This article describes what changed, and how third-party C++ developers can migrate their plug-ins and applications.
C++ Applications
After updating your build to the 2025.2 SDK, existing code that calls the two IFMECurve methods will fail to compile. Resolving those errors and adopting the new methods should result in a successful build.
Summary of Changes
Note that you will need to include igeometrytools.h in order to use these methods
| Old API | New API |
|---|---|
| FME_Status IFMECurve::snip(...) | FME_Status IFMEGeometryTools::snip( IFMECurve*& curve,… ) |
| FME_Status IFMECurve::snipByPoints(...) | FME_Status IFMEGeometryTools::snipByPoints( IFMECurve*& curve, … ) |
Impact & Recommended Action
| Impact | Recommended Action |
|---|---|
Compile errors – Calls to the two removed IFMECurve methods will not resolve. | Replace each call with IFMEGeometryTools::snip() or ::snipByPoints() |
| Runtime failures on non-recompiled plug-ins | If your plug-in isn’t rebuilt and IFMECurve::snip() or IFMECurve::snipByPoints() encounters a b-spline, the deprecated stubs return FME_FAILURE |
Migration Steps
1. Update SDK
Point your project to the FME 2025.2 SDK include/lib paths.
2. Search & Replace
For each occurrence of
curve->snip(...);
curve->snipByPoints(...);3. Replace with:
IFMEGeometryTools* tools = ...
FME_Status status = tools->snip(curve, /* params */);
FME_Status status = tools->snipByPoints(curve, startPt, endPt);4. Adjust Pointer Semantics
Because the new helpers take IFMECurve*&, your curve variable may now reference a different concrete type after the call (e.g., stroked line). Update downstream code if it assumes the original type.
Before / After Example
// ----- Pre-2025.2 -----
FME_Status err = curve->snip(FME_MEASURE, FME_FALSE, 0.0, 100.0);
// ----- 2025.2 Migration -----
FME_Status err = tools->snip(
curve, // may be replaced with a stroked line!
FME_MEASURE,
FME_FALSE,
0.0,
100.0);