This is a sample of what I came up with that works.
Private Sub subCreateCircleExample(ByVal objFirstLine As Line, ByVal objSecondLine As Line)
Dim myPnt01 As Point3d = objFirstLine.StartPoint
Dim myPnt02 As Point3d = objFirstLine.EndPoint
Dim myPnt03 As Point3d = objSecondLine.StartPoint
Dim myPnt04 As Point3d = objSecondLine.EndPoint
Dim myLine01 As New LineSegment2d(New Point2d(myPnt01.X, myPnt01.Y), New Point2d(myPnt02.X, myPnt02.Y))
Dim myLine02 As New LineSegment2d(New Point2d(myPnt03.X, myPnt03.Y), New Point2d(myPnt04.X, myPnt04.Y))
Dim pntCurvInt As CurveCurveIntersector2d = New CurveCurveIntersector2d(myLine01, myLine02)
Dim intNoOfPnts As Integer = pntCurvInt.NumberOfIntersectionPoints
Dim pntIntPnt As Point2d
If intNoOfPnts = 1 Then 'you can put a counter here
pntIntPnt = New Point2d(pntCurvInt.GetIntersectionPoint(0).X, pntCurvInt.GetIntersectionPoint(0).Y)
Else
Exit Sub
End If
'Setup a transaction to the drawing
Using lock As DocumentLock = MyDrawing.LockDocument
'' Start a transaction
Using acTrans As Transaction = MyDrawingDb.TransactionManager.StartTransaction()
Try
'' Open the Block table for read
Dim acBlkTbl As BlockTable
acBlkTbl = acTrans.GetObject(MyDrawingDb.BlockTableId, OpenMode.ForRead)
'' Open the Block table record Model space for write
Dim acBlkTblRec As BlockTableRecord
acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
OpenMode.ForWrite)
'' Create a circle that is at 2,3 with a radius of 4.25
Dim acCirc As Circle = New Circle()
acCirc.SetDatabaseDefaults()
acCirc.Center = New Point3d(pntIntPnt.X, pntIntPnt.Y, 0)
acCirc.Radius = 4.25
'' Add the new object to the block table record and the transaction
acBlkTblRec.AppendEntity(acCirc)
acTrans.AddNewlyCreatedDBObject(acCirc, True)
'' Save the new object to the database
acTrans.Commit()
Catch ex As Exception
MsgBox(ex.Message & vbCr & ex.StackTrace)
End Try
End Using
End Using
End Sub