计算文字在AutoCAD中所占的长度,和字体样式,字高,宽高必有关
2009-05-16 07:41
851 查看
在AutoCAD中,经常需要在一个创建一个文字实体之前,先要计算出它根据字体样式,字高和宽高比在图纸中所占的宽度,比如在一大段文字排版的时候很有用。于是整理封装了一下这个函数:
其中YgxAu()->CurrTextStyle(styleName)是得到当前字体样式,函数如下:
其中CurrDB()就是得到当前数据库,acdbHostApplicationServices()->workingDatabase();
double YgxGeometry::TextLength(LPCSTR str, double h, double wr) { if(strlen(str) == 0) return(0.); struct resbuf *list = NULL; ads_point bl,rt; char styleName[31] = {0}; YgxAu()->CurrTextStyle(styleName); list = acutBuildList(RTDXF0,"text",1,str,7,styleName,40,h,41,wr,51,0.,NULL); acedTextBox(list,bl,rt); acutRelRb(list); return fabs(bl[0]-rt[0]); }
其中YgxAu()->CurrTextStyle(styleName)是得到当前字体样式,函数如下:
void YgxAcadUtil::CurrTextStyle(char styleName[]) { AcDbObjectId Id = CurrDB()->textstyle(); AcDbTextStyleTableRecord* pStyleRecord; if(acdbOpenObject((AcDbObject *&)pStyleRecord, Id, AcDb::kForRead) == Acad::eOk) { const char *name; pStyleRecord->getName(name); strcpy(styleName, name); pStyleRecord->close(); } else strcpy(styleName, "STANDARD"); }
其中CurrDB()就是得到当前数据库,acdbHostApplicationServices()->workingDatabase();
相关文章推荐
- 根据字体和文字来计算 UILable 的长度和大小
- android 设置Spinner文字标题颜色 字体大小样式
- CSS3系列二(媒体支持、文字与字体相关样式、盒相关样式)
- Android 如何根据设置文字大小动态计算TextView长度、动态设置Relativelayout布局
- 更改UILabel的字体样式及某段文字中的颜色
- css3---文字以及字体的相关样式
- android 设置Spinner文字标题颜色 字体大小样式
- Delphi连接AutoCAD_计算任意线条的长度宏的嵌套
- gdi、gdi+计算输出文字的长度
- UILabel 字体根据文字长度自动缩小
- 得到UILable在设置字体样式后的真实长度
- CSS设置字体和文字样式
- 计算输入字符的长度(文字为2个字符)
- 同一个TextView如何显示不同颜色的文字、字体大小、字体样式
- JTextPane的例子,模拟聊天客户端,演示了为每段文字设置字体、字号、样式、颜色、背景色和插入图片功能
- JTextPane例子,演示为文字设置字体、字号、样式、颜色、背景色和插入图片功能
- 在一个UILabel的文字采用不同的字体样式和字体大小
- Android编程实现自动调整TextView字体大小以适应文字长度的方法
- CSS3基础(2)—— 文字与字体相关样式、盒子类型、背景与边框相关样式、变形处理、动画功能