APP下载

基于Revit在水利工程中常规注释、标识二次开发

2015-08-28吝江峰左威龙

河南科技 2015年3期
关键词:详图二次开发插件

吝江峰 徐 鹏 左威龙

(江苏省水利勘测设计研究院,江苏 扬州225127)

如果说CAD是从手工绘图到电子制图(“甩图板”)的一大进步,当时称之为设计革命,那么现在的三维协同设计可说是设计理念和手段的更大飞跃。二维图元化设计图纸存在的错、漏、碰问题,自身难以解决。三维信息化设计具有数字建模、数据库共享、模拟现实、协同性好等诸多优点,同时减少设计过程中的错误和遗漏,提高设计成果的效率和品质,缩短因客户需求而变更修改设计的时间,节省成本[1]。三维协同设计是将来设计发展的趋势,三维协同设计底层支持三维信息模型的建立。

基于此,Autodesk公司以创建的智能模型为基础提供Revit软件产品,这款产品具有较好的兼容性,能灵活协同工作流程,而且同MicroStation、CATIA/Digital三维平台相比,价格适中,通用性更强,适合中小型企业用户。由于Revit主要侧重于建筑领域,常规注释和标识仅符合建筑绘图规范,为了使Revit更好地适应水利工程设计和工作流程,亟需对Revit进行二次开发,使其操作和所绘制工程图符合水利绘图习惯及规范,使创建和表达水利工程三维的效率进一步提高,缩短利用Revit平台设计水利项目的工作周期[2]。

1 标识二次开发的必要性

注释、标识是对工程图纸进一步诠释,是建造工程师了解设计者意图的桥梁,也是设计工作中的重要组成部分。目前Revit软件能在互交式界面(以下简称”UI”)完成大部分尺寸标注、高程标注和一些常规标注、注释。

目前在Revit软件UI通过两种方式实现模型中图元的注释、标识。一种是通过“注释”菜单下“按类别标记”选定被注释对象进行注释,注释效果见图1。这种注释方式优点是从三维信息模型中自动读取标识对象特定信息,无需手动输入文字内容即可完成注释,当模型信息更改时注释信息也会自动更新。但这种方法缺点是:①Revit所涉及标记族有结构柱标记、结构桁架标记、结构框架标记、墙标记、专用设备标记等多达近百种标记,在注释之前,先要根据所建图元类型分别建立相应包含字体样式、大小、颜色等信息的图元类型标记族,假设要的注释字体大小分别为3mm,3.5mm,4mm字体,需要分别建立3mm,3.5mm,4mm字体标记族,总计达到近300种标记族。体量大,不便于管理。②从标记效果来看,虽然文字位置可以调整,但不能进行旋转,即文字只能水平放置;引线起点位置只能由Revit根据文字位置默认指定,不能修改,如图1所示第一节翼墙注释引线起始点放在被注释体外;引线终点位置在文字左侧中部或文字右侧中部或文字下侧中部,其位置也不允许用户改变;文字下没有水平引线。以上特点不符合现有水利绘图习惯和规范。

图1 通过UI按类别标记效果

另一种方法是通过“注释”菜单,利用“详图线”配合“文字”工具完成注释,既先画出引线、文字下线条,插入文字并输入相应内容,类似在Autodesk CAD中画图。此种方式优点是注释放置位置、引线起点位置和终点位置可以灵活控制,文字修改方便。但这种方法的缺陷是:①文字长度更改后,绘制的文字下引线不会自动调整,需要手动调整;②绘制竖直或倾斜注释,先插入水平文字后进行旋转。放置倾斜注释时,需要指定旋转点和角度,这时需要绘制辅助线得到旋转角度或进行多次旋转操作。此种方法智能化程度低,重复操作,工作效率低。

综上所述,虽然Revit软件能在UI完成大部分尺寸标注、高程标注和一些常规标注、注释,但UI中绘制的一些注释、标识,要么不符合水利习惯及规范,要么操作繁琐,效率低,亟需进行二次开发,使Revit更切合水利绘图习惯和规范,更加行业化、专业化、高效化[3]。

2 Revit二次开发流程

Revit的应用程序编程接口 (Application Program Interface以下简称“API”)可用Visual Basic.NET、C#、以及C++/CLI等任何与.NET兼容的编程语言进行编程。本文主要介绍使用Visual C#进行二次开发的开发流程[4]。Revit提供2种方式来扩展其功能:一种方式是创建一个外部命令(ExternalCommand),这种方式由用户点击添加的命令按钮来启动二次开发生成的相应命令;另一种方式是添加一个外部应用(External Application),这种方式是添加一个菜单或工具条,二次开发生成的插件在启动和关闭Revit时自动执行。

