Why would Axis->Abort() throw NO_AXES_MAPPED?

[RMP 10.3.1]

Under some conditions that I don’t quite understand, calling Axis::Abort() is throwing an RsiError with the code RSIMotionMessageNO_AXES_MAPPED.

number: RSIMotionMessageNO_AXES_MAPPED (3865)
lineNumber: 359
isWarning: false
text: 0x2c33e99d "Motion: no axis mapped :: {motion.c, line 1132}  : unable to perform action 0x3 (Error 3865) (RapidCodeMotion::Abort) (Object 1) (File rapidcodemotion.cpp) (Line 359) (Version"
functionName: 0x2c33eb9d "RapidCodeMotion::Abort"
shortText: 0x2c33ed9d ""
fileName: 0x2c33ef9d "rapidcodemotion.cpp"

The axis is in a MultiAxis.

Can you explain the problem that’s causing the exception?

The MultiAxis doesn’t have any associated axes. So when you asked it to Abort, it didn’t know where to apply it.

…but I’m calling it for an axis, not a multi axis.

You are likely creating the MultiAxis object with a Motion number that is used by an axis. Not good. When you clear (or add to) the axes on the MultiAxis object, you’ve effectively fubared your axis object.

When creating a MultiAxis Object, you want to do use the following formula.
Real Axis Count + Phantom Axis Count + (this MultiAxis #). That way you don’t have overlap between Axes and MultiAxis objects.

1 Like

That’s probably correct. I (mis)thought I was supposed to use a index in a separate space from axes. I’ll use an index beyond the axis count.