找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 623|回复: 2

[求助] AcgitextStyle获取的单行文本范围,有的正确,有的错误

[复制链接]
发表于 2020-7-28 18:01:40 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 DCMZ 于 2020-7-28 18:04 编辑

我用AcgitextStyle获取了单行文本的宽度和高度,代码如下所贴。
问题出来了,有的文本(如第1行,下图),输出的宽高正常,而有的(如第2、3行,下图),输出的宽高就有问题。我分析原因,有问题的是单行文本高度和宽度因子不是默认的,二是后面输入的,所以有问题。
我现在就是不知道是哪个参数来调整呢。
1.png


void CDcText::getWH(AcDbObjectId objID , double txtScale = 1)
{
        AcDbText *pTxt = NULL;
        acdbOpenObject(pTxt, objID);
        ACHAR *txt;//文本内容
        txt = pTxt->textString();
        AcDbObjectId txtStyleID;//文本样式ID
        txtStyleID = pTxt->textStyle();
        AcDbTextStyleTableRecord *pTxtStyleRcd = new AcDbTextStyleTableRecord;
        acdbOpenObject(pTxtStyleRcd, txtStyleID);
        ACHAR *stylename;//文本样式名称
        pTxtStyleRcd->getName(stylename);
        AcGiTextStyle iStyle;
        fromAcDbTextStyle(iStyle, txtStyleID);
        pTxt->close();
        pTxtStyleRcd->close();
        AcGePoint2d ptWH = iStyle.extents(txt, Adesk::kFalse, _tcslen(txt), Adesk::kTrue);//宽高坐标点对
        txtW = ptWH.x;//文本宽
        txtH = ptWH.y;//文本高
        pt_leftlower = AcGePoint2d(Position.x, Position.y);//左下角点
        pt_rightlower = AcGePoint2d(Position.x +txtW, Position.y);//右下角点
        pt_rightupper = AcGePoint2d(Position.x + txtW, Position.y + txtH);//右上角点
        pt_leftupper = AcGePoint2d(Position.x , Position.y + txtH);//左上角点
        pt_rightlower.rotateBy(Rotation, pt_leftlower);//考虑角度后的右下角点
        pt_rightupper.rotateBy(Rotation ,pt_leftlower);//考虑角度后的右上角点
        pt_leftupper.rotateBy(Rotation, pt_leftlower);//考虑角度后的左上角点
        AcGePoint2d ptMid;//中点坐标
        ptMid.x = (pt_leftlower.x + pt_rightupper.x) / 2;
        ptMid.y = (pt_leftlower.y + pt_rightupper.y) / 2;
        pt_leftlower.scaleBy(txtScale, ptMid);//考虑放缩后的左下点
        pt_rightlower.scaleBy(txtScale, ptMid);//考虑放缩后的右下点
        pt_rightupper.scaleBy(txtScale, ptMid);//考虑放缩后的右上点
        pt_leftupper.scaleBy(txtScale, ptMid);//考虑放缩后的左上点
}

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

已领礼包: 19个

财富等级: 恭喜发财

发表于 2020-7-29 15:30:23 | 显示全部楼层
Textscale不应该是整体缩放吧,应该是宽度系数吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-29 16:21:20 | 显示全部楼层
Lisphk 发表于 2020-7-29 15:30
Textscale不应该是整体缩放吧,应该是宽度系数吧

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 22:44 , Processed in 0.240599 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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