EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 2701|回复: 59
打印 上一主题 下一主题

Boundary的妙用(以设置文字的宽度为例)

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12408

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-9 11:42:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不知大家注意到没有,在Revit视图中的文字的宽度在不同的视图比例下,同一个文字兑现给的TextNote.Width 属性值是变换的。这就给大家造成一个麻烦,那就是如何在不同的比例下,创建文字,且是文字编辑器的宽度刚好容纳下文字的宽度呢?

文字是编程中大量使用的功能,所以这个应该对大家的工作有启发意义。

Revit API提供了Element..Boundary(view)属性 用于获取在指定视图下的外包box,我们可以利用这个属性来获取文字的实际宽度,然后把这个值赋给TextNote.Width属性,达到文字的编辑器宽度正好容纳下所有文字。这样当客户双击文字进行编辑时,文字不会换行。

请看下面的实现代码。


  1. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">[csharp] view plaincopy</span>
  2. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">Transaction transaction = new Transaction(activeDoc, "create text note"); //created by Joe Ye  </span>
  3. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            transaction.Start();  </span>
  4. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">  </span>
  5. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            string str = "ABCDabcd1234";  </span>
  6. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            TextNote tn = activeDoc.Create.NewTextNote(activeDoc.ActiveView, new XYZ(0, 0, 0), new XYZ(1, 0, 0), new XYZ(0, 1, 0),0.001, TextAlignFlags.TEF_ALIGN_LEFT, str);  </span>
  7. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">                     </span>
  8. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">              </span>
  9. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            BoundingBoxXYZ bounding = tn.get_BoundingBox(activeDoc.ActiveView);  </span>
  10. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            tn.Width = (bounding.Max.X - bounding.Min.X) * (1.0 + 1.0 / str.Length); //增加一个文字的宽度,防止编辑时变成两行  </span>
  11. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">              </span>
  12. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            //show the bounding in the view to see the calculated boundary of the text.,you can remove it.  </span>
  13. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            Line line1 = activeDoc.Application.Create.NewLineBound(bounding.Min, new XYZ(bounding.Max.X,bounding.Min.Y,0));  </span>
  14. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            Line line2 = activeDoc.Application.Create.NewLineBound(new XYZ(bounding.Max.X, bounding.Min.Y, 0), bounding.Max);  </span>
  15. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            Line line3 = activeDoc.Application.Create.NewLineBound(bounding.Max,new XYZ(bounding.Min.X, bounding.Max.Y, 0) );  </span>
  16. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            Line line4 = activeDoc.Application.Create.NewLineBound(new XYZ(bounding.Min.X, bounding.Max.Y, 0), bounding.Min);  </span>
  17. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">  </span>
  18. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            activeDoc.Create.NewModelCurve(line1, activeDoc.ActiveView.SketchPlane);  </span>
  19. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            activeDoc.Create.NewModelCurve(line2, activeDoc.ActiveView.SketchPlane);  </span>
  20. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            activeDoc.Create.NewModelCurve(line3, activeDoc.ActiveView.SketchPlane);  </span>
  21. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            activeDoc.Create.NewModelCurve(line4, activeDoc.ActiveView.SketchPlane);  </span>
  22. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">  </span>
  23. <span style="color: rgb(105, 105, 105); font-family: 'Microsoft Yahei', Simsun; ">            transaction.Commit();  </span>
复制代码
使用这个方法,你可以获得Revit中任何一个对象的外包box
作者:叶雄进 转自:http://blog.csdn.net/joexiongjin/article/details/6977984
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

5

主题

726

帖子

1692

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1692
推荐
发表于 2014-4-10 15:48:35 | 只看该作者
路过!!! 不发表意见……

1

主题

827

帖子

1316

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1316
推荐
发表于 2014-4-8 10:35:21 | 只看该作者
路过!!! 不发表意见……

29

主题

977

帖子

1833

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1833
推荐
发表于 2014-2-25 10:28:48 | 只看该作者
(*^__^*) 嘻嘻……

28

主题

763

帖子

1425

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1425
5F
发表于 2014-2-25 10:33:47 | 只看该作者
顶...... 楼下跟上.....

4

主题

723

帖子

1173

积分

BIM项目负责人

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

积分
1173
15F
发表于 2014-3-10 17:15:33 | 只看该作者
谢谢BIM大神…
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-30 13:55

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表