REVIT二次开发中需要创建标高,并创建对应的平面视图,
创建步骤:读取层高是否存在,存在则直接返回层高,不再创建对应的视图.
不存在则创建标高,并创建对应的视图
//创建层高
public Level CreateLevel(Document doc, string Name, double dElevation)
{
//查找标高是否存在
FilteredElementCollector collector = new FilteredElementCollector(doc);
collector.OfClass(typeof(Level));
FilteredElementIterator eit = collector.GetElementIterator();
eit.Reset();
while (eit.MoveNext())
{
Level element = eit.Current as Level;
if (element.Name.Equals(Name))
{
//存在则直接跳出
return element;
}
}
//不存在该标高,继续创建
Level level = null;
dElevation /= 304.8; //建筑面层标高
using (Transaction trans = new Transaction(doc))
{
trans.Start("创建标高");
level = Level.Create(doc, dElevation);
level.Name = Name;
trans.Commit();
}
if (level != null)
{
FilteredElementCollector vTypeList = new FilteredElementCollector(doc);
IList<Element> vTypeEles = vTypeList.OfClass(typeof(ViewFamilyType)).ToElements();
foreach (Element elem in vTypeEles)
{
ViewFamilyType vFamType = elem as ViewFamilyType;
if (vFamType.ViewFamily == ViewFamily.StructuralPlan) //结构平面
{
using (Transaction trans = new Transaction(doc))
{
trans.Start("CreateStructPlan");
//创建与标高对应的结构平面视图
ViewPlan viewPlan = ViewPlan.Create(doc, vFamType.Id, level.Id);
trans.Commit();
}
}
}
}
return level;
}