Here is a version that takes in lines and polycurves (provided they resemble arcs)
tanPntArc.dyn (14.5 KB)
//Increase num for higher precision
//Will fail if too low and take too long if too high
num = 15;
// Approximates (provided they are similar to arc) Polycurves Or Lines with Arcs
c1 = Autodesk.DesignScript.Geometry.Arc.ByThreePoints(a1.StartPoint,(a1.PointAtParameter(0.5)).Translate(Vector.ByTwoPoints(a1.PointAtParameter(0.5),p1),0.0001),a1.EndPoint);
c2 = Autodesk.DesignScript.Geometry.Arc.ByThreePoints(a2.StartPoint,(a2.PointAtParameter(0.5)).Translate(Vector.ByTwoPoints(a2.PointAtParameter(0.5),p1),0.0001),a2.EndPoint);
//Centers of circles that are tangential and equidistant to the input Curves
pt1 = c1.PointAtParameter(0..1..#num);
pt2 = c2.PointAtParameter(0..1..#num);
pl1 = Plane.ByThreePoints(c1.CenterPoint,c1.CenterPoint.Translate(0,0,1),pt1);
vc1 = Vector.ByTwoPoints(c2.CenterPoint,pt2);
pt3 = Point.PruneDuplicates(List.Flatten(pt2.Project(pl1<1>,vc1<2>),-1),0.01);
ds1 = Math.Round(pt3<1>.DistanceTo(pt1<2>),1);
ds2 = Math.Round(pt3<1>.DistanceTo(pt2<2>),1);
pt4 = List.FilterByBoolMask(pt3,List.AllFalse((ds1==ds2)<1>))["out"];
//Centers that are equidistant to the input Curves and Point
ds3 = Math.Round(pt4<1>.DistanceTo(c1<2>),1);
ds4 = Math.Round(pt4<1>.DistanceTo(c2<2>),1);
ds5 = Math.Round(pt4<1>.DistanceTo(p1<2>),1);
pt5 = List.FilterByBoolMask(pt4,ds3==ds5 && ds4==ds5)["in"];
ds6 = pt5.DistanceTo(p1);
cr1 = Autodesk.DesignScript.Geometry.Circle.ByCenterPointRadius(pt5,ds6);
//Geometry Color
[GeometryColor.ByGeometryColor(p1,Color.ByARGB(255,255,0,0)),
GeometryColor.ByGeometryColor(c1,Color.ByARGB(255,0,255,0)),
GeometryColor.ByGeometryColor(c2,Color.ByARGB(255,0,0,255)),
GeometryColor.ByGeometryColor(cr1[0],Color.ByARGB(255,255,0,255))];