找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1405|回复: 3

[文本] (XD::Text:PointAtIndex)获得文字(块内、属性文字)指定索引位置字符的包围框

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-6-26 17:03:57 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Text:PointAtIndex
调用格式: (XD::Text:PointAtIndex e inx)
参数说明: e --- TEXT实体(块内、属性、普通文本)
inx -- 索引位置(从0开始)
返回值: 单字符包围盒四点表
函数简介: 获得文字(块内、属性文字)指定索引位置字符的包围框
函数来源: 原创
函数作者: Lispboy
适用版本: XDRX API 
最后更新时间: 2016-06-26
备注: -
演示图片: -

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

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

×
  1. (defun XD::Text:PointAtIndex (e inx / base box box1 box2 cur ed ed1 i lastpt
  2.                                 len p2 pos prev tf txt typ v xdir
  3.                              )
  4.   (if (setq txt (xdrx_getpropertyvalue e "textstring"))
  5.     (progn
  6.       (setq ed (entget e)
  7.             box(xdrx_text_box e)
  8.             ydir (mapcar '- (nth 2 box)(nth 1 box))
  9.       )      
  10.       (setq len (xdrx_string_length txt))
  11.       (if (>= inx len)
  12.         (setq inx (1- len))
  13.       )
  14.       (if (< inx 0)
  15.         (setq inx 0)
  16.       )
  17.       (setq tf t
  18.             i 0
  19.       )
  20.       (setq box2 (xdrx_text_box e)
  21.             base (car box2)
  22.             lastpt base
  23.             xdir (xd::entity:xdir e)
  24.       )
  25.       (while (and
  26.                tf
  27.                (<= i inx)
  28.              )
  29.         (setq prev (xdrx_string_mid txt 0 (1+ i)))
  30.         (setq ed (subst
  31.                    (cons 1 prev)
  32.                    (assoc 1 ed)
  33.                    ed
  34.                  )
  35.         )
  36.         (setq cur (xdrx_string_mid txt i 1)
  37.               ed1 (subst
  38.                     (cons 1 cur)
  39.                     (assoc 1 ed)
  40.                     ed
  41.                   )
  42.               box1 (textbox ed1)
  43.         )
  44.         (setq box (textbox ed)
  45.               v (mapcar
  46.                   '-
  47.                   (cadr box)
  48.                   (car box)
  49.                 )
  50.               p2 (if (< i (1- len))
  51.                    (mapcar
  52.                      '+
  53.                      base
  54.                      (xdrx_vector_product xdir (+ (caar box1) (car v))

  55.                      )
  56.                    )
  57.                    (cadr box2)

  58.                  )
  59.         )
  60.         (if (= i inx)
  61.           (setq pos (list lastpt p2 (mapcar '+ p2 ydir)(mapcar '+ lastpt ydir)))
  62.         )
  63.         (setq lastpt p2
  64.               i (1+ i)
  65.         )
  66.       )
  67.     )
  68.   )
  69.   pos
  70. )


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

已领礼包: 8个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 202个

财富等级: 日进斗金

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 12:14 , Processed in 0.306023 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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