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

来源:建筑界编辑:黄子俊发布时间:2020-03-22 19:39:27

[摘要] 在Revit二次开发中设置文字字体还是一件比较容易的事情,因为有现成的API 首先需要获取系统文字名称,这里用最简单的方式,百度一下:ht

在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

字体,Revit

延展阅读

相关文章


热门资讯推荐