找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 619|回复: 0

[文本] (XD::Text:IndexAtPoint)获得鼠标点下文字(块内、属性、普通文本)的索引位置值

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

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

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

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

×
本帖最后由 Lispboy 于 2016-6-27 08:37 编辑

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

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

本版积分规则

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

GMT+8, 2024-3-28 20:47 , Processed in 0.445955 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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