If this question is Grasshopper related (you did not specify a category) You can do two offsets, use a negative value and a positive value, then loft the connection. Or you can use Plug-ins like Pufferfish which have that option on the offset surface. Take your pick.
Take a look at the two screen shots. One is for the ring which doesn’t display the both side box and the other for a rectangle which does. Both are offset curves.
Can anyone tell me why it’s not showing up on the ring??
Btw I don’t know whats the code behind this, but for this surface the native “offset srf” component is much slower then yours and produce undesired effect… thanks for your plugin!
B is a distance not a Boolean (so you can set different distance on each side, use a negative distance to go opposite direction), it should be in the tool tip.