找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 302|回复: 0

[每日一码] AcDbText::getTransformedCopy 不能预期的解决方案

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-2-23 22:55:06 | 显示全部楼层 |阅读模式
  1. Acad::ErrorStatus safeGetTransformedCopy(const AcDbText* pText,const
  2. AcGeMatrix3d xform, AcDbEntity*& pNewEntity)
  3. {
  4.    static AcDbText text;
  5.    Acad::ErrorStatus es;
  6.    text.copyFrom(pText);
  7.    AcGePoint3d posorig(text.position());
  8.    AcGePoint3d alignorig(text.alignmentPoint());
  9.    AcGePoint3d pos,align;
  10.    AcGeVector3d norm(text.normal());
  11. acdbWcs2Ecs(asDblArray(posorig),asDblArray(pos),asDblArray(norm),Adesk::kFalse);
  12.    double elev = pos.z;
  13.    if (fabs(elev)>1E-10)
  14.    {
  15.         pos.z = 0;
  16.         align.z =0;
  17. acdbEcs2Wcs(asDblArray(pos),asDblArray(pos),asDblArray(norm),Adesk::kFalse);
  18. acdbEcs2Wcs(asDblArray(align),asDblArray(align),asDblArray(norm),Adesk::kFalse);
  19.         text.setPosition(pos);
  20.         text.setAlignmentPoint(align);
  21.    }
  22.    if ((es = text.getTransformedCopy(xform,pNewEntity))==Acad::eOk)
  23.    {
  24.         AcDbText* pNewText = NULL;
  25.         if ((pNewText = AcDbText::cast(pNewEntity)) && fabs(elev)>1E-10)
  26.         {
  27.             posorig.transformBy(xform);
  28.             alignorig.transformBy(xform);
  29.             pNewText->setPosition(posorig);
  30.             pNewText->setAlignmentPoint(alignorig);
  31.         }
  32.    }
  33.    return es;
  34. }
  35. acdbWcs2Ecs(asDblArray(alignorig),asDblArray(align),asDblArray(norm),Adesk::kFalse);
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 13:48 , Processed in 0.121380 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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