找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 831|回复: 4

[教学] 【动态】文字沿着曲线游走

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2018-12-22 00:46:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
文字沿着曲线游走.gif

  1. (defun c:tt ()
  2.   (defun _callback (dynpt)
  3.     (setq p1   (mapcar '+ dynpt '(0 1 0))
  4.           ints (xdrx_get_inters (list p1 dynpt) e 1)
  5.           
  6.     )
  7.     (if        ints
  8.       (progn (setq ints        (car ints)
  9.                    dist        (xdrx_curve_getdistatpoint e ints)
  10.              )
  11.              (xdrx_getpropertyvalue e "length")
  12.              (setq last-dist (+ dist (cadr (last lst2))))
  13.              (if (< last-dist #length)
  14.                (progn (foreach n lst2
  15.                         (setq e1     (car n)
  16.                               dist1  (+ dist (cadr n))
  17.                               offset (caddr n)
  18.                               p2     (xdrx_curve_getpointatdist e dist1)
  19.                               v1     (xdrx_curve_getfirstderiv e p2)
  20.                               p2     (mapcar '+
  21.                                              p2
  22.                                              (xdrx_vector_product
  23.                                                (xdrx_vector_perpvector v1)
  24.                                                offset
  25.                                              )
  26.                                      )
  27.                         )
  28.                         (xdrx_setpropertyvalue
  29.                           e1
  30.                           "alignmentpoint"
  31.                           p2
  32.                           "rotation"
  33.                           (xdrx_vector_angle v1)
  34.                         )
  35.                       )
  36.                )
  37.              )
  38.       )
  39.     )
  40.   )
  41.   (if (and (xdrx_initssget "\n选择文字<退出>:")
  42.            (setq ss (xdrx_ssget '((0 . "text"))))
  43.            (setq e (car        (xdrx_entsel
  44.                           "\n选择曲线<退出>:"
  45.                           '((0 . "*line,arc,circle,ellipse"))
  46.                         )
  47.                    )
  48.            )
  49.       )
  50.     (progn (xdrx_begin)
  51.            (setq lst  (mapcar
  52.                         '(lambda (x)
  53.                            (list (xdrx_getpropertyvalue x "alignmentpoint") x)
  54.                          )
  55.                         (xdrx_pickset->ents ss)
  56.                       )
  57.                  lst1 (mapcar 'car lst)
  58.                  lst1 (xdrx_points_sortoncurve e lst1)
  59.                  lst1 (mapcar '(lambda (x) (list (cadr x) (apply 'distance x)))
  60.                               lst1
  61.                       )
  62.                  lst2 (mapcar
  63.                         '(lambda (x)
  64.                            (list (last (xd::list:assoc-fuzz (car x) lst 1e-3))
  65.                                  (xdrx_curve_getdistatpoint e (car x))
  66.                                  (last x)
  67.                            )
  68.                          )
  69.                         lst1
  70.                       )
  71.                  dist (cadr (car lst2))
  72.                  lst2 (mapcar
  73.                         '(lambda (x) (list (car x) (- (cadr x) dist) (last x)))
  74.                         lst2
  75.                       )
  76.            )
  77.            (xdrx_pointmonitor "_callback")
  78.            (getpoint)
  79.            (xdrx_pointmonitor)
  80.            (xdrx_end)
  81.     )
  82.   )
  83. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 8612个

财富等级: 富甲天下

发表于 2018-12-22 09:01:17 | 显示全部楼层
牛大发了,就是这个效果
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3904个

财富等级: 富可敌国

发表于 2018-12-22 09:07:35 | 显示全部楼层
做一个热心并受欢迎的人
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 33个

财富等级: 招财进宝

发表于 2018-12-23 14:26:15 | 显示全部楼层
厉害,向大师学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2019-1-14 19:42:51 | 显示全部楼层
楼主厉害了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 01:05 , Processed in 0.190550 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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