- 积分
- 3854
- 明经币
- 个
- 注册时间
- 2003-8-16
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 zhongys 于 2014-10-27 13:08 编辑
一直在看明经的程式,取之明经,用之明经。现把我写的小程式贡献一下
TEXT文字有镜像,旋转,拉伸方向不同还原成水平方向文字,只对TEXT文字有用,MTEXT不可以.
;;;文字镜像,旋转,拉伸方向还原
(defun c:Tro(/ old_os ss i ta ssn ssdata old_angle new_angle old_mirror new_mirror old_st new_st amt1 q)
(setvar "cmdecho" 0)
(setq old_os (getvar "osmode"))
(defun *error* (msg)(princ msg))
(VL-LOAD-COM)
(vl-cmdf "undo" "BE")
(prompt "\n 选择要还原的文字...")
(setq ss (ssget '((0 . "TEXT"))))
(while (= ss nil)(progn
(prompt "\n 选择要还原的文字...")
(setq ss (ssget '((0 . "TEXT"))))
))
(setvar "osmode" 0)
;;;********************************************************************************
(setq i 0)
(setq ta 0)
(setq new_angle '(50 . 0.0))
(setq new_mirror '(71 . 0))
(setq new_st '(210 0.0 0.0 1.0))
(repeat (sslength ss)(progn
(setq ssn (ssname ss i))
(setq ssdata (entget ssn))
(setq old_angle (assoc 50 ssdata))
(setq old_mirror (assoc 71 ssdata))
(setq old_st (assoc 210 ssdata))
;;;********************************************************************************
;;;文字没有旋转及镜像
(if
(= (and
(= (cdr old_angle ) 0.0)
(= (cdr old_mirror) 0 )
(= (nth 3 old_st ) 1.0)
)
T
)
(setq amt1 0)
(setq amt1 1)
)
(setq q (+ ta amt1))
;;;**********角度归正**********
(IF (/= (cdr old_angle) 0.0)
(setq ssdata (subst new_angle old_angle ssdata))
)
;;;**********镜像归正**********
(IF (or
(= (cdr old_mirror) 2)
(= (cdr old_mirror) 4)
)
(setq ssdata (subst new_mirror old_mirror ssdata))
)
;;;**********拉伸方向归正**********
(IF (= (nth 3 old_st ) -1.0)
(setq ssdata (subst new_st old_st ssdata))
)
;;;*******************************************************************************
(entmod ssdata)
(setq ta q)
(setq i (1+ i))
);;;end repeat
)
(if (= q 0)
(princ "\n 你选择的文字是不需要还原,没有需要还原的文字.")
(princ (strcat"======>>> 恭喜你" (itoa q) "个文字已还原 <<<======"))
)
(vl-cmdf "UNDO" "E")
(setvar "osmode" old_os)
(princ)
)
|
|