Revit二次开发中如何实现风管创建功能?

2026-05-19 12:121阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计712个文字,预计阅读时间需要3分钟。

Revit二次开发中如何实现风管创建功能?

在Revit中,风管主要用于连接管道、风道末端和机械设备。今天,简单尝试使用RevitAPI创建风管,分享我的方法。风管可分为三类:一般风管、软风管和风管占据符;从形状上分,有圆形、方形和矩形等。

在Revit中,风管用于连接管件,风道末端和机械设备,今天简单尝试了下使用RevitAPI创建风管,现分享下我的方法。 风管从类型上可分为三类:一般风管,软风管和风管占位符;从形状上也分为三类:椭圆管,方管和圆管。

  在Revit中,风管用于连接管件,风道末端和机械设备,今天简单尝试了下使用RevitAPI创建风管,现分享下我的方法。
  风管从类型上可分为三类:一般风管,软风管和风管占位符;从形状上也分为三类:椭圆管,方管和圆管。

风管的属性和方法

  风管的父类MEPCurve有三个属性,如下图:

而风管本身也有两个属性,分别是DuctTypeIsPlaceholder ,前者是获取管道的类型,后者为判断是否是管道占位符。

Revit二次开发中如何实现风管创建功能?

小提示:使用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二次开发之创建风管方法和函数定义,希望能帮到有缘人,学无止境,大家加油。(我给出的代码是定义了一个静态方法,需要在函数入口处调用,需注意)

本文共计712个文字,预计阅读时间需要3分钟。

Revit二次开发中如何实现风管创建功能?

在Revit中,风管主要用于连接管道、风道末端和机械设备。今天,简单尝试使用RevitAPI创建风管,分享我的方法。风管可分为三类:一般风管、软风管和风管占据符;从形状上分,有圆形、方形和矩形等。

在Revit中,风管用于连接管件,风道末端和机械设备,今天简单尝试了下使用RevitAPI创建风管,现分享下我的方法。 风管从类型上可分为三类:一般风管,软风管和风管占位符;从形状上也分为三类:椭圆管,方管和圆管。

  在Revit中,风管用于连接管件,风道末端和机械设备,今天简单尝试了下使用RevitAPI创建风管,现分享下我的方法。
  风管从类型上可分为三类:一般风管,软风管和风管占位符;从形状上也分为三类:椭圆管,方管和圆管。

风管的属性和方法

  风管的父类MEPCurve有三个属性,如下图:

而风管本身也有两个属性,分别是DuctTypeIsPlaceholder ,前者是获取管道的类型,后者为判断是否是管道占位符。

Revit二次开发中如何实现风管创建功能?

小提示:使用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二次开发之创建风管方法和函数定义,希望能帮到有缘人,学无止境,大家加油。(我给出的代码是定义了一个静态方法,需要在函数入口处调用,需注意)