前言
本文介绍 Revit 视图相关的基本接口。
内容
View 继承结构
所有的视图都是继承自 Autodesk.Revit.DB.View,分别对应各种视图类型。
View 的实例
以官方给的文件为例:
- 楼层平面:
ViewPlan
- 三维视图:
View3D
- 立面、剖面、详细视图:
ViewSection
- 渲染:
ImageView
- 图例:
View
- 明细表:
ViewSchedule
- 图纸:
ViewSheet
获取 View 的信息
视图的基本信息,包括:
- 视图名称,
view.Name
- 视图裁剪区域,
view.CropBox
- 视图起始点,
view.Origin
- 视图平面投影区域,
view.Outline
- 视图往右、往上、指向观察者的方向,
view.RightDirection
,view.UpDirection
,view.ViewDirection
- 视图缩放比例,
view.Scale
来自 Revit API 官方文档:
private void Getinfo_View(Autodesk.Revit.DB.View view)
{
string message = "View: ";
// 得到视图的名称
message += "\nView name: " + view.Name;
// 视图裁剪区域包围盒
BoundingBoxXYZ cropBox = view.CropBox;
XYZ max = cropBox.Max; // 最大值,包围盒右上角
XYZ min = cropBox.Min; // 最小值,包围盒左下角
message += "\nCrop Box: ";
message += "\nMaximum coordinates: (" + max.X + ", " + max.Y + ", " + max.Z + ")";
message += "\nMinimum coordinates: (" + min.X + ", " + min.Y + ", " + min.Z + ")";
// 视图的起始点(想象一下透视视图)
XYZ origin = view.Origin;
message += "\nOrigin: (" + origin.X + ", " + origin.Y + ", " + origin.Z + ")";
//视图投影到平面的范围框
BoundingBoxUV outline = view.Outline;
UV maxUv = outline.Max; // 最大值,包围盒右上角
UV minUv = outline.Min; // 最小值,包围盒左下角
message += "\nOutline: ";
message += "\nMaximum coordinates: (" + maxUv.U + ", " + maxUv.V + ")";
message += "\nMinimum coordinates: (" + minUv.U + ", " + minUv.V + ")";
// 视图往右的方向
XYZ rightDirection = view.RightDirection;
message += "\nRight direction: (" + rightDirection.X + ", " +
rightDirection.Y + ", " + rightDirection.Z + ")";
// 视图往上的方向
XYZ upDirection = view.UpDirection;
message += "\nUp direction: (" + upDirection.X + ", " +
upDirection.Y + ", " + upDirection.Z + ")";
// 视图指向观察者(即我)的方向
XYZ viewDirection = view.ViewDirection;
message += "\nView direction: (" + viewDirection.X + ", " +
viewDirection.Y + ", " + viewDirection.Z + ")";
// 视图的缩放比例
message += "\nScale: " + view.Scale;
// Scale is meaningless for Schedules
if (view.ViewType != ViewType.Schedule)
{
int testScale = 5;
//设置视图比例,需要 Transaction
view.Scale = testScale;
message += "\nScale after set: " + view.Scale;
}
TaskDialog.Show("Revit",message);
}
下面以三维视图为例。代码中加入了,X.ToString("F2")
,来使数据简练一点。
前视图数据:可知 Revit 中的坐标系,往右是 X 方向,往上是 Z 方向。因此前视图是从 Y 方向从屏幕外指向屏幕里面。
左视图:
俯视图:
左前俯视视图: