Level学习-revit二次开发

  • 1 筛选出项目中的所有的标高

 namespace MYsecondDemolevel
{
    [Transaction(TransactionMode.Manual)]
    public class Command : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            Document revitDoc = commandData.Application.ActiveUID

ocument.Document;  //取得文档
            UIApplication uiApp = commandData.Application;
            Autodesk.Revit.ApplicationServices.Application revitApp = commandData.Application.Application;  //取得应用程序
            FilteredElementCollector elementss = new FilteredElementCollector(revitDoc);
            ElementCategoryFilter elementCategoryFilter = new ElementCategoryFilter(BuiltInCategory.OST_Levels);
            elementss.WherePasses(elementCategoryFilter).WhereElementIsNotElementType();

            MessageBox.Show(elementss.Count().ToString());

            return Result.Succeeded;
        }
    }
}

 另外     上面将 ElementCategoryFilter elementCategoryFilter = new ElementCategoryFilter(BuiltInCategory.OST_Levels);修改为 ElementCategoryFilter elementCategoryFilter = new ElementCategoryFilter(BuiltInCategory.OST_Walls); 可以筛选出所有的墙

2 修改标高的高度

 foreach (var para in elementss)
            {
                {
                    Level levell = para as Level;
                   
                    if (levell.Name == "标高 4")
                    {
                        Transaction transaction = new Transaction(revitDoc);
                        transaction.Start("1");

                        levell.Elevation = 20;
                        transaction.Commit();

                    }
                  
                }
                
            }
     

3 删除标高 

  Level level2 = Level.Create(revitDoc, 10);
            level2.Name = "创建的标高";
            //transaction.Commit();
            //Transaction transaction3 = new Transaction(revitDoc);
            //transaction3.Start("删除标高");
            foreach (Level para in elementss)
            {

                if (para.Elevation == level2.Elevation)
                {
                    revitDoc.Delete(para.Id);
                }
            }

            transaction.Commit();
            MessageBox.Show("ok");

            return Result.Succeeded;

 

    

你可能感兴趣的:(revit二次开发)