【文字offset】可用于写说明,自己几年前刚学lisp时编的
;;;;;;;;;Offset Text;;;;;;;;;(defun inivar()
(setq old_os (getvar "osmode"))
(setvar "osmode" 0)
(princ)
)
(defun resvar()
(setvar "osmode" old_os)
(princ)
)
;;;;;;;;;
(defun c:ot(/ ot_dis1 ss s0 s0data p0 ang0 p1 p2 ang1 kk i j)
(if (/= ot_dis nil)
(progn
(setq ot_dis1 (getreal (strcat "\n请输入偏移尺寸<" (rtos ot_dis) ">:")) )
(if (null ot_dis1) (setq ot_dis ot_dis) (setq ot_dis ot_dis1))
);;;end progn
(setq ot_dis (getreal"\n请输入偏移尺寸:") )
);;;end if
(setq ss (entsel"\n选择需偏移的文字:"))
(setq s0 (car ss))
(redraw s0 3)
(setq s0data (entget s0))
(setq p0 (cdr (assoc 10 s0data)) )
(setq ang0(cdr (assoc 50 s0data)) )
(setq i 0 j 0)
(while i
(setq p2 (getpoint"\n请输入偏移方向:"))
(redraw s0 4)
(setq ang1 (- (angle p0 p2) ang0))
(setq kk (sin ang1))
(inivar)
(cond
((> kk 0)
(progn
(setq p1 (polar p0 (+ (/ PI 2) ang0) (* (+ 1 i) ot_dis) ) )
(command "copy" s0 "" p0 p1)
(setq i (+ 1 i))
(resvar)
);;;end progn1
)
((< kk 0)
(progn
(setq p1 (polar p0 (+ (/ PI 2) ang0) (* (+ 1 j) ot_dis) ) )
(command "copy" s0 "" p1 p0)
(setq j (+ 1 j))
(resvar)
);;;end progn2
)
(t (progn(resvar)(exit)))
);;;end cond
);;;end while
(setvar "cmdecho" 0)
(princ)
) What??????c7g3
页:
[1]