Dim offobjs As DBObjectCollection
offobjs = poly.GetOffsetCurves(-1 * Dist)
In my case poly is a Polyline of course, but the GetOffsetCurves function is available to all objects that derive from Curve, which includes arcs and lines.
The trick is to figure out whether to make the distance parameter positive or negative. This is from the ARX help file.
This function creates one or more entities that together make up the result of offsetting the curve by the distance offsetDist. For many curves, the result is a single new curve. (This single new curve may not be of the same class as the original curve. For example, offsetting an AcDbEllipse results in an AcDbSpline, since the result of offsetting an ellipse does NOT fit the equation of an ellipse.)
...........
If the offsetDist value is negative, it is usually interpreted as being an offset to make a smaller curve (that is, for an arc it would offset to a radius that is offsetDist less than the starting curve's radius). If the negative value has no meaning in terms of making the curve smaller, a negative offsetDist may be interpreted as an offset in the direction of smaller X,Y,Z WCS coordinates. This is not enforced, so custom entities can interpret the sign of the offsetDist value however they want.
The entities returned in the offsetCurves array are dynamically allocated, but have not been added to a Database yet. So, the application that calls this function is responsible for their memory. If they are subsequently appended to a database, then the database takes over responsibility for their memory. Otherwise, the application is responsible for deleting them when they are no longer needed.
Dave O.