Try out this, but made a new block Arrow2 as this was easier than tryingto use Arrow which had a number of problems. The base point was offset from the line ? The actual block has a nested arrow head again ? Lastly the arrow is slightly off square thats sloppy drafting. I just exploded twice arrow and made block arrow2 with base point end of line. I have not added perps snapping etc so user can use 2 points or perp to etc I used transparent M2P for label point. A while could be added to repeat based on pt1. I would also align the arrows vertically something I noticed in the dwg as well.
Code:
; draw an arrow and text as label for 2 points
; By Alan H April 2019
(defun ahartxt ( / oldsnap oldlay oldangdir oldaunits pt1 pt2 pt3 ang dist)
(setq oldsnap (getvar 'osmode))
(setq oldlay (getvar 'clayer))
(setq oldangdir (getvar 'angdir))
(setq oldaunits (getvar 'aunits))
(setvar 'angdir 0)
(setvar 'aunits 3)
(setq pt1 (getpoint "pick point 1 "))
(setq pt2 (getpoint "pick point 2 "))
(setq dist (distance pt1 pt2 ))
(setq ang (angle pt1 pt2))
(setq pt3 (getpoint "pick point for arrow"))
(setq oldsnap (getvar 'osmode))
(setvar 'clayer "ordinate text")
(setvar 'osmode 0)
(command "-insert" "arrow2" pt3 1 1 ang )
(setq pt3 (polar pt3 (/ pi 4.0) 0.35))
(command "text" "J" "bl" pt3 0.25 0 (rtos dist 2 3))
(setvar 'osmode oldsnap)
(setvar 'clayer oldlay)
(setvar 'angdir oldangdir)
(setvar 'aunits oldaunits)
(princ)
)
(ahartxt)