本文演示如何获取和设置Revit文件中墙的属性值。
1.用Revit绘制模型
2.内部属性的枚举
本文涉及到的枚举类型如下:
public enum BuiltInParameter
{
WALL_TOP_OFFSET, //顶部偏移
WALL_BASE_OFFSET, //底部偏移
WALL_BASE_CONSTRAINT, //底部约束
WALL_HEIGHT_TYPE, //顶部约束
HOST_VOLUME_COMPUTED, //体积
HOST_AREA_COMPUTED //面积
......
}
代码实例
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System.Windows.Forms;
namespace RevitAddin3
{
[TransactionAttribute(TransactionMode.Manual)]
public class RevitAddin : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Document doc = uiDoc.Document;
FilteredElementCollector collector = new FilteredElementCollector(doc);
var walls = collector.OfClass(typeof(Wall));
string info = "";
Transaction trans = new Transaction(doc);
trans.Start("Move");
foreach (var item in walls)
{
//设置顶部偏移
item.get_Parameter(BuiltInParameter.WALL_TOP_OFFSET).SetValueString("4000");
//设置底部偏移
item.get_Parameter(BuiltInParameter.WALL_BASE_OFFSET).SetValueString("2000");
//获取底部约束
var baseConstraint = item.get_Parameter(BuiltInParameter.WALL_BASE_CONSTRAINT).AsValueString();
info += "底部约束: " + baseConstraint + "\n";
//获取顶部约束
var heightType = item.get_Parameter(BuiltInParameter.WALL_HEIGHT_TYPE).AsValueString();
info += "顶部约束: " + heightType + "\n";
//获取体积
var volume = item.get_Parameter(BuiltInParameter.HOST_VOLUME_COMPUTED).AsValueString();
info += "体积: " + volume + "\n";
//获取面积
var area = item.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED).AsValueString();
info += "面积: " + area + "\n";
}
trans.Commit();
MessageBox.Show(info, "信息");
return Result.Succeeded;
}
}
}
执行结果: