朽木大师 发表于 2013-8-30 15:16:10

如何读取文字角度

本帖最后由 朽木大师 于 2013-8-30 15:29 编辑

(setq ObjName0 (car (entsel "\n 选择目标: ")))
(setq Data0 (entget ObjName0))
(setq AngT (cdr(assoc 50 Data0)))

(SETQ ang (* (/ AngT PI)180))

总是不对

自贡黄明儒 发表于 2013-8-30 15:37:35

你发现到底哪儿不对劲?

朽木大师 发表于 2013-8-30 15:45:24

自贡黄明儒 发表于 2013-8-30 15:37 static/image/common/back.gif
你发现到底哪儿不对劲?

(defun c:tt()
(setq ObjName0 (car (entsel "\n 选择目标: ")))
(setq Data0 (entget ObjName0))
(setq AngT (cdr(assoc 50 Data0)))
(SETQ ang (* (/ AngT PI)180))
(princ "ang=")(princ ang)
(princ "选择要修改的文字,可多选")
(setq ss (ssget '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")(-4 . "OR>"))))
(setq k 0)
(repeat (sslength ss)
    (progn
      (setq ent (ssname ss k))
      (setq ents (entget ent))
      (setq ents (subst (cons 50 ang) (assoc 50 ents) ents))
      (entmod ents)
      (entupd ent)
      (setq k (1+ k))
    )
)
(princ)
)

我试了一下,有些文字可以把角度刷过来,有些就出错

自贡黄明儒 发表于 2013-8-30 16:12:48

都要以弧度进行

朽木大师 发表于 2013-8-30 16:17:31

自贡黄明儒 发表于 2013-8-30 16:12 static/image/common/back.gif
都要以弧度进行

(setq ents (subst (cons 50 ang) (assoc 50 ents) ents)) 我测试过,ang是直接输入角度就可以

ll_j 发表于 2013-8-30 16:32:04

朽木大师 发表于 2013-8-30 16:17 static/image/common/back.gif
(setq ents (subst (cons 50 ang) (assoc 50 ents) ents)) 我测试过,ang是直接输入角度就可以

角度输入输出是有这点绕人的地方,输入是与当前图形的角度单位(units)有关的,一般是使用度或度分秒,所以输入角或度分秒是直接输入,而输入弧度要带r(比如3.14r),如果设置角度单位为弧度,则输入弧度为直接输入。
不管怎样输入,angle(或getangle)输出的单位都是弧度,组码中的角度值也是弧度。

朽木大师 发表于 2013-8-30 16:47:14

非常感谢上面两位兄弟的帮助

guankuiwu 发表于 2021-9-5 10:54:45

学习到不少!
页: [1]
查看完整版本: 如何读取文字角度