smaher's suggestion can be made more generic, so that it can allow for more scale options:
(defun C:SET (/ scl)
(initget "16 8 4 2 1")
(setq scl (atoi (getkword "\nSpecify denominator of scale 1/x\"=1'-0\" [16 8 4 2 1]: ")))
(setvar 'dimscale (* scl 12))
(setvar 'ltscale (* scl 6))
(command "_.style" "BNA-CKT" "romans.shx" scl "0.8" "0" "N" "N" "N")
(princ)
)
With a more wordy prompt and a somewhat different approach, because the (distof) function can convert a number typed as a fraction to a real number, it can allow for all the scales available on standard Architectural and Engineering scales:
(defun C:SET (/ scl df)
(initget "3 1-1/2 1 3/4 1/2 3/8 1/4 3/16 1/8 3/32 1/16 10 20 30 40 50 60")
(setq
scl
(getkword
(strcat
"\nNumber for Scale [inches per foot for Architectural, feet per inch for Engineering]: "
"\n{3 1-1/2 1 3/4 1/2 3/8 1/4 3/16 1/8 3/32 1/16 10 20 30 40 50 60}: "
); strcat
); getkword
df ; = drawing factor [ratio between reality and drawing]
(cond
((= (rem (atoi scl) 10) 0) (* (atoi scl) 12)); Engineering Scale
((/ 12 (distof scl))); Architectural Scale
); cond
); setq
(setvar 'dimscale df)
(setvar 'ltscale (/ df 2))
(command "_.style" "BNA-CKT" "romans.shx" (/ df 12.0) "0.8" "0" "N" "N" "N")
(princ)
)
You can shorten the (initget) string and the prompt by removing any of the ones representing scales you are sure your Users would never need.
Kent Cooper, AIA