namezg 发表于 2018-8-9 10:58:45

本帖最后由 namezg 于 2018-8-9 12:17 编辑

(defun c:test (/ nn pt1 hd pt2)
        (setvar "cmdecho" 0)
        (setq pt1 (getpoint "\n请输入文字的第一对齐点: "))
        (setq nn (entmakex (list (cons 0 "TEXT") (cons 1 "文字") (cons 40 3.5)(cons 41 1) (cons 10 pt1) (cons 50 (setq hd (* 0.25 pi))) (cons 7 "standard") (cons 8 "0"))))
        (repeat 100
                (setq pt2 (polar pt1 hd 1.0));计算下个坐标点
                (command "delay" 10);延时执行
                (entmod (subst (cons 10 pt2) (cons 10 pt1) (entget nn)));修改文字坐标点
                ;(command "REGEN")
                (setq pt1 pt2)
        )
        (setvar "cmdecho" 1)
        (princ)
)
写成命令就要加(command "REGEN"),单独执行代码就不用,还没明白为什么。
而且如果加入(command "REGEN"), (command "delay" 10)都可以去掉不用。

namezg 发表于 2018-8-9 11:36:43

本帖最后由 namezg 于 2018-8-9 11:59 编辑

;用move命令可实现
(defun c:test (/ nn pt1 hd pt2)
      (setvar "cmdecho" 0)
      (setq nn (entmakex (list (cons 0 "TEXT") (cons 1 "文字") (cons 40 3.5)(cons 41 1) (cons 10 (setq pt1 (getpoint "\n请输入文字的第一对齐点: "))) (cons 50 (setq hd (* 0.25 pi))) (cons 7 "standard") (cons 8 "0"))))
      (repeat 100
                (setq pt2 (polar pt1 hd 1.0));计算下个坐标点
                (command "delay" 10);延时执行
                (command "move" nn "" "non" pt1 "non" pt2)
                (setq pt1 pt2)
      )
      (setvar "cmdecho" 1)
      (princ)
)

13816600495 发表于 2018-8-12 20:14:28

namezg 发表于 2018-8-9 11:36
;用move命令可实现
(defun c:test (/ nn pt1 hd pt2)
      (setvar "cmdecho" 0)


谢谢,按你的方法已实现想要的效果。:handshake

fh1125629 发表于 2018-8-13 15:39:10

感谢!!!

fl202 发表于 2018-8-13 16:44:20

“我的意思是已有一个文字和一个新坐标点,将文字挪到新坐标点,有一个可视化的挪动效果,而不是文字瞬间消失和生成,有个文字挪动的轨迹,纯粹就是想好看点”

没意义,浪费时间。。。
既然确定了最终坐标点,就移动过去,然后就能做下一步工作了。
页: 1 [2]
查看完整版本: 如何实现文字平滑挪动效果