明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1613|回复: 3

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

[复制链接]
发表于 2014-10-26 20:57 | 显示全部楼层 |阅读模式
本帖最后由 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)
)



 楼主| 发表于 2014-10-27 13:09 | 显示全部楼层
本帖最后由 zhongys 于 2014-10-27 13:12 编辑

g:gif\f.gif图片不知道怎么上传不了
发表于 2014-10-27 19:14 | 显示全部楼层
收藏备用。是原码都得支持。
发表于 2014-10-27 19:19 | 显示全部楼层
刚刚测试了下由属性文字转出来的单行文本,会发生位移,
当然,手动在特性里修改也会发生位移。。
没找出文字发生位移的问题所在。。。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

拉伸方向变了,原坐标由正变负或由负变正,例如(10 19438.1 -11294.1 0.0)这一个坐标变为(10 -19438.1 -11294.1 0.0),坐标发生变化。改好再上传.  发表于 2014-10-28 00:10
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-29 22:20 , Processed in 0.160684 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表