Revit二次开发——场地地形
来源:互联网 发布:数字域名值钱吗 编辑:程序博客网 时间:2024/04/29 15:17
如有不明白,请qq254033230询问。
Revit的场地地形其实没有什么特别的,其实它就是一个面而已,创建这个面用下面这个方法:
Form NewFormByCap(bool isSolid, ReferenceArray profile);
如果是做成五花肉那种的,就用另一个方法:
Form NewLoftForm(bool isSolid, ReferenceArrayArray profiles);
首先用以下代码来创建一个地形面:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Autodesk.Revit.UI;using Autodesk.Revit.DB;using Autodesk.Revit.UI.Selection;using Autodesk.Revit.ApplicationServices;namespace 地形{ [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] [Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)] [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)] public class Class1 : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { Document revitDoc = commandData.Application.ActiveUIDocument.Document; //取得文档 Application revitApp = commandData.Application.Application; //取得应用程序 using (Transaction transaction = new Transaction(revitDoc)) { transaction.Start("主题"); //在下面添加主要代码内容 //因为CurveByPoints不能是封闭曲线,所以这里建两条线 ReferencePointArray refPointArray = new ReferencePointArray(); ReferencePointArray refPointArray2= new ReferencePointArray(); ReferencePoint referencePoint1 = revitDoc.FamilyCreate.NewReferencePoint(new XYZ(0,0,0)); ReferencePoint referencePoint2 = revitDoc.FamilyCreate.NewReferencePoint(new XYZ(100, 0, 0)); ReferencePoint referencePoint3 = revitDoc.FamilyCreate.NewReferencePoint(new XYZ(100, 100, 0)); ReferencePoint referencePoint4 = revitDoc.FamilyCreate.NewReferencePoint(new XYZ(0, 100, 0)); refPointArray.Append(referencePoint1); refPointArray.Append(referencePoint2); refPointArray.Append(referencePoint3); refPointArray.Append(referencePoint4); CurveByPoints curve1 = revitDoc.FamilyCreate.NewCurveByPoints(refPointArray); refPointArray2.Append(referencePoint1); refPointArray2.Append(referencePoint4); CurveByPoints curve2 = revitDoc.FamilyCreate.NewCurveByPoints(refPointArray2); ReferenceArray profile = new ReferenceArray(); profile.Append(curve1.GeometryCurve.Reference); profile.Append(curve2.GeometryCurve.Reference); Form form = revitDoc.FamilyCreate.NewFormByCap(true, profile); transaction.Commit(); } return Result.Succeeded; } }}结果如图:
创建有等高线的地形表面(核心还是用下面的这个api):
Form NewFormByCap(bool isSolid, ReferenceArray profile);
效果如图:
如果需要变成实体则用Form NewLoftForm(bool isSolid, ReferenceArrayArray profiles);
阅读全文
0 0
- Revit二次开发——场地地形
- Revit二次开发——revit怎么给桥梁加钢筋
- Revit二次开发入门——Task Dialogs
- revit二次开发——自适应构件族
- Revit二次开发——空间曲线
- revit二次开发——族——载入族
- Revit二次开发——获得与墙相交的墙
- Revit二次开发入门——创建外部命令
- Revit二次开发——使用IExternalApplication定制UI
- Revit二次开发入门——获取模型中门窗数量
- Revit二次开发入门——通过过滤器获取元素
- Revit二次开发入门——获取和修改元素参数
- Revit二次开发入门——重要的属性和方法
- revit二次开发——自适应点的局部坐标系
- Revit二次开发——怎样使用dynamo的类
- Revit二次开发——读取构件的材料外观信息
- revit二次开发——建连续刚构桥(方法1)
- Revit二次开发——读取cad中的文字信息
- CSDN如何转载
- Android 向服务器提供数据
- 1038—Recover the Smallest Number (30)
- KazaQ's Socks
- 支付宝支付的参数配置
- Revit二次开发——场地地形
- 2017多校第二场 HDU 6053 TrickGCD 容斥,素数,思维
- 移动端禁止长按图片弹出菜单和禁止文本选择
- java中String、StringBuffer、StringBuilder的区别
- Android Study 之学(kao)习(bei)官方关于64k异常处理 ^_^
- java 垃圾回收
- TCP/UDP学习笔记
- 九度oj----哈夫曼数
- CentOS6.5 yum 出现 Error: requested datatype primary not available 的一个解决方案和手动安装【英文】man手册