-
Revit二次开发之创建风管`
在Revit中,风管用于连接管件,风道末端和机械设备,今天简单尝试了下使用RevitAPI创建风管,现分享下我的方法。
风管从类型上可分为三类:一般风管,软风管和风管占位符;从形状上也分为三类:椭圆管,方管和圆管。
风管的属性和方法
风管的父类MEPCurve
有三个属性,如下图:
而风管本身也有两个属性,分别是DuctType
和IsPlaceholder
,前者是获取管道的类型,后者为判断是否是管道占位符。
小提示:使用
Duct.Location
属性,将它转型成LoactionCurve
,再通过LoactionCurve.Curve
属性即可获得管道对应的位置曲线。
创建一般风管
创建风管的函数
需要调用RevitAPI函数Duct.Create(Document document,ElementId systemTypeId,ElementId ductTypeId,ElementId levelId,XYZ firstPoint,XYZ secondPoint)
,该参数含义如下图所示:
创建一般的矩形风管
public static Duct CteDct(Document doc)
{
ElementId systemTypeId, ductTypeId, levelId;
systemTypeId = ductTypeId = levelId = ElementId.InvalidElementId;
//获取标高ID
var levelFilter = new ElementClassFilter(typeof(Level));
FilteredElementCollector levels = new FilteredElementCollector(doc);
levels = levels.WherePasses(levelFilter);
foreach (Level level in levels)
{
if (level.Name == "标高 1")
{
levelId = level.Id;
break;
}
}
if (levelId == ElementId.InvalidElementId)
{ throw new Exception("无法标高"); }
//获取类型为SupplyAir的系统类型
var systemTypeFilter = new ElementClassFilter(typeof(MEPSystemType));
FilteredElementCollector systemTypes = new FilteredElementCollector(doc);
systemTypes = systemTypes.WherePasses(systemTypeFilter);
List<MEPSystemType> systypes = new List<MEPSystemType>();
foreach (MEPSystemType element in systemTypes)
{
if (element.SystemClassification == MEPSystemClassification.SupplyAir)
{
systemTypeId = element.Id;
break;
}
}
if (systemTypeId == ElementId.InvalidElementId) { throw new Exception("无法找到系统类型"); }
//获取风管类型
var ductTypeFilter = new ElementClassFilter(typeof(DuctType));
FilteredElementCollector ductTypes = new FilteredElementCollector(doc);
var result = ductTypes.WherePasses(ductTypeFilter).ToList();
foreach (DuctType element in result)
{
ductTypeId = element.Id;
break;
}
//创建风管
using (Transaction trans = new Transaction(doc,"创建风管"))
{
trans.Start();
Duct duct = Duct.Create(doc, systemTypeId, ductTypeId, levelId, new XYZ(0, 10, 0), new XYZ(10, 0, 0));
trans.Commit();
return duct;
}
}
以上就是大体的Revit二次开发之创建风管方法和函数定义,希望能帮到有缘人,学无止境,大家加油。(我给出的代码是定义了一个静态方法,需要在函数入口处调用,需注意)
__EOF__

栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数