找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 510|回复: 3

[ARX程序]:怎样才能获取文字的外边界

[复制链接]
发表于 2003-10-15 20:40:05 | 显示全部楼层 |阅读模式

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

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

×
在arx编程中经常和文字打交道,不知哪位高手可以提取出文字的外边框?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 192个

财富等级: 日进斗金

发表于 2003-10-16 12:36:59 | 显示全部楼层
AcDbEntity::getGeomExtents Function virtual Acad::ErrorStatus

getGeomExtents(

AcDbExtents& extents) const;

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

使用道具 举报

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

使用道具 举报

发表于 2003-10-22 14:34:37 | 显示全部楼层
我觉得这个函数不好,文字如果是倾斜的,怎么版。 那得到只是包围文字的一个正矩形。
矩形的角度,不能随文字的角度倾斜的。对不对。
下面代码是我写的得到文字的外边框。

其中dPt1X,dPt2X 为文字外框的第一个点的值,
剩下的点一次类推,

dN 是文字大概有几个字,MinUnit_E是常量,
这个可能不能得到文字的真正边界,因为是 人为 设定边框大小的,
不过得到的四个点的坐标,其倾斜角度和文字是一样的。
希望对你有帮助

void CalculateForPoint(int dN,double &dPt1X,double &dPt1Y,
double &dPt2X,double &dPt2Y,double &dPt3X,double &dPt3Y,double &dPt4X,double &dPt4Y,char* chrText,AcGePoint3d GePoi3d,double dRotaion)
{
dA = dN * 8.0 * MinUnit_E + (dN - 1) * 1.0 * MinUnit_E+2*MinUnit_E;
               
double dC = 0.0;       
dB =  18.0* MinUnit_N;
double dD2 ;
double dP1 ;
dC = 16.0*MinUnit_N+9.0*MinUnit_N;
dD2 = sqrt((dA/2)*(dA/2)+dC*dC);
dP1 = atan(dC/(dA/2.0));
               
dD = (sqrt(dA * dA + dB * dB)) / 2;
dP = acos(dA / (dD * 2));
               
AcGePoint3d                                GePoi3dTmp;
               
acutPolar(asDblArray(GePoi3d), PI + (dRotaion + dP), dD, asDblArray(GePoi3dTmp));
dPt1X= GePoi3dTmp.x;
dPt1Y= GePoi3dTmp.y;
               
acutPolar(asDblArray(GePoi3d), (dRotaion - dP), dD, asDblArray(GePoi3dTmp));
dPt4X= GePoi3dTmp.x;
dPt4Y= GePoi3dTmp.y;
               
               
acutPolar(asDblArray(GePoi3d), PI + (dRotaion - dP1), dD2, asDblArray(GePoi3dTmp));
dPt2X= GePoi3dTmp.x;
dPt2Y= GePoi3dTmp.y;
               
acutPolar(asDblArray(GePoi3d), (dRotaion + dP1), dD2, asDblArray(GePoi3dTmp));
dPt3X= GePoi3dTmp.x;
dPt3Y= GePoi3dTmp.y;

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 05:34 , Processed in 0.300920 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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