Also, if anyone wants to get more than one intermediate value for a beam, this method won't work, since it only allows for one value at a time.
Calling:
RobotTable.Configuration.SetValue I_TCV_POSITION_OF_DIVISION_POINT, 0.4
RobotTable.Configuration.SetValue I_TCV_POSITION_OF_DIVISION_POINT, 0.5
will only show the results for 0.5, which means that, as the function name states, this sets a single value, and doesn't add values onto a list. And given how this procedure (of creating the table, filling it up and, especially, saving the file) takes easily half a second, if you need to get values for more than one point in the bar, this function quickly becomes very expensive (I may very well need to get up to 9-10 intermediate sections, for example).
---
So I went back to trying to use the IRobotBarSectionNonstdData class and calculating the properties by hand. After a few iterations, I thought I'd figured out how to do it:
var b = iapp.Project.Structure.Bars.Get(8) as IRobotBar; //get the bar
var d = b.GetLabel(IRobotLabelType.I_LT_BAR_SECTION).Data as IRobotBarSectionData; //get its section data
IRobotBarSectionNonstdData non = d.CreateNonstd(0.5d); //name the point you want to find (as described below, it is seemingly useless to store the return of this function)
d.CalcNonstdGeometry(); //calculate the geometry at the named points
non = d.GetNonstd(1); //get the data post calculation
double p = non.GetValue(IRobotBarSectionNonstdDataValue.I_BSNDV_I_B);
Doing this, I actually got a result for p. I was thrilled. I noticed it was from the start point, but that's okay. It's because I used .GetNonstd(1) and since Robot works on 1-based indexes (why?), that's what I'd asked for. So I changed it to .GetNonstd(2), but no cigar. I got p = 0. Also, please note how to get this I had to use non = d.GetNonstd(), even though I'd already received an IRobotBarSectionNonstdData from .CreateNonstd(). That object, however, is useless and the return type of .CreateNonstd() should be void (meaning there is no need to store the data coming out of .CreateNonstd() as I did above), since .CreateNonstd() needs to be called before .CalcNonstdGeometry() but the IRobotBarSectionNonstdData only has actual data after .CalcNonstdGeometry() and is not automatically updated.
That being said, I'm clearly still doing something wrong, since for .GetNonstd(i) for i!=1 is giving me p = 0.
So how is this supposed to work? I've tried just about every combination of functions I can think of, but can't figure it out.