打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Revit二次开发
userphoto

2022.07.27 广东

关注

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上的字号对应上呢?更坑爹的是不同字体,宽度高度完全不一样。

  1. System.Windows.Forms.Control control = new System.Windows.Forms.Control();
  2. System.Drawing.Graphics g = control.CreateGraphics();
  3. System.Drawing.SizeF sizeFOrigin = g.MeasureString("宋", new System.Drawing.Font("宋体", 5));
  4. System.Drawing.SizeF sizeF = g.MeasureString(titleTextSet.Font, new System.Drawing.Font(titleTextSet.Font, 5));
  5. g.Dispose();
  6. double r1 = 1.48 * (sizeF.Width / sizeFOrigin.Width); //宽度系数
  7. 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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
博客基本代碼說明和解讀大全
甲方和老板都不买字体,设计师该怎么办?
一組1955年到1988年難得的老照片
C#获取字符串宽度像素
【小知识38*宋体字是谁创写的】
CSS,font-family,好看,常用,中文,字体(更新中)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服