liminnet
发表于 2008-7-5 18:18:00
ZZXXQQ
发表于 2008-7-5 18:45:00
五楼已改。
liminnet
发表于 2008-7-5 18:58:00
ZZXXQQ
发表于 2008-7-5 20:55:00
本帖最后由 作者 于 2008-7-6 21:32:52 编辑
再试试:
(defun c:tt ()
(setvar "CMDECHO" 0)
(setq oldos (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setq i 0)
(if (setq ss (ssget '((0 . "TEXT"))))
(repeat (sslength ss)
(setq en (ssname ss i)
ent (entget en)
temp (cadr(textbox(list(assoc 1 ent))))
pt (cdr(assoc 10 ent))
ang (cdr(assoc 50 ent))
textw (cdr(assoc 41 ent))
tmp_w (* (car temp) textw)
tmp_h (cadr temp)
inv (cdr (assoc 71 ent)))
(cond
((= inv 2)
(setq ptt (polar pt (+ ang pi) tmp_w)
ent (subst (cons 10 ptt) (assoc 10 ent) ent)
ent (subst '(71 . 0) (assoc 71 ent) ent))
(entmod ent)
)
((= inv 4)
(setq ptt (polar pt (- ang (/ pi 2)) tmp_h)
ent (subst (cons 10 ptt) (assoc 10 ent) ent)
ent (subst '(71 . 0) (assoc 71 ent) ent))
(entmod ent)
)
((= inv 6)
(setq ptt (polar (polar pt (+ ang pi) tmp_w) (- ang (/ pi 2)) tmp_h)
ent (subst (cons 10 ptt) (assoc 10 ent) ent)
ent (subst '(71 . 0) (assoc 71 ent) ent))
(entmod ent)
)
)
(setq i (1+ i))
)
)
(setvar "OSMODE" oldos)
(setvar "CMDECHO" 1)
(princ)
)
liminnet
发表于 2008-7-5 23:34:00
liminnet
发表于 2008-7-5 23:48:00
ZZXXQQ
发表于 2008-7-6 21:35:00
<p>不早给图,浪费时间、空间和精力。14楼已改。</p>
liminnet
发表于 2008-7-6 23:14:00
liminnet
发表于 2008-7-7 09:14:00
liminnet
发表于 2008-7-7 09:21:00