Revit文字生成

在Revit中,生成文字用的是Autodesk.Revit.Creation下的Document 类的NewTextNote(View, XYZ, XYZ, XYZ, Double, TextAlignFlags, String)方法。

下面是一个例子

//生成文字
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)]
    [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
    [Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
    public class CreateText : IExternalCommand
    {
        public Result Execute(ExternalCommandData CommandData,
            ref string message, Autodesk.Revit.DB.ElementSet elements)
        {
            UIApplication uiApp = CommandData.Application;
            Autodesk.Revit.ApplicationServices.Application app = uiApp.Application;
            Document doc = uiApp.ActiveUIDocument.Document;

            Transaction transaction = new Transaction(doc, "create text note"); //created by Joe Ye
            transaction.Start();

            string str = "123456789";
            TextNote tn = doc.Create.NewTextNote(doc.ActiveView, new XYZ(0, 0, 0), new XYZ(1, 0, 0), new XYZ(1, 0, 0), 0.001, TextAlignFlags.TEF_ALIGN_LEFT, str);


            transaction.Commit();

            return Result.Succeeded;
        }


接下来,我们研究一下NewTextNote的几个参数。

对于第一、二和最后一个参数,含义应该是很明显的,这里就不说了。而中间那几个参数呢?

对于第三个参数,如果是(1, 0, 0),则结果是这样的。


如果是(0, 1, 0),则结果是这样的。


如果是(1, 1, 0),则结果是这样的。


所以,第三个参数应该是文字方向的一个矢量,文字是沿着这个矢量的方向去创建的。


对于第四个参数,这里有一个概念,BoundaryBox。对于上面我们生成的文字,只要单击文字,文字就会显示成:


可以看出,文字是在一个框中显示出来的。这个框围起来的范围,就是一个BoundaryBox。

把第四个参数改成(1, 1, 0),则结果是这样的。


可见,这个参数改变的是BoundaryBox的形状。

同时改变第三第四个参数,如下:

new XYZ(1, 1, 0), new XYZ(1, 0, 0)


new XYZ(1, 1, 0), new XYZ(0, 1, 0)



对于第五个参数,API手册中说的是:The width of the rectangle bounding the note text.看着不太清楚说的什么意思,没关系,我们实验一下看看。

把这个值改成0.001,0.01,和0.1看看。


看着应该是BoundaryBox的宽度。


最后来看第六个参数,看API手册,应该是对齐的意思。不过,本来一行文字,没个参照物,就谈不上对齐。不过这里有个BoundaryBox,那很自然可以想到是文字在BoundaryBox中的对齐方式。是不是这样呢?

把第六个参数改成:TextAlignFlags.TEF_ALIGN_LEFT,结果如下:


把第六个参数改成:TextAlignFlags.TEF_ALIGN_RIGHT,结果如下:


把第六个参数改成:TextAlignFlags.TEF_ALIGN_CENTER,结果如下:


显然,这个参数即是文字对于BoundaryBox中的对齐方式。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值