在Revit中有一個相機功能可以以相機視角產生一個視圖。一開始我在2016中找關鍵詞Camera,但是沒什麼收穫。 其實這個相機功能的真正核心是創建透視視圖:View3D.CreatePerspective(Document, ElementId) 簡單的代碼示例如下: 關於上方向: Autodes ...
在Revit中有一個相機功能可以以相機視角產生一個視圖。一開始我在2016中找關鍵詞Camera,但是沒什麼收穫。
其實這個相機功能的真正核心是創建透視視圖:View3D.CreatePerspective(Document, ElementId)
簡單的代碼示例如下:
var uiDocument = commandData.Application.ActiveUIDocument;
var doc = uiDocument.Document;
IEnumerable<ViewFamilyType> viewFamilyTypes = from elem in new FilteredElementCollector(doc).OfClass(typeof(ViewFamilyType)) let type = elem as ViewFamilyType where type.ViewFamily == ViewFamily.ThreeDimensional select type; using (Transaction tran = new Transaction(doc, "[ToolSet] Camera")) {
tran.start(); View3D view3D = View3D.CreatePerspective(doc, viewFamilyTypes.First().Id); if (null != view3D) { var eye = new XYZ(0,0,100); //相機坐標 var up = new XYZ(0,0,1); //上方向 var forward = new XYZ(3,4,5); //相機到目標點的向量 view3D.SetOrientation(new ViewOrientation3D(eye, up, forward)); view3D.DisplayStyle = DisplayStyle.ShadingWithEdges; } tran.Commit(); UIDocument RevitUiDoc = new UIDocument(doc); RevitUiDoc.ActiveView = view3D; }
關於上方向:
Autodesk的View3D博客: