看你画得这么累,提供一个局部放大生成工具给你。
(defun jbd ()(setq dcl1 (load_dialog "jb.dcl"))
(if (not (new_dialog "JB" dcl1))
(exit)
)
(setq dh1 "0")
(set_tile "bl1" bl1)
(set_tile "dh1" "0")
(set_tile "btbl" btbl)
(action_tile "bl1" "(setq bl1 $value)")
(action_tile "dh1" "(setq dh1 $value)")
(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq tes (start_dialog))
(unload_dialog dcl1)
)
(defun c:jb ()
(defun *error* (msg)
(setvar "cmdecho" oe)
(setvar "clayer" lay)
(setvar "OSMODE" os)
(redraw)
(setq dh1nil
oe nil
os nil
laynil
sxsnil
dhsnil
e nil
i nil
p0 nil
p1 nil
pc nil
bl nil
scanil
ee1nil
e1 nil
ee2nil
e2 nil
bl1nil
btbl nil
tesnil
dh nil
kkknil
acsnil
k nil
test nil
pttnil
kk nil
pa nil
angnil
e3 nil
n nil
p nil
ep nil
)
(princ)
)
(setq oe (getvar "cmdecho"))
(setq os (getvar "OSMODE"))
(setq lay (getvar "clayer"))
(setvar "CMDECHO" 0)
(setvar "osmode" (+ os 16384))
(setvar "angdir" 0)
(setvar "angbase" 0)
(if (= (tblsearch "layer" "jbfd") nil)
(command "layer" "n" "jbfd" "c" "7" "jbfd" "")
)
(setq sxs (list "100:1" "10:1" "5:1" "4:1"
"2.5:1" "2:1" "1:1" "1:2"
"1:2.5" "1:4" "1:5" "1:6"
"1:8" "1:10" "1:20" "1:25"
"1:50" "1:100" "1:200" "1:250"
"1:500" "1:1000" "1:2000" "1:2500"
"1:5000" "1:10000" "1:20000""1:25000"
"1:50000""1:100000"
)
)
(setq dhs (list "Ⅰ" "Ⅱ" "Ⅲ" "Ⅳ" "Ⅴ" "Ⅵ" "Ⅶ" "Ⅷ" "Ⅸ" "Ⅹ" "Ⅺ"
"Ⅻ")
)
(princ "\n请画一个包围所有欲放大图形的圆:")
(command "layer" "s" "jbfd" "")
(command "circle" pause pause)
(setq e (entlast))
(setq pc (cdr (assoc 10 (entget e)))
r(cdr (assoc 40 (entget e)))
)
(szbl pc)
(command "line"
(polar pc (dtr 45) r)
(polar pc (dtr 45) (* 2 r))
""
)
(setq ee1 (entlast))
(setq e1 (entget ee1))
(command "line" (polar pc (dtr 45) (* 2 r)) "@10<0" "")
(setq ee2 (entlast))
(setq e2 (entget ee2))
(setq p0 (cdr (assoc 10 e2)))
(setq i 0)
(while (< i (length sxs))
(if (= (nth i sxs) bl)
(progn
(setq bl1 (itoa (- i 1)))
(setq i (length sxs))
)
)
(setq i (+ i 1))
)
(setq btbl (strcat "本图比例为:" bl))
(jbd)
(if (= tes 1)
(progn
(setq kkk (nth (atoi bl1) sxs))
(setq dh (nth (atoi dh1) dhs))
(if (= (substr kkk 1 2) "1:")
(setq acs (atof (substr kkk 3 (- (strlen kkk) 2))))
(setq acs (/ 1 (atof (substr kkk 1 (- (strlen kkk) 2)))))
)
(setq k (/ sca acs))
(command "text"
"J"
"C"
(list (+ (nth 0 p0) 5) (+ (nth 1 p0) 1))
"5"
"0"
dh
)
(setq e3 (entget (entlast)))
(setq test 1)
(command "redraw")
(while test
(setq ptt (grread T))
(setq kk (car ptt))
(setq pa (cadr ptt))
(if (or (= kk 5) (= kk 3))
(progn
(setq ang (angle pc pa))
(setq p0 (polar pc ang r))
(setq e1 (subst (cons 10 p0) (assoc '10 e1) e1))
(setq e1 (subst (cons 11 pa) (assoc '11 e1) e1))
(entmod e1)
(setq e2 (subst (cons 10 pa) (assoc '10 e2) e2))
(setq
e2 (subst (cons 11 (polar pa 0 10)) (assoc '11 e2) e2)
)
(entmod e2)
(setq e3
(subst (cons 11 (list (+ (nth 0 pa) 5) (+ (nth 1 pa) 0.5)))
(assoc '11 e3)
e3
)
)
(entmod e3)
)
)
(if (= kk 3)
(setq test nil)
)
)
(princ "\n请选取局部放大图放置点:")
(command "circle" pc (* r k))
(setq e1 (entget (entlast)))
(setq test 1)
(command "redraw")
(while test
(setq ptt (grread T))
(setq kk (car ptt))
(setq p (cadr ptt))
(if (or (= kk 5) (= kk 3))
(progn
(setq e1 (subst (cons 10 p) (assoc '10 e1) e1))
(entmod e1)
)
)
(if (= kk 3)
(setq test nil)
)
)
(entdel (entlast))
(command "copy" "cp")
(setq n 0)
(repeat 180
(command (polar pc (/ (* 2 n pi) 180) r))
(setq n (+ n 1))
)
(command "" "" pc p)
(setq n 0)
(setvar "PICKBOX" 5)
(command "zoom" "C" p (* 3 r))
(COMMAND "CIRCLE" p r)
(setq ep (entlast))
(command "trim" ep "")
(repeat 180
(command "F" (polar p (/ (* 2 n pi) 180) (* r 1.01)))
(setq n (+ n 1))
(command (polar p (/ (* 2 n pi) 180) (* r 1.01)) "")
)
(command "" "zoom" "P")
(command "scale"
"C"
(list (- (car p) r) (- (cadr p) r))
(list (+ (car p) r) (+ (cadr p) r))
""
p
k
)
(command "erase" ep "")
(setq p0 (polar p (dtr 90) (+ (* k r) 10)))
(command "line" (polar p0 pi 7.5) (polar p0 0 7.5) "")
(command "text"
"J"
"C"
(polar p0 (dtr 90) 1)
"5"
"0"
dh
)
(command "text"
"J"
"C"
(polar p0 (dtr 270) 6)
"5"
"0"
kkk
)
(command "redraw")
)
(progn
(entdel e)
(entdel ee1)
(entdel ee2)
)
)
(setvar "cmdecho" oe)
(setvar "clayer" lay)
(setvar "OSMODE" os)
(setq dh1nil
oe nil
os nil
laynil
sxsnil
dhsnil
e nil
i nil
p0 nil
p1 nil
pc nil
bl nil
scanil
ee1nil
e1 nil
ee2nil
e2 nil
bl1nil
btbl nil
tesnil
dh nil
kkknil
acsnil
k nil
test nil
pttnil
kk nil
pa nil
angnil
e3 nil
n nil
p nil
ep nil
)
(redraw)
(princ)
)
;jb.dcl:
JB:dialog{
label = "生成局部放大图";
:text{
label = "本图比例为";
key="btbl";
}
:row{
:text{
label = "比例:";
}
:popup_list {
alignment=top;
key = "bl1";
list="100:1\n10:1\n5:1\n4:1\n2.5:1\n2:1\n1:1\n1:2\n1:2.5\n1:4\n1:5\n1:6\n1:8\n1:10\n1:20\n1:25\n1:50\n1:100\n1:200\n1:250\n1:500\n1:1000\n1:2000\n1:2500\n1:5000\n1:10000\n1:20000\n1:25000\n1:50000\n1:100000";
}
}
:row{
:text{
label = "代号:";
}
:popup_list {
alignment=top;
key = "dh1";
list="Ⅰ\nⅡ\nⅢ\nⅣ\nⅤ\nⅥ\nⅦ\nⅧ\nⅨ\nⅩ\nⅪ\nⅫ";
}
}
:spacer{}
ok_cancel;
}