几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(C++)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-17, 09:54 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】如何精确获取acdbtext文本串的长度?

如何精确获取acdbtext文本串的长度?
如何精确获取acdbtext文本串的长度?
如题
//以下代码只说明了如何实现该功能,并无
//检测措施,如要完善请自行添加
{
ads_name en;
ads_point pt;
acedentsel("\n选择实体:", en, pt);
acdbobjectid id;
acdbgetobjectid(id, en);
acdbentity *pent;
acdbopenobject(pent, id, acdb::kforread);
acdbtext *ptext;
//转换acdbentity指针为acdbtext类指针
ptext = acdbtext::cast(pent);
//strlen()是c++中的字符串处理函数
//用于获取字符串的长度
int i = strlen(ptext->textstring());
pent->close();
}
可能是我表达的不清楚,我要的不是字符个数,而是图形的长度,类似win32 api 函数 gettextextentpoint32 获取输出文本图形的长度。
还是不清楚你到底要什么?是不是整个图形所占用的字节数?
如图中所示,文本串“123456789”的长度就是起点和端点的坐标x的差(x2 - x1)
此主题相关图片如下:
/************************************************************************
*函数名: gettextlength
*功能: 计算cad中文字字符串长度的函数
*调用函数表:
*被调用函数表:
*输入参数: textid -- 字符串在cad中的id
*输出参数:
*返回值: cad状态
*其他:
************************************************************************/
acad::errorstatus gettextlength(acdbobjectid textid,double& textlengh)
{
acad::errorstatus es=acad::eok;
acdbentity *pent=null;
if((es=acdbopenobject(pent,textid,acdb::kforread))!=acad::eok)
return es;

acdbextents ext;
pent->getgeomextents(ext);
pent->close();
acgepoint3d minpt,maxpt;
minpt = ext.minpoint();
maxpt = ext.maxpoint();
textlengh = acutdistance(asdblarray(minpt),asdblarray(maxpt));

return es;
}
谢谢楼上的!
这方法我已经试过,对大部分的文本是正确的。但有一些文本就不正确。不知道是什么原因。
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 09:49 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多