I got three things for you.
1) I don't want to assume you always put the arrow on the start point of the arc, so have you looked into dxf code values for angle at arc endpoints. I think code 50 and 51 are what you're looking for. They give you the angle of the start point and endpoint of the arc (I believe from the center). Also, vlax-curve-xxx functions can help acad determine which point to place the arrow at. The arc endpoint angles would be helpful to you.
2)Contained in INITERR
(command ".undo" "b")
_______________You then negate it 2 and 3 calls later. I don't think the "end" and "mark" commands are needed, but as they say YMMV.
(command ".undo" "end")
(command ".undo" "m")
3) Do you ever get tired of seeing all those setvars or having to remember what it was you called that variable? I do. I've posted these a few times, but here you are again.
(defun mapvars;|Creates paired lst of progvars|;()
(mapcar '(lambda (x)
(cons x (getvar x))
)
(list "attdia" "cecolor" "celtype"
"celweight" "cmdecho" "offsetdist"
"clayer" "dimsah" "dimzin"
"expert" "ltscale" "osmode"
"plinewid" "snapmode" "thickness"
"users1" "users2" "users3"
"errno"
)
)
)
(defun remapvars;|resets lst from mapvars|;(lst)
(mapcar '(lambda (x) (setvar (car x) (cdr x))) lst)
)
Add whatever variables you want to the mapvars and it will store your current setup. Being that it creates a variable with a list of paired items, you can feasibly call the information just like getvar though that seems a little redundant. However, you call it like so:
(setq map (mapvars))
...code here...
...you could even call remapvars throughout your code if you want...
(remapvars '(("osmode" . 1) ("clayer" . 0)));etc. etc.
;restore variables
(remapvars map)
I don't know what anybody thinks about that, but I like it. Cleans the code up a little and allows me to see the meat of the program. I also got tired of creating a new variable for every variable name I wanted to have remembered for restoration later.
Another way to look at those functions is if for some reason you need to get the original value of one of those variables, but you've already changed it for something else, rendering (getvar...) useless, you could call (cdr (assoc "variableNameHere" map)) and retrieve it without having to remember what that variable name was that you called the original getvar.