创建外部命令流程图见图2。外部应用的步骤和外部命令一样,不同的是新建类从ExternalApplication派生,实现方法从OnStartup和OnShutdown方法实现。

图2 RevitAPI外部命令创建流程图及格式

3 Revit常规标识开发方案、API难点及解决办法

针对UI中Revit常规注释不足,采用C#语言进行二次开发实现所需功能。实现方案有3种:方案一是通过API实现UI中“详图线”的创建,配合“文字”工具完成所需注释。此方法思路清晰,不足之处是在Revit中相同字符长度在不同视图比例或标注字体样式下所需水平线长度不等,文字与水平线间距也无法与不同视图比例相匹配。方案二是通过API载入已建立标记族进入项目并修改族参数完成注释。这种方式可以避免第一种方式因视图比例和标注字体而产生影响,但修改族参数值会使整个项目的注释都变为相同的文字内容。通过摸索和研究,方案三通过API载入已带实例参数的标记族到项目完成注释,实例参数的修改只修改当前族实例的文字内容。经过综合比较,选定方案三思路运用VisualC#语言实现所需功能。

在二次开发中遇到了许多问题和难点,总结如下:①如何通过API建立详图线。在Revit创建详图线分为模型空间和族空间,对应的创建方法为doc.Create.NewDetailCurve(View,curve)和doc.FamilyCreate.New DetailCurve(View,curve)。在API中绘制详图线需要在草图平面中进行,否则会提示“curvemustbe in plane”错误。②如何通过API建立绘制详图线的草图平面,其对应方法为SketchPlane.Create(doc,plane),常规注释常在平面视图、剖面视图、绘图视图、详图视图、图纸视图中运用,需要获得当前视图类型,并得到当前视图的坐标原点及向量来创建草图平面。③怎么在API中实现,在不同类型视图中通过鼠标光标点选定来确定注释对象的放置位置,这个问题可以通过sel.PickPoint()实现。④如何通过API插入已建族的族实例,其对应命令为doc.Create.NewFamilyInstance,在创建族实例之前需要遍历当前项目所有族,找到所要载入族。⑤在UI中放置族实例与当前视图ActiveView.RightDirection平行,即放置后生成注释族默认水平。但通过API载入族实例后通常与当前视图ActiveView.RightDirection不平行,需要将族实例旋转至目标位置,工程绘图常规注释中通常为水平,垂直和倾斜放置。这就需要得到放置族本身的X轴与当前视图ActiveView.RightDirection的夹角,而后运用ElementTrans formUtils.RotateElement旋转,继而将族局部坐标系转化为项目坐标,再将其转化为视图局部坐标。

4 标识开发效果

基于常规注释文字放置方向不同,依据上述方案编制了水平注释插件、垂直注释插件、倾斜注释插件。其注释效果和注释菜单见图3,插件的使用说明和提升效率见表1和表2。

图3 二次开发的注释菜单和其在项目中类别标记效果

表2 API插件创建后修改注释使用说明提升效率对比表

5 结论

本文介绍了目前UI空间中常规注释的实现方法,之后,分析了各种方法的优缺点,明确论证二次开发的必要性,介绍了依托Revit平台API的二次开发流程,详细阐述了实现不同视图类型常规注释的3种不同方案。最终选定通过API载入已带实例参数的标记族到项目中的方案,开发出了水平注释插件、垂直注释插件、倾斜注释插件,这3种插件能快速完成满足水利注释习惯和水利制图规范的常规注释。通过插件生成常规注释相比通过UI操作完成注释,效率成倍增长,注释更加智能化,大大缩短了设计周期。为Revit在水利行业其它方面的应用或其它行业领域的二次开发提供了借鉴经验。

[1]宦国胜,王海俊,沈国华.水利工程中三维信息模型技术平台的比选和应用[J].江苏水利,2015(1):41-43.

[2]邹茂娟,李海峰,姚建国.基于RevitMEP的水电站水力机械设计[J].中国农村水利水电,2012(7):176-181.

[3]廖小烽,王君峰.Revit2013/2014建筑设计火星课程[M].北京:人民邮电出版社,2013.

[4]Autodesk,Inc.Revit2012 APIDeveloper’s Guide,2011.

猜你喜欢

详图二次开发插件
浅谈基于Revit平台的二次开发
建筑钢结构详图设计与管理的思考
自编插件完善App Inventor与乐高机器人通信
浅谈Mastercam后处理器的二次开发
插件技术在计算机软件技术中的运用
三维详图设计软件Tekla Structures二次开发实例
论钢结构详图体系构成
西门子Easy Screen对倒棱机床界面二次开发
基于jQUerY的自定义插件开发
基于Revit MEP的插件制作探讨