Hi Jordan, Josh. Thanks for responding to this.
Josh to answer your question, I intend for this macro to run after every rebuild (it will be embedded into the design binder) so effectively instead of the surfaceoffsetfeature referencing a face ID, it will reference a ray in the model which will pick the face. Eventually this ray will be linked to a point and line in a 3D sketch. I’m fairly sure selectbyray is independent of view and selects based off a vector in model space?
Jordan, cheers for the advice. I think what I am looking for is a method of changing a surface offset feature’s selected entities (I have given up trying for a general feature for now). Below is what I have come up with so far. This can successfully change the offset distance but cannot change the selected entities - im not sure where I’m going wrong.
If the current offset face is away from the origin (ray), then, when the macro is run, the offset face should change to the face which is over the origin (ray), but it doesn’t.
Please help 
"Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelEx As SldWorks.ModelDocExtension
Dim swPart As SldWorks.PartDoc
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeature As SldWorks.FEATURE
Dim swSOFD As SldWorks.SurfaceOffsetFeatureData
Dim varFace As Variant
Dim BoolStat As Boolean
Dim LongStat As Long
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelEx = swModel.Extension
Set swPart = swApp.ActiveDoc
Set swSelMgr = swPart.SelectionManager
swModel.ClearSelection2 (True)
Set swFeature = swPart.FeatureByName(“TheFeature”)
Set swSOFD = swFeature.GetDefinition
BoolStat = swSOFD.AccessSelections(swModel, Nothing)
BoolStat = swModel.Extension.SelectByRay(0, 1, 0, 0, -1, 0, 0.0001, swSelFACES, False, 0, 0)
Set varFace = swSelMgr.GetSelectedObject6(1, 0)
swSOFD.Distance = swSOFD.Distance + 0.001
swSOFD.Entities = varFace
swModel.ClearSelection2 (True)
BoolStat = swFeature.ModifyDefinition(swSOFD, swModel, Nothing)
swSOFD.ReleaseSelectionAccess
End Sub"