I believe I have developed an iLogic rule solution or you. I was not easy, and there were some unexpected bumps along the way, but I think I figured them out.
When the two splines were drawn in the same direction (for example, both were drawn left to right), I was getting the expected result. But when one spline was drawn in the opposite direction (for example, one was drawn from left to right, while the other was drawn from right to left), it was giving me smaller, odd looking results. It was because they have start point and end point properties, and because of the way I'm gathering points from along both splines for creating the center points between them. If the two splines are drawn in opposing directions, then the start point of one spline and the start point of the other spline are at opposite ends from each other, and the center point between them, was being created up in the middle between the two splines.
Anyways, here's when I've got that seems to be working for me.
Sub Main
Dim oPDoc As PartDocument = ThisDoc.Document
Dim oPDef As PartComponentDefinition = oPDoc.ComponentDefinition
Dim oTO As TransientObjects = ThisApplication.TransientObjects
Dim oPts As ObjectCollection = oTO.CreateObjectCollection
Dim oSketch As PlanarSketch = oPDef.Sketches.Item(1)
Dim oSp1 As SketchSpline = oSketch.SketchSplines.Item(1)
Dim oSp2 As SketchSpline = oSketch.SketchSplines.Item(2)
Dim oSp1Geom As BSplineCurve2d = oSp1.Geometry
Dim oSp2Geom As BSplineCurve2d = oSp2.Geometry
'need to determine which direction to process each spline in comparison to the other
'start point of one spline may be at other end of other spline, resulting in odd result
'see if start point of one spline is closer to start point or end point of the other spline
'then use that result to determine which direction to process points along other spline
Dim oStPt1 As Point2d = oSp1.StartSketchPoint.Geometry
Dim oStart2Start As Double = oStPt1.DistanceTo(oSp2.StartSketchPoint.Geometry)
Dim oStart2End As Double = oStPt1.DistanceTo(oSp2.EndSketchPoint.Geometry)
If oStart2Start < oStart2End Then
'first spline start point is closer to start point of other spline than its end point (normal)
'process points along both splines from start point to end point as normal
NormalBisectorSpline(oSp1Geom, oSp2Geom, oPts)
Else
'first spline start point is closer to end point of other spline than its start point (opposing directions)
'process points along first spline from start to end with the points along the other spline from end to start
ReverseBisectorSpline(oSp1Geom, oSp2Geom, oPts)
End If
Dim oOutPutSpline As SketchSpline = oSketch.SketchSplines.Add(oPts, SplineFitMethodEnum.kSmoothSplineFit)
End Sub
Sub NormalBisectorSpline(oSpl1 As BSplineCurve2d, oSpl2 As BSplineCurve2d, ByRef oCol As ObjectCollection)
Dim oTG As TransientGeometry = ThisApplication.TransientGeometry
Dim oParams(0) As Double
oParams(0) = 0
While oParams(0) <= 1
Dim oPt1Coords(1) As Double
Dim oPt2Coords(1) As Double
oSpl1.Evaluator.GetPointAtParam(oParams, oPt1Coords)
Dim oPt1 As Point2d = oTG.CreatePoint2d(oPt1Coords(0),oPt1Coords(1))
oSpl2.Evaluator.GetPointAtParam(oParams, oPt2Coords)
Dim oPt2 As Point2d = oTG.CreatePoint2d(oPt2Coords(0),oPt2Coords(1))
GetAddCPoint(oPt1, oPt2, oCol)
oParams(0) = (oParams(0) + 0.01)
End While
End Sub
Sub ReverseBisectorSpline(oSpl1 As BSplineCurve2d, oSpl2 As BSplineCurve2d, ByRef oCol As ObjectCollection)
Dim oTG As TransientGeometry = ThisApplication.TransientGeometry
Dim oParams1(0) As Double
oParams1(0) = 0
Dim oParams2(0) As Double
oParams2(0) = 1
For i As Integer = 0 To 100
Dim oPt1Coords(1) As Double
oSpl1.Evaluator.GetPointAtParam(oParams1, oPt1Coords)
Dim oPt1 As Point2d = oTG.CreatePoint2d(oPt1Coords(0), oPt1Coords(1))
oParams1(0) = (oParams1(0) + 0.01)
Dim oPt2Coords(1) As Double
oSpl2.Evaluator.GetPointAtParam(oParams2, oPt2Coords)
Dim oPt2 As Point2d = oTG.CreatePoint2d(oPt2Coords(0), oPt2Coords(1))
oParams2(0) = (oParams2(0) -0.01)
GetAddCPoint(oPt1, oPt2, oCol)
Next
End Sub
Sub GetAddCPoint(oPnt1 As Point2d, oPnt2 As Point2d, ByRef oPnts As ObjectCollection)
Dim oPnt3 As Point2d = oPnt1.Copy
Dim oVec2d As Vector2d = oPnt1.VectorTo(oPnt2).Copy
oVec2d.ScaleBy(0.5)
oPnt3.TranslateBy(oVec2d)
oPnts.Add(oPnt3)
End Sub
If this solved your problem, or answered your question, please click ACCEPT SOLUTION.
Or, if this helped you, please click (LIKE or KUDOS) 👍.
If you want and have time, I would appreciate your Vote(s) for My IDEAS 💡or you can Explore My CONTRIBUTIONS
Wesley Crihfield

(Not an Autodesk Employee)