乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 26|回复: 1

求函数AcAxGetBoundingBox的正确用法

[复制链接]

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2013-1-7 10:35:00 | 显示全部楼层 |阅读模式
最近做个计算文本实体的文字长度的功能,用到AcAxGetBoundingBox这个函数,
但是函数返回一直失败(S_FALSE),有哪位朋友知道这个函数的标准用法的,
希望不吝赐教,万分感谢.
下面是我的部分代码
  1. bool CToolFunction::getTextLength(AcDbObjectId TextId, double& textlength)
  2. {
  3.         VARIANT                        X1_VarTmp;
  4.         SAFEARRAY *                X1_ArrTmp;
  5.         double *                X1_buf;
  6.         X1_ArrTmp = ::SafeArrayCreateVectorEx(VT_R8, 1, 2, NULL);
  7.         X1_VarTmp.vt = VT_ARRAY | VT_R8;
  8.         X1_VarTmp.parray = X1_ArrTmp;
  9.         ::SafeArrayAccessData(X1_ArrTmp, (void **)&X1_buf);
  10.         VARIANT                        X2_VarTmp;
  11.         SAFEARRAY *                X2_ArrTmp;
  12.         double *                X2_buf;
  13.         X2_ArrTmp = ::SafeArrayCreateVectorEx(VT_R8, 1, 2, NULL);
  14.         X2_VarTmp.vt = VT_ARRAY | VT_R8;
  15.         X2_VarTmp.parray = X2_ArrTmp;
  16.         ::SafeArrayAccessData(X2_ArrTmp, (void **)&X2_buf);
  17.         HRESULT slt;
  18.         slt = AcAxGetBoundingBox(TextId, &X1_VarTmp, &X2_VarTmp);
  19.         AcGePoint3d ptMin;
  20.         AcGePoint3d ptMax;
  21.         if (slt)
  22.         {
  23.                 ptMin = AcGePoint3d(X1_buf[0], X1_buf[1], 0.0);
  24.                 ptMax = AcGePoint3d(X2_buf[0], X2_buf[1], 0.0);
  25.                 textlength = abs(ptMax.x - ptMin.x);
  26.                 ::SafeArrayDestroy(X1_ArrTmp);
  27.                 ::SafeArrayDestroy(X2_ArrTmp);
  28.                 return true;
  29.         }
  30.         else
  31.         {
  32.                 textlength = 0.0;
  33.                 ::SafeArrayDestroy(X1_ArrTmp);
  34.                 ::SafeArrayDestroy(X2_ArrTmp);
  35.                 return false;
  36.         }
  37. }
回复

使用道具 举报

2

主题

165

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
173
发表于 2013-1-11 11:16:00 | 显示全部楼层
干嘛用com的?
acedTextBox就可以了,
传送门【http://objectarx.net/forum.php?mod=viewthread&tid=4044&extra=】
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 09:40 , Processed in 0.145107 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表