To add a little.
Private Sub FindTheBlock()
Dim oBref As AcadBlockReference
Dim B As AcadBlock
Dim Pt As Variant
Dim C As AcadCircle
Dim X As Double
Dim Ent As AcadEntity
'get the BlockReference
ThisDrawing.Utility.GetEntity oBref, Pt, "Pick a block reference:"
'Use the BlockReference's name to find the block definition
Set B = ThisDrawing.Blocks(oBref.Name)
'Cycle through the entities in the block
For Each Ent In B
If TypeOf Ent Is AcadCircle Then
'Store the circle in an object variable
Set C = Ent
Exit For
End If
Next Ent
Dim L As AcadLine
ThisDrawing.Utility.GetEntity L, Pt, "Pick a line:"
L.Move oBref.InsertionPoint, B.Origin
Pt = L.EndPoint
'circle formula x^2+y^2=radius^2
X = Sqr(C.radius ^ 2 - Pt(1) ^ 2)
If Pt(0) < 0 Then X = -X
Debug.Print Pt(0), X
If Abs(Pt(0) - X) < 0.00000001 Then
MsgBox "The line ends on the circle."
End If
L.Move B.Origin, oBref.InsertionPoint
End Sub
Now if the BlockReference you pick has a rotation of zero and a normal value of (0,0,1)
then the circle's center in the BlockReference will be the same distance and direction from BlockReference InsertionPoint as the blocks circles center is from the block's origin.