找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3338|回复: 7

[实体] 获取MTEXT边框的四个角点

[复制链接]

已领礼包: 3884个

财富等级: 富可敌国

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

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

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

×
本帖最后由 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. )

评分

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

查看全部评分

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

已领礼包: 19个

财富等级: 恭喜发财

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

点评

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

使用道具 举报

已领礼包: 3884个

财富等级: 富可敌国

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

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

点评

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

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

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

使用道具 举报

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

点评

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

评分

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

查看全部评分

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

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

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 06:49 , Processed in 0.190250 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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