[摘要] 在Revit二次开发中设置文字字体还是一件比较容易的事情,因为有现成的API 首先需要获取系统文字名称,这里用最简单的方式,百度一下:ht
在Revit二次开发中设置文字字体还是一件比较容易的事情,因为有现成的API.
首先需要获取系统文字名称,这里用最简单的方式,百度一下:
https://zhidao.baidu.com/question/69549353.html
获取好系统名称后,只用在Revit的API中传入系统文字的名称即可:
textNoteType.get_Parameter(BuiltInParameter.TEXT_FONT).Set(“宋体”);
这样你的文字类型就被设置为宋体了。
接下来来研究一下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