#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••用来获取草图中的工作平面。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

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