I don't really see the point of the dynamic mode in your function, especially if you want to snap to objects. This would seem to me to be sufficient and would resolve the osnap.
(vl-load-com)
(defun c:label_bearing ( / l_var AcDoc Space nw_style nw_obj pt1 pt alpha len_l m_pt val_txt)
(setq l_var (mapcar 'getvar '("DIMZIN" "ANGDIR" "ANGBASE" "AUNITS" "AUPREC" "LUPREC" "LUNITS" "TEXTSIZE")))
(initget "Bearing Degrees")
(if (eq (getkword "\nResult in [Bearing/Degrees]?<Bearing>: ") "Degrees")
(mapcar 'setvar '("DIMZIN" "ANGDIR" "ANGBASE" "AUNITS" "AUPREC" "LUPREC" "LUNITS") (list 0 1 (* pi 1.5) 1 3 2 2))
(mapcar 'setvar '("DIMZIN" "ANGDIR" "ANGBASE" "AUNITS" "AUPREC" "LUPREC" "LUNITS") (list 0 0 0 4 3 2 2))
)
(setvar "TEXTSIZE" (* (getvar "VIEWSIZE") 0.015))
(setq
AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
Space
(if (= 1 (getvar "CVPORT"))
(vla-get-PaperSpace AcDoc)
(vla-get-ModelSpace AcDoc)
)
)
(vla-startundomark AcDoc)
(cond
((null (tblsearch "STYLE" "BEARING"))
(setq nw_style (vla-add (vla-get-textstyles AcDoc) "BEARING"))
(mapcar
'(lambda (pr val)
(vlax-put nw_style pr val)
)
(list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag)
(list "romand.shx" 0.0 0.0 1.0 0.0)
)
)
)
(setq
nw_obj
(vla-addMtext Space
(vlax-3d-point '(0.0 0.0 0.0))
0.0
""
)
)
(initget 1)
(setq pt1 (getpoint "\nPick base point: "))
(initget 1)
(setq pt (getpoint pt1 "\nPick other point: "))
(entmake (list (cons 0 "LINE") (cons 10 pt1) (cons 11 pt)))
(setq
alpha (angle pt1 pt)
len_l (distance pt1 pt)
m_pt (mapcar '* (mapcar '+ pt1 pt) '(0.5 0.5 0.5))
val_txt (vl-string-subst "%%d" "d" (strcat (angtos alpha) "\\P " (rtos len_l) " m"))
)
(if (and (> alpha (* pi 0.5)) (<= alpha (* pi 1.5)))
(setq alpha (+ alpha pi))
)
(mapcar
'(lambda (pr val)
(vlax-put nw_obj pr val)
)
(list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation 'TextString 'Color)
(list 5 (getvar "TEXTSIZE") 5 m_pt "BEARING" (getvar "CLAYER") alpha val_txt 2)
)
(vla-endundomark AcDoc)
(mapcar 'setvar '("DIMZIN" "ANGDIR" "ANGBASE" "AUNITS" "AUPREC" "LUPREC" "LUNITS" "TEXTSIZE") l_var)
(prin1)
)
However, if you absolutely want the dynamic mode with the possibility of osnap, here is the redesigned function attached. ("osmode" must be defined beforehand, no possibility to force it when using the function)
My management is succinct: only: "_end" "_mid" "_cen" "_nod" "_qua" "_int" "_ins" "_per" "_tan" "_nea"
For a more elaborate management see perhaps the LeeMac function
label_Bearing-vertex.lsp