FORGET THIS ANSWER, SEE THE ONE BELOW "HAS ANYONE TRIED EDITING THE BLOCK TO ADD IN 3 NEW ATRIBUTES, CALL THEM PN.....". I RECKON THAT IS A QUICKER SOLUTION
How much work do you want to do to correct this? I might be tempted to recreate the blocks 'properly' and copy in the text to each?
You can perhaps create a new block (can be renamed later), say "NewDot" with the 3 attributes you want, PN, PD, ZC - should be a matter of moments and perhaps put in a simple default value for the attributes to let you select them after. Also for what I am dong below it might work to make them a specified colour (depends on the rest of the drawing, something that will stand out). You can change this later in the block definition the normal way
Now all you need to do is make up a LISP to copy the text from one to the other.....
So this will paste a block "NewDot" with the origin at the origin of your block "DOT"" (you'll need to make NewDot of course)
(defun c:trythis ( / acount MySS MyEnt pt )
(setq MySS (ssget "X" '((0 . "INSERT")(8 . "POINTS"))))
(setq acount 0)
(while (< acount (sslength MySS))
(setq MyEnt (ssname MySS acount))
(setq pt (cdr (assoc 10 (entget MyEnt))))
(command "-insert" "NewDot" pt "" "" "")
(command "_zoom" "_object" (ssadd MyEnt) "")
(c:ctx) ;;SEE NOTE BELOW
(c:ctx) ;;SEE NOTE BELOW
(c:ctx) ;;SEE NOTE BELOW
(setq acount (+ acount 1))
)
)
Lee Mac has a function, Copy, Swap Text, CTX (sorry, he has made some good stuff that works well), download that and you can 'ctx' each text from old to new to update your new texts, which is in the code above and the quickest copy-paste solution for now. In his code in the 'copyswaptext:main' function you have to disable a while loop to make this work as above
Someone somewhere will have a LISP to grab the old texts (in each MyEnt above) and insert them in the new block, I don't have a quick solution for that today
Anyway, fingers crossed this all worked and you now have 2 sets of blocks, Dot and NewDot, so just delete the original and see how that goes.
Anyway, if someone has a LISP to take the 3 old values and paste them in the new block as it is inserted that would be good