Split Body (C#) failing

I've been having no success with the follow piece of code designed to split a part in half. It runs through fine, but 'myFeature' at the end is null and no split occurs in the model. Can anyone suggest what's wrong?

<span class="lnum">   1:  </span><span class="kwrd">public</span> <span class="kwrd">void</span> SplitAllBodies()
<span class="lnum">   2:  </span>{
<span class="lnum">   3:  </span>    <span class="rem">// Select the split plane</span>
<span class="lnum">   4:  </span>    swDoc.ClearSelection2(<span class="kwrd">true</span>);
<span class="lnum">   5:  </span>    <span class="kwrd">bool</span> boolstatus = swDoc.Extension.SelectByID2(<span class="str">"Front Plane"</span>, <span class="str">"PLANE"</span>, 0, 0, 0, <span class="kwrd">true</span>, 0, <span class="kwrd">null</span>, 0);
<span class="lnum">   6:  </span>    
<span class="lnum">   7:  </span>    <span class="rem">// Establish the result of split</span>
<span class="lnum">   8:  </span>    <span class="kwrd">object</span>[] bodyArray = (<span class="kwrd">object</span>[])(swDoc.FeatureManager.PreSplitBody());
<span class="lnum">   9:  </span>    swDoc.ClearSelection2(<span class="kwrd">true</span>);
<span class="lnum">  10:  </span> 
<span class="lnum">  11:  </span>    <span class="rem">// Mark bodies to create</span>
<span class="lnum">  12:  </span>    <span class="kwrd">object</span>[] vBodyNames = <span class="kwrd">new</span> <span class="kwrd">object</span>[2];
<span class="lnum">  13:  </span>    <span class="kwrd">object</span>[] vBodyOrigins = <span class="kwrd">new</span> <span class="kwrd">object</span>[2];
<span class="lnum">  14:  </span> 
<span class="lnum">  15:  </span>    vBodyNames[0] = <span class="str">""</span>;
<span class="lnum">  16:  </span>    vBodyNames[1] = <span class="str">""</span>;
<span class="lnum">  17:  </span>    vBodyOrigins[0] = <span class="kwrd">null</span>;
<span class="lnum">  18:  </span>    vBodyOrigins[1] = <span class="kwrd">null</span>;
<span class="lnum">  19:  </span> 
<span class="lnum">  20:  </span>    DispatchWrapper[] bodiesToMark = (DispatchWrapper[])ObjectArrayToDispatchWrapperArray(bodyArray);
<span class="lnum">  21:  </span>    DispatchWrapper[] bodyOrigins = (DispatchWrapper[])ObjectArrayToDispatchWrapperArray(vBodyOrigins);
<span class="lnum">  22:  </span>    DispatchWrapper[] bodyNames = (DispatchWrapper[])ObjectArrayToDispatchWrapperArray(vBodyNames);
<span class="lnum">  23:  </span>    
<span class="lnum">  24:  </span>    <span class="rem">// Create new bodies</span>
<span class="lnum">  25:  </span>    Feature myFeature = ((Feature)(swDoc.FeatureManager.PostSplitBody(bodiesToMark, <span class="kwrd">true</span>, bodyOrigins, bodyNames)));
<span class="lnum">  26:  </span>    Console.WriteLine(myFeature);
<span class="lnum">  27:  </span>}
<span class="lnum">  28:  </span> 
<span class="lnum">  29:  </span><span class="kwrd">public</span> DispatchWrapper[] ObjectArrayToDispatchWrapperArray(<span class="kwrd">object</span>[] SwObjects)
<span class="lnum">  30:  </span>{
<span class="lnum">  31:  </span>    <span class="kwrd">int</span> arraySize = 0;
<span class="lnum">  32:  </span>    arraySize = SwObjects.GetUpperBound(0);
<span class="lnum">  33:  </span>    DispatchWrapper[] dispwrap = <span class="kwrd">new</span> DispatchWrapper[arraySize + 1];
<span class="lnum">  34:  </span> 
<span class="lnum">  35:  </span>    <span class="kwrd">int</span> arrayIndex = 0;
<span class="lnum">  36:  </span>    <span class="kwrd">for</span> (arrayIndex = 0; arrayIndex <= arraySize; arrayIndex++)
<span class="lnum">  37:  </span>    {
<span class="lnum">  38:  </span>        dispwrap[arrayIndex] = <span class="kwrd">new</span> DispatchWrapper(SwObjects[arrayIndex]);
<span class="lnum">  39:  </span>    }
<span class="lnum">  40:  </span>    <span class="kwrd">return</span> dispwrap;
<span class="lnum">  41:  </span>}
SolidworksApi macros