找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1038|回复: 4

[讨论]:请捉虫子,一段提取text对象中单个文字的代码

[复制链接]

已领礼包: 2个

财富等级: 恭喜发财

发表于 2008-3-9 15:37:05 | 显示全部楼层 |阅读模式

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

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

×

  1. ;|;;
  2. 日期:2008-03-07晚
  3. 备忘:关于text对象中单个文字位置的计算

  4. ;;|;
  5. ;;;=========================================
  6. ;;;功能:获取TEXT对象中指定坐标位置的字符
  7. ;;;参数:EN ----text对象组码表
  8. ;;;      PT ----指定坐标位置(世界坐标系下)
  9. ;;;返回:若有,返回单个字符;若无,nil
  10. ;;;日期:zml84 于 2008-03-07
  11. (defun TT (ENT PT / ANG II LST PT0 PTA PTB PT_ANG PT_DIST STR STRI WI)
  12.     ;;插入点  角度  内容
  13.     (setq PT0 (cdr (assoc 10 ENT))
  14.           ANG (cdr (assoc 50 ENT))
  15.           STR (cdr (assoc 1 ENT))
  16.     )
  17.     ;;局部坐标系两点
  18.     (setq LST (textbox ENT))
  19.     (setq PTA (car LST)
  20.           PTB (cadr LST)
  21.     )
  22.     ;;///////////////////////////////////////
  23.     ;;将pt由世界坐标系转化为TEXT局部坐标系
  24.     ;;1.平移坐标系
  25.     (setq PT (mapcar '- PT PT0))
  26.     ;;2.旋转坐标系
  27.     (setq PT_DIST (distance '(0 0 0) PT)
  28.           PT_ANG  (angle '(0 0 0) PT)
  29.           PT          (polar '(0 0 0) (- PT_ANG ANG) PT_DIST)
  30.     )
  31.     ;;///////////////////////////////////////
  32.     ;;判断pt是否在文字包围盒中
  33.     (if        (and (< (car PTA) (car PT) (car PTB))
  34.              (< (cadr PTA) (cadr PT) (cadr PTB))
  35.         )
  36.         (progn
  37.             ;;计算单个字符宽度
  38.             (setq WI (/ (- (car PTB) (car PTA)) 1.0 (strlen STR)))
  39.             (setq II (fix (/ (- (car PT) (car PTA)) WI)))
  40.             ;;////////////////////////////////////////////////////
  41.             ;;拆分字符串,构建查询用表
  42.             ;;例如:"汉12" 拆分为:("汉" "汉" "字" "字" "1" "2")
  43.             (setq LST '()) ;_存放结果的变量
  44.             (while (/= STR "")
  45.                 (if (> (ascii (substr STR 1 1)) 159)
  46.                     (setq STRI (substr STR 1 2)
  47.                           LST  (cons STRI LST)
  48.                           LST  (cons STRI LST)
  49.                           STR  (substr STR 3)
  50.                     )
  51.                     (setq STRI (substr STR 1 1)
  52.                           LST  (cons STRI LST)
  53.                           STR  (substr STR 2)
  54.                     )
  55.                 )
  56.             )
  57.             (setq LST (reverse LST))
  58.             ;;////////////////////////////////////////////////////
  59.             ;;查询得到结果
  60.             (nth II LST)
  61.         )
  62.         NIL
  63.     )
  64. ) ;_结束 dufun


  65. ;;;==================================
  66. ;;;功能:测试
  67. (defun C:TT (/ SS ENT PT)
  68.     (while (setq SS (entsel "\n请点取TEXT对象: "))
  69.         (setq ENT (entget (car SS)))
  70.         (if (= (cdr (assoc 0 ENT)) "TEXT")
  71.             (while (setq PT (getpoint "\n指定点: "))
  72.                 (setq PT (trans PT 1 0))
  73.                 (princ (TT ENT PT))
  74.             )
  75.         )
  76.     )
  77.     (princ)
  78. )
  79. ;;;==================================
  80. ;;;功能:测试2
  81. (defun C:TT2 (/ SS ENT PT)
  82.     (while (setq SS (entsel "\n请点取TEXT对象中的文字: "))
  83.         (setq ENT (entget (car SS))
  84.               PT  (cadr SS)
  85.               PT  (trans PT 1 0)
  86.         )
  87.         (if (= (cdr (assoc 0 ENT)) "TEXT")
  88.             (princ (TT ENT PT))
  89.         )
  90.     )
  91.     (princ)
  92. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 208个

财富等级: 日进斗金

发表于 2008-3-9 21:49:16 | 显示全部楼层
不太准确..
用一下文字测试.
[php]text中文搜索框□■>≥%%p0.00%%C%%d中华人民共和国国家主席
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 21:46 , Processed in 0.207041 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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