Boundary的妙用(以设置文字的宽度为例)
来源:互联网 发布:淘宝网开店要求 编辑:程序博客网 时间:2024/06/16 09:10
不知大家注意到没有,在Revit视图中的文字的宽度在不同的视图比例下,同一个文字兑现给的TextNote.Width 属性值是变换的。这就给大家造成一个麻烦,那就是如何在不同的比例下,创建文字,且是文字编辑器的宽度刚好容纳下文字的宽度呢?
文字是编程中大量使用的功能,所以这个应该对大家的工作有启发意义。
Revit API提供了Element..Boundary(view)属性 用于获取在指定视图下的外包box,我们可以利用这个属性来获取文字的实际宽度,然后把这个值赋给TextNote.Width属性,达到文字的编辑器宽度正好容纳下所有文字。这样当客户双击文字进行编辑时,文字不会换行。
请看下面的实现代码。
Transaction transaction = new Transaction(activeDoc, "create text note"); //created by Joe Ye transaction.Start(); string str = "ABCDabcd1234"; 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); BoundingBoxXYZ bounding = tn.get_BoundingBox(activeDoc.ActiveView); tn.Width = (bounding.Max.X - bounding.Min.X) * (1.0 + 1.0 / str.Length); //增加一个文字的宽度,防止编辑时变成两行 //show the bounding in the view to see the calculated boundary of the text.,you can remove it. Line line1 = activeDoc.Application.Create.NewLineBound(bounding.Min, new XYZ(bounding.Max.X,bounding.Min.Y,0)); Line line2 = activeDoc.Application.Create.NewLineBound(new XYZ(bounding.Max.X, bounding.Min.Y, 0), bounding.Max); Line line3 = activeDoc.Application.Create.NewLineBound(bounding.Max,new XYZ(bounding.Min.X, bounding.Max.Y, 0) ); Line line4 = activeDoc.Application.Create.NewLineBound(new XYZ(bounding.Min.X, bounding.Max.Y, 0), bounding.Min); activeDoc.Create.NewModelCurve(line1, activeDoc.ActiveView.SketchPlane); activeDoc.Create.NewModelCurve(line2, activeDoc.ActiveView.SketchPlane); activeDoc.Create.NewModelCurve(line3, activeDoc.ActiveView.SketchPlane); activeDoc.Create.NewModelCurve(line4, activeDoc.ActiveView.SketchPlane); transaction.Commit();
使用这个方法,你可以获得Revit中任何一个对象的外包box
- Boundary的妙用(以设置文字的宽度为例)
- css 设置超出宽度的文字显示为省略号
- 设置文字注释边框的宽度
- android设置适当的文字宽度
- 设置table的td宽度不随文字变宽
- 设置table的td宽度,不随文字变宽
- 计算文字的宽度(动态)
- 设置标准控件的文字为中文
- 设置标准控件的文字为中文
- 设置状态栏的文字为白色
- android--获取文字的宽度
- UILabel的宽度自适应文字
- UILabel的宽度自适应文字
- JAVA环境变量的设置祥解(以Windows为例)
- 以MDaemon为例解释邮件服务器的安全设置
- boundary的用法
- C++读取以空格作为数据区分标记,以回车为行标记的txt文件到一个整数数组(字符串妙用)
- 背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)
- 快速排序
- Square新增顾客忠诚度培养和收费凭条打印功能
- 收缩数据库
- c# 将指定的信息导出到eXcel文件中,
- getElementById
- Boundary的妙用(以设置文字的宽度为例)
- 设计模式之——观察者模式(Observer)
- 单链表反转
- 走出用例图误区
- 求助:关于java虚拟机的安装
- 新游预告:Undead Arcade将于年底上市,采用虚幻引擎
- UDEV的移植
- redirect、redirect-action、chain三者的区别!
- Ubuntu,Mysql二进制安装流程以及常见错误