设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

返回列表
查看: 1714|回复: 7

[选择集] 获取MTEXT边框的四个角点

[复制链接]

签到天数: 1398 天

连续签到: 1 天

[LV.10]以坛为家III

已领礼包: 10个

财富等级: 恭喜发财

发表于 2013-6-8 09:42:30 | 显示全部楼层 |阅读模式

函数发布
函数名称: GetMTextEdgeBox
调用格式: (GetMTextEdgeBox Ename)
参数说明: Ename 多行文字图元
返回值: MText图元边框的四个角点的表
函数简介: 返回的边框不包括非字符空格
函数来源: 原创
函数作者: ayl1004
适用版本: 不限 
最后更新时间: 2013-06-08
备注: -
演示图片: -

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

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

x
本帖最后由 ayl1004 于 2013-6-8 10:38 编辑
  1. (defun GetMTextEdgeBox (Ename /       EnLst  InsPt  Align  Width
  2.                                      Heigh  MinPt MaxPt Rotat Angl0 Angl1
  3.                                         )
  4.   (and
  5.     (setq EnLst (entget Ename))
  6.     (= (cdr (assoc 0 EnLst)) "MTEXT")
  7.     (progn
  8.       (setq InsPt (cdr (assoc 10 EnLst))
  9.       Align (cdr (assoc 71 EnLst))
  10.       Width (cdr (assoc 42 EnLst))
  11.       Heigh (cdr (assoc 43 EnLst))
  12.       Rotat (cdr (assoc 50 EnLst))
  13.       Angl0 (+ (* pi 1.5) Rotat)
  14.       Angl1 (+ pi Rotat)
  15.       )
  16.       (cond
  17.   ((= Align 1)
  18.    (setq MinPt (polar InsPt Angl0 Heigh)
  19.          MaxPt (polar InsPt Rotat Width)
  20.    )
  21.   )
  22.   ((= Align 4)
  23.    (setq MinPt (polar InsPt Angl0 (* Heigh 0.5))
  24.          MaxPt (polar InsPt (+ Angl0 pi) (* Heigh 0.5))
  25.          MaxPt (polar MaxPt Rotat Width)
  26.    )
  27.   )
  28.   ((= Align 7)
  29.    (setq MinPt InsPt
  30.          MaxPt (polar InsPt (+ Angl0 pi) Heigh)
  31.          MaxPt (polar MaxPt Rotat Width)
  32.    )
  33.   )
  34.   ((= Align 2)
  35.    (setq MinPt (polar InsPt Angl0 Heigh)
  36.          MinPt (polar MinPt Angl1 (* Width 0.5))
  37.          MaxPt (polar InsPt Rotat (* Width 0.5))
  38.    )
  39.   )
  40.   ((= Align 5)
  41.    (setq MinPt (polar InsPt Angl0 (* Heigh 0.5))
  42.          MinPt (polar MinPt Angl1 (* Width 0.5))
  43.          MaxPt (polar InsPt (+ Angl0 pi) (* Heigh 0.5))
  44.          MaxPt (polar MaxPt Rotat (* Width 0.5))
  45.    )
  46.   )
  47.   ((= Align 8)
  48.    (setq MinPt (polar InsPt Angl1 (* Width 0.5))
  49.          MaxPt (polar InsPt (+ Angl0 pi) Heigh)
  50.          MaxPt (polar MaxPt Rotat (* Width 0.5))
  51.    )
  52.   )
  53.   ((= Align 3)
  54.    (setq MinPt (polar InsPt Angl0 Heigh)
  55.          MinPt (polar MinPt Angl1 Width)
  56.          MaxPt InsPt
  57.    )
  58.   )
  59.   ((= Align 6)
  60.    (setq MinPt (polar InsPt Angl0 (* 0.5 Heigh))
  61.          MinPt (polar MinPt Angl1 Width)
  62.          MaxPt (polar InsPt (+ Angl0 pi) (* 0.5 Heigh))
  63.    )
  64.   )
  65.   ((= Align 9)
  66.    (setq MinPt (polar InsPt Angl1 Width)
  67.          MaxPt (polar InsPt (+ Angl0 pi) Heigh)
  68.    )
  69.   )
  70.       )
  71.       (list
  72.         MinPt
  73.         (polar MinPt Rotat Width)
  74.         MaxPt
  75.         (polar MaxPt Angl1 Width)
  76.       )
  77.     )
  78.   )
  79. )



上一篇:返回多段线自交点
下一篇:给LISP表构建二叉树表

评分

参与人数 2D豆 +10 收起 理由
xshrimp + 5 很给力!经验;技术要点;资料分享奖!
炫翔 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

签到天数: 651 天

连续签到: 1 天

[LV.9]以坛为家II

已领礼包: 18个

财富等级: 恭喜发财

发表于 2013-6-8 09:48:50 | 显示全部楼层
楼主,MTEXT获取边框要注意什么? 我看程序里面判断了ALIGN很多次,能给解惑下吗?

点评

对齐方式,有九种,跟插入点的位置有关  详情 回复 发表于 2013-6-8 09:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 1398 天

连续签到: 1 天

[LV.10]以坛为家III

已领礼包: 10个

财富等级: 恭喜发财

 楼主| 发表于 2013-6-8 09:52:06 | 显示全部楼层
Lisphk 发表于 2013-6-8 09:48
楼主,MTEXT获取边框要注意什么? 我看程序里面判断了ALIGN很多次,能给解惑下吗?

对齐方式,有九种,跟插入点的位置有关

点评

楼主,要考虑这么多对齐方式,和用 vla-GetBoundingBox 直接求出的包围盒子有什么不同的吗?  详情 回复 发表于 2013-6-8 10:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 651 天

连续签到: 1 天

[LV.9]以坛为家II

已领礼包: 18个

财富等级: 恭喜发财

发表于 2013-6-8 10:43:46 | 显示全部楼层
ayl1004 发表于 2013-6-8 09:52
对齐方式,有九种,跟插入点的位置有关

楼主,要考虑这么多对齐方式,和用 vla-GetBoundingBox 直接求出的包围盒子有什么不同的吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 60 天

连续签到: 1 天

[LV.6]常住居民II

发表于 2013-6-8 10:50:22 | 显示全部楼层
GetBoundingBox求不出来MTEXT的正确值

点评

多谢指点  详情 回复 发表于 2013-6-8 11:29

评分

参与人数 1D豆 +3 收起 理由
炫翔 + 3 技术引导讨论和指点奖!

查看全部评分

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

使用道具 举报

签到天数: 651 天

连续签到: 1 天

[LV.9]以坛为家II

已领礼包: 18个

财富等级: 恭喜发财

发表于 2013-6-8 11:29:22 | 显示全部楼层
snsj 发表于 2013-6-8 10:50
GetBoundingBox求不出来MTEXT的正确值

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

使用道具 举报

签到天数: 1378 天

连续签到: 1 天

[LV.10]以坛为家III

已领礼包: 2476个

财富等级: 金玉满堂

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

使用道具 举报

签到天数: 433 天

连续签到: 1 天

[LV.9]以坛为家II

点击这里给我发消息

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

使用道具 举报

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

本版积分规则

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

辽公网安备 21040202000005号

GMT+8, 2018-4-23 00:11 , Processed in 0.630781 second(s), 98 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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