1. 程式人生 > >revit二次開發小技巧

revit二次開發小技巧

//獲取當前檢視的標高 ,操作時只能在平面檢視,不然會報錯,因為在三維檢視無法獲取標高。

Level level = document.ActiveView.GenLevel;

//通過某構件獲取標高(如放置門時獲取牆體標高)

Level level = document.GetElement(wall.LevelId) as Level;

//可以通過Document獲取UIdocument.

UIDocument uidoc = new UIDocument(document);

//過濾所有軸網

List<Grid> allgrids = new FilteredElementCollector(doc).OfClass(typeof(Grid)).Cast<Grid>().ToList();

//樓板與管道過濾選擇

public class FloorPipeFileter : ISelectionFilter
        {
            public bool AllowElement(Element elem)
            {
                if (elem.Category.Name == "樓板" || elem.Category.Name == "管道")
                {
                    return true;
                }
                return false;
            }

            public bool AllowReference(Reference reference, XYZ position)
            {
                return false;
            }
        }

//IList<T>轉 List<T>();

可以先利用IList<T> iList=new List<T>();然後用iList去承接承接生成的集合。

//try catch用法

public class Document_Selection : IExternalCommand
{
    public Autodesk.Revit.UI.Result Execute(ExternalCommandData commandData,
        ref string message, ElementSet elements)
    {
        try
        {
            
        }
        catch (Exception e)
        {
            //message = e.Message;
            //MessageBox.Show(ex.Message);
            return Autodesk.Revit.UI.Result.Failed;
        }

        return Autodesk.Revit.UI.Result.Succeeded;
    }    
}

//獲取一個面的法向向量

XYZ normal = planarFace.ComputeNormal(new UV(planarFace.Origin.X, planarFace.Origin.Y));

Curve.CreateOffset Method

依據一個曲線偏移後生成另一個曲線。

用其他 方法得到Curve1後,偏移後的

Curve2=Curve1.CreateOffset (double型別偏移距離,XYZ normal);

XYZ normal可以用下面的表示:

new XYZ(0,0,1)表示右或外方偏移,new XYZ(0,0,-1) 表示向左或內偏移,如下圖所示:

未完,待完善。。。