Sorry, I couldn't resist. It is time to exhale and start breathing again. Patrick Johnson posted some excellent code just for this issue. I took it and modified it to use nested transactions (a process I find that dramatically speeds up code processing, and makes everything go back in 1 undo command). Here is that code:
Public Sub IntersectionPtsForBlocks(ByRef blk As BlockReference, ByRef ent As Entity, ByRef pts As Point3dCollection, ByRef trans As Transaction) Using trans2 As Transaction = trans.TransactionManager.StartTransaction Dim objs As DBObjectCollection = New DBObjectCollection() blk.Explode(objs) For Each obj As DBObject In objs Dim entBref As Entity = CType(obj, Entity) IntersectionPtsForEntities(entBref, ent, pts, trans2) Next For Each obj In objs obj.Dispose() Next trans2.Commit() End Using End Sub Public Sub IntersectionPtsForEntities(ByRef ent1 As Entity, ByRef ent2 As Entity, ByRef pts As Point3dCollection, ByRef trans As Transaction) Try If TypeOf ent1 Is Hatch Or TypeOf ent2 Is Hatch Then Exit Sub Else If (TypeOf ent1 Is BlockReference) And (ent1.Visible = True) Then IntersectionPtsForBlocks(ent1, ent2, pts, trans) ElseIf (TypeOf ent2 Is BlockReference) And (ent1.Visible = True) Then IntersectionPtsForBlocks(ent2, ent1, pts, trans) Else If (ent1.Visible = True) Then Dim intPts As New Point3dCollection ent1.IntersectWith(ent2, Intersect.OnBothOperands, intPts, New IntPtr, New IntPtr) For Each iPoint As Point3d In intPts If Not pts.Contains(iPoint) Then pts.Add(iPoint) Next End If End If End If Catch ex As System.Exception MsgBox(ex.ToString) End Try End Sub
Hope this helps everybody in need, who may stumble across this post as I did. Thank you everybody.