BIM建筑网
更专业的BIM技术学习网站!


Revit二次开发——字体的问题

免费的Ai上线啦!
BIM建筑网自主研发,你想要Ai功能都在这里!
Ai·提升效率 技术答疑

在Revit二次开发中设置文字字体还是一件比较容易的事情,因为有现成的API.

首先需要获取系统文字名称,这里用最简单的方式,百度一下:

https://zhidao.baidu.com/question/69549353.html

获取好系统名称后,只用在Revit的API中传入系统文字的名称即可:

textNoteType.get_Parameter(BuiltInParameter.TEXT_FONT).Set(“宋体”);

这样你的文字类型就被设置为宋体了。

接下来来研究一下Revit里奇葩的文字迷雾。

首先第一个问题:中文字符的长度是英文字符长度的两倍。这个迷雾还好。

Revit二次开发——字体的问题

第二个问题:迷一样的文字高度:

Revit二次开发——字体的问题

这是一个5mm,宽度系数为0.7的宋体,除去1:100的比例,这个字体的高度远不止5mm,宽度也不止3.5mm。这就坑爹了,怎么跟cad或者Word上的字号对应上呢?更坑爹的是不同字体,宽度高度完全不一样。

System.Windows.Forms.Control control = new System.Windows.Forms.Control();
System.Drawing.Graphics g = control.CreateGraphics();
System.Drawing.SizeF sizeFOrigin = g.MeasureString("宋", new System.Drawing.Font("宋体", 5));
System.Drawing.SizeF sizeF = g.MeasureString(titleTextSet.Font, new System.Drawing.Font(titleTextSet.Font, 5));
g.Dispose();
double r1 = 1.48 * (sizeF.Width / sizeFOrigin.Width); //宽度系数
double r2 = 1.8 * (sizeF.Height / sizeFOrigin.Height); //高度系数

这里其实只需要准确测量一个字体,我这里用的是宋体,如果是5mm的字体,那么字体高度就是9mm,系数1.8。宽度系数是0.7,最后宽度的系数需要乘以1.48。至于其他字体,通过MeasureString的方法来测量不同字体相对于宋体的系数,这样就能最终控制文本字体的高度和宽度。

尺寸控制好后,就好定字号了。因为revit中没有字号一说,所以这里需要你自己去转换。以下就是一个字号对应尺寸的表格。

当然,以上代码未经专业测试,更多细节需要自己思考。

http://www.360doc.com/content/18/0201/14/48110419_726936679.shtml

微信公众号:xuebim
关注建筑行业BIM发展、研究建筑新技术,汇集建筑前沿信息!
← 微信扫一扫,关注我们+
赞(0) 打赏
BIM建筑网 » Revit二次开发——字体的问题

评论 抢沙发

评论前必须登录!

 

BIM建筑网,更专业的BIM技术学习网站!

关注建筑新动态,分享建筑新技术

联系我们关于BIM建筑网

觉得文章有用就打赏一下小编吧

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

扫码登录

微信「关注」,快捷登录
扫码关注后会自动登录
注册登录代表您已同意《用户许可协议》
账号登录 | 其他登录

|登录

找回密码

|账号登录注册