Revit二次开发之创建双坡式屋顶及在屋顶开洞口【比目鱼原创】
来源:互联网 发布:形势与政策论文 网络 编辑:程序博客网 时间:2024/05/01 12:52
=========【更多高级应用请关注公众号】========
===================================
创建拉升屋顶的两个方法:
① ExtrusionRoof NewExtrusionRoof (CurveArray profile, ReferencePlane refPlane, Level level, RoofType roofType, double extrusionStart, double extrusionEnd);
参数说明:
参数
含义
profile
屋顶的_面形状,注竞适非封闭曲线
rcfPlane
参照平面
level
屋顶的标商
roofType
屋顶类型
extrusionStart
拉升起点,相对于屋顶侧面的位移,负值代表反向拉升
exirusionEnd
拉升终点,相对于屋顶侧面的位移,负值代表反向拉升
创建双坡式屋顶示例代码:
void CreatRoof(Document RevitDoc) { using (Transaction transaction = new Transaction(RevitDoc)) { View view = RevitDoc.ActiveView; //先创建一个参照平面 XYZ bubbleEnd = new XYZ(0, 0, 0); XYZ freeEnd = new XYZ(0, 100, 0); XYZ thirdPnt = new XYZ(0, 0, 100); transaction.Start("Create reference plane"); ReferencePlane plane = RevitDoc.Create.NewReferencePlane2(bubbleEnd, freeEnd, thirdPnt, view); transaction.Commit(); //创建屋顶前准备参数 Level level = RevitDoc.GetElement(new ElementId(311)) as Level; RoofType roofType = RevitDoc.GetElement(new ElementId(335)) as RoofType; CurveArray curveArray = new CurveArray(); curveArray.Append(Line.CreateBound(new XYZ(0, 0, 50), new XYZ(0, 50, 100))); curveArray.Append(Line.CreateBound(new XYZ(0, 50, 100), new XYZ(0, 100, 50))); //创建屋顶 transaction.Start("Create roof"); RevitDoc.Create.NewExtrusionRoof(curveArray, plane, level, roofType, 10, 200); transaction.Commit(); } }结果:
创建带洞口屋顶示例代码:
void CreatRoofOpening(Document RevitDoc) { using (Transaction transaction = new Transaction(RevitDoc)) { //创建屋顶前准备参数 Level level = RevitDoc.GetElement(new ElementId(311)) as Level; RoofType roofType = RevitDoc.GetElement(new ElementId(335)) as RoofType; CurveArray curveArray = new CurveArray(); //屋顶外边框 curveArray.Append(Line.CreateBound(new XYZ(0, 0, 0), new XYZ(30, 0, 0))); curveArray.Append(Line.CreateBound(new XYZ(30, 0, 0), new XYZ(30, 30, 0))); curveArray.Append(Line.CreateBound(new XYZ(30, 30, 0), new XYZ(0, 30, 0))); curveArray.Append(Line.CreateBound(new XYZ(0, 30, 0), new XYZ(0, 0, 0))); //在中间添加洞口 curveArray.Append(Line.CreateBound(new XYZ(5, 5, 0), new XYZ(5, 15, 0))); curveArray.Append(Line.CreateBound(new XYZ(5, 15, 0), new XYZ(15, 5, 0))); curveArray.Append(Line.CreateBound(new XYZ(15, 5, 0), new XYZ(5, 5, 0))); //创建屋顶 transaction.Start("Create roof"); ModelCurveArray modelCurveArray = new ModelCurveArray(); FootPrintRoof roof = RevitDoc.Create.NewFootPrintRoof(curveArray, level, roofType, out modelCurveArray); //设置屋顶坡度 ModelCurve curve1 = modelCurveArray.get_Item(0); ModelCurve curve3 = modelCurveArray.get_Item(2); roof.set_DefinesSlope(curve1, true); roof.set_SlopeAngle(curve1, 0.5); roof.set_DefinesSlope(curve3, true); roof.set_SlopeAngle(curve3, 1.6); transaction.Commit(); } }
结果:
· 获取屋顶数据
拉升屋顶一个重要的方法是 GetProfile()返回 ModelCurveArray 的对象,用来获取屋顶的侧面形状,与创建拉升屋顶时传人的CurveArray的对象一 一对应。
对于迹线屋顶,可以使用最后一个out 参数footPrintToModelCurvesMapping 获取的ModelCurve来判断屋顶是否有坡度,以及坡度大小。
· 创建天花板
目前尚没有API支持创建天花板。
阅读全文
0 0
- Revit二次开发之创建双坡式屋顶及在屋顶开洞口【比目鱼原创】
- Revit API之在墙或者屋顶上开洞口【比目鱼原创】
- Revit二次开发之创建斑马线【比目鱼原创】
- Revit二次开发之创建共享参数及绑定共享参数【比目鱼原创】
- Revit二次开发之移动元素【比目鱼原创】
- Revit二次开发之Revit事务模式(TransactionMode)【比目鱼原创】
- Revit二次开发之如何选取Revit元素【比目鱼原创】
- Revit二次开发之如何在addin文件定制资源【比目鱼原创】
- Revit二次开发之关于外部命令IExternalCommand【比目鱼原创】
- Revit二次开发之Journal日志文档【比目鱼原创】
- Revit二次开发之快速过滤与慢速过滤【比目鱼原创】
- Revit二次开发之材料Material的设置【比目鱼原创】
- Revit二次开发之获取参数绑定的类别【比目鱼原创】
- 屋顶
- Revit API之如何创建梯形墙及带正反面的墙【比目鱼原创】
- Revit二次开发之“墙体开洞NewOpening”
- Revit二次开发之外部应用IExternalApplications和数据库级别的外部应用【比目鱼原创】
- Revit二次开发之使用LINQ查询元素过滤集合里的元素【比目鱼原创】
- 2017-12-09 杭电OJ2000 《ASCII码排序》
- android学习路线
- iOS开发UI篇—Quartz2D (四) 图形上下文栈,矩阵
- JAVA中的HTTP通信
- android apk文件内部结构
- Revit二次开发之创建双坡式屋顶及在屋顶开洞口【比目鱼原创】
- android studio快捷键
- 编程思想 之「操作符」
- mac下svn服务器的搭建
- Linux简单写一个定时任务
- 简单的三子棋游戏(C语言版)
- 接口
- pip install pyamf failed with exit status 1120
- tomcat启动报Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource异常