zhongys 发表于 2014-10-26 20:57:55

TEXT文字有镜像,旋转,拉伸方向还原成水平方向文字

本帖最后由 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 50ssdata))
          (setq old_mirror (assoc 71ssdata))
          (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)
)



zhongys 发表于 2014-10-27 13:09:45

本帖最后由 zhongys 于 2014-10-27 13:12 编辑

g:gif\f.gif图片不知道怎么上传不了

香田里浪人 发表于 2014-10-27 19:14:43

收藏备用。是原码都得支持。

ㄘ丶转裑ㄧ灬 发表于 2014-10-27 19:19:34

刚刚测试了下由属性文字转出来的单行文本,会发生位移,
当然,手动在特性里修改也会发生位移。。
没找出文字发生位移的问题所在。。。






页: [1]
查看完整版本: TEXT文字有镜像,旋转,拉伸方向还原成水平方向文字