#Revit二次开发用API创建拉伸体

版权声明:本文为博主转载文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接

一、Revit拉伸介绍

拉伸是最容易创建的形状。可以在工作平而上绘制形状的二维轮廓,然后拉伸该轮廓使其与绘制它的平面垂直。根据描述,拉伸操作需要三个输入:

①工作平面;

②工作平面上的二维轮廊(必须闭合);

③拉伸的长度。

在界面上,如要拉伸墙到弧形屋顶,操作的大体步骤如下图。

①:选择工作平面

image

②:选择一个绘制屋顶的视图

image

③:切换至北立面,确定绘制标高为“标高2”,无偏移。

image

④:用“起点-终点-半径弧”工具创建拉伸屋顶的轮廓,最后“完成编辑模式”。

image

二、使用Revit API创建拉伸体
在Revit API需要这三个输人来创建拉伸图元。创建拉伸图元的函数如下:

Autodesk.Revit.Creation.FamilyltemFactory 类:Extrusion NewExtrusion( bool isSolid,CurveArrArray profile,SketchPlanesketchPlane,double end)。
参数说明:
• isSolid:说明该拉伸是实体还是剪切体
• profile: —个平面上的二维轮廓(必须闭合)
• sketchPlane:工作平面
• end:拉伸长度

注意:
① 拉伸的方向由工作平面的法向量确定。
② API中,并不要求二维轮廊一定要在sketchPlane工作平面上(大多数情况下,二维轮廓是在工作平面上的),它们之间必须满足的是二维轮廓所在在平面和工作平面一定要平行。

代码:创建拉伸体。


    private Autodesk.Revit.ApplicationServices.Application m_revit; 
        private Document m_familyDocument;    // 已获得族文档的实例 
                                              // 创建工作平面的函数,输入为平面的原点和法向量 
        internal SketchPlane CreateSketchPlane(Autodesk.Revit.DB.XYZ normal, Autodesk.Revit.DB.XYZ origin)
        {
            // 首先创建几何平面 
            Plane geometryPlane = m_revit.Create.NewPlane(normal, origin);
            if (null == geometryPlane)
            {
                return null;
            }
            // 根绝几何平面创建工作平面 
            SketchPlane plane = SketchPlane.Create(m_familyDocument, geometryPlane);
            if (null == plane)
            {
                return null;
            }
            return plane;
        }
 
        // 创建用于拉伸的轮廓线 
        private CurveArrArray CreateExtrusionProfile()
        {
            // 轮廓线可以包括一个或者多个闭合的轮廓,所以最后返回是CurveArrArray 
            CurveArrArray curveArrArray = new CurveArrArray();
            CurveArray curveArray1 = new CurveArray();
 
            // 创建一个正方体的轮廓线,先创建点,再创建线,最后组合成轮廓。 
            Autodesk.Revit.DB.XYZ p0 = Autodesk.Revit.DB.XYZ.Zero;
            Autodesk.Revit.DB.XYZ p1 = new Autodesk.Revit.DB.XYZ(10, 0, 0);
            Autodesk.Revit.DB.XYZ p2 = new Autodesk.Revit.DB.XYZ(10, 10, 0);
            Autodesk.Revit.DB.XYZ p3 = new Autodesk.Revit.DB.XYZ(0, 10, 0);
            Line line1 = Line.CreateBound(p0, p1);
            Line line2 = Line.CreateBound(p1, p2);
            Line line3 = Line.CreateBound(p2, p3);
            Line line4 = Line.CreateBound(p3, p0);
            curveArray1.Append(line1);
            curveArray1.Append(line2);
            curveArray1.Append(line3);
            curveArray1.Append(line4);
            curveArrArray.Append(curveArray1);
            return curveArrArray;
        }
 
        private void CreateExtrusion(Autodesk.Revit.Creation.FamilyItemFactory familyCreator)
        {
            // 调用函数创建拉伸的轮廓线和工作平面 
            CurveArrArray curveArrArray = CreateExtrusionProfile();
            SketchPlane sketchPlane = CreateSketchPlane(XYZ.BasisZ, XYZ.Zero);
 
            // 调用API创建拉伸(实心正方体) 
            Extrusion rectExtrusion = familyCreator.NewExtrusion(true, curveArrArray, sketchPlane, 10);
            // 可能我们会希望把拉伸体移动到希望的位置上 
            XYZ transPoint1 = new XYZ(-16, 0, 0);
            ElementTransformUtils.MoveElement(m_familyDocument, rectExtrusion.Id, transPoint1);
        }


  1. 拉伸属性 ① IsSolid属性:该拉伸是实体还是剪切体。
    ② Sketch属性:拉伸的草图,包括拉伸的二维轮廓线和工作平面。
    ③ StartOffset和EndOffset:拉伸相对于工作平面的起始和终止偏移。

  2. 草图(Sketch 类)
    在Revit中,有一些图元是使用草图模式创建的,例如,工程文件中的楼板、天花板和族文件中的拉伸等。而草图模式是指Revit中的一种环境,使用该环境可绘制其尺寸或形状不能自动确定的图元。Sketch类就是用来访问它创建的草图,包括草图模式中绘制形状和工作平面。

Sketch类属性(只读):
① Profile:用来获取草图中的轮廊线。

② SketchPlane••用来获取草图中的工作平面。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、BIM全称为Building Information Modeling。2、“参数化”是Revit的基本特...
    宁陌尘阅读 8,628评论 0 4
  • 目前BIM在桥梁方面的应用还不够成熟,大部分的桥梁BIM设计都是简单的从二维图纸到三维的翻模工作或者用于制作动画需...
    wuhao1993阅读 9,028评论 0 4
  • 在被断舍离和极简生活毒图了之后,胶囊衣柜又来给我洗脑。 但是,我真的好喜欢这样的生活啊! 用很少的衣服,搭配出无限...
    辰girl阅读 2,578评论 0 1
  • 2014年初,在上海梅赛德斯奔驰中心的TnDao讲坛,华东师范大学教授童世骏先生提到了这句话。 为了和教授拉近关系...
    佳鼎海阅读 4,338评论 0 0