在Revit中有一个相机功能可以以相机视角产生一个视图。一开始我在Revit2016的API文档中找关键词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博客:

https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2017/ENU/Revit-API/files/GUID-A7FA8DBC-830E-482D-9B66-147399524442-htm.html?_ga=2.66804973.2137010315.1527470650-214555019.1525755704

【Revit API】创建相机视角的更多相关文章

  1. Revit API创建标注NewTag

    start ;             )                 {                     eId = item;                 }            ...

  2. Revit api 创建族并加载到当前项目

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. Revit API创建墙的保温层修改墙厚度

    start [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)]  / ;         ; ...

  4. Revit API创建标高,单位转换

    一业内朋友让我写个快速创建标高的插件. ;             ; i <= iNum; i++)             {                 Level level = d ...

  5. Revit API创建一个拷贝房间内对象布局命令

    本课程演示创建一个拷贝房间内对象布局命令,完整演示步骤和代码.这个命令把选中房间内的对象复制到其它选中的一个或多个房间中,而且保持与源房间一致的相对位置.通过本讲座使听众知道创建一个二次开发程序很简单 ...

  6. Revit API创建几何实体Solid并找到与之相交的元素

    几何实体的创建方法之一:构成封闭底面,指定拉伸方向与拉伸高度.GeometryCreationUtilities ;         , pt.Y - dBoxLength / , pt.Z);    ...

  7. Revit API 创建带箭头的标注

      [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class cmd : ...

  8. Revit api 创建楼梯图元

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. Revit API创建详图视图

    start //创建详图视图 Transaction ts = new Transaction(doc, "http://greatverve.cnblogs.com"); ts. ...

随机推荐

  1. React等开发工具记录

    React Native :React 起源于 Facebook 的内部项目,结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生 ...

  2. 【本地服务器】windows下nginx安装操作教程

    1.下载nginx 下载地址:    (可选择下载 Stable version 版本) 2.把安装放到C盘或其他盘的根目录,并解压文件压缩包,可以重命名解压的文件夹,方便找到路径 (注意不要直接双击 ...

  3. 20155203 杜可欣《网络对抗技术》Exp1 PC平台逆向破解

    1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,ge ...

  4. 20155311高梓云《网络对抗》逆向及Bof基础

    20155311高梓云<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...

  5. 汇编 sub减法指令 比较指令CMP JZ条件跳转指令

    二.SUB指令 减法指令SUB (SUBtract) 格式: SUB A,B //A=A-B; 功能: 两个操作数的相减,即从A中减去B,其结果放在A中. 二.CMP 和JZ 指令 比较指令CMP 格 ...

  6. 使用fddb的测试工具测试自己的检测器

    本文是在linux下测试的,首先编译,并安装gnuplot 按照程序给定,将文件放置到对应的文件夹下 #runEvaluate.pl # where gnuplot ismy $GNUPLOT = & ...

  7. libgdx学习记录7——Ui

    libgdx中的UI设计主要通过其对应的Style类进行实现,也可以通过skin实现.如果没有编辑好的skin文件,可以创建一个默认的skin,再添加已经设计好的style类即可,然后在需要使用的地方 ...

  8. java实现基于关键字的文件夹(文件)的搜索、文件夹(文件)的复制、删除

    最近在做一个项目,需要实现这几项功能,上网查了很多资料,自己研究了好几天终于实现了,现在与大家分享一下. 一.JAVA实现文件夹的搜索   在百度搜索N个技术文章,从哪些大牛们共享的资料中终于写出了我 ...

  9. Unity Inspector添加自定义按钮(Button)

    在Unity开发游戏的时候,为了有一个更快更方便的工作流,我们往往会在Editor下开发一些方便实用的工具.在工具中,用到最多,最关键的就是按钮,它是工具的首席执行官.下面就用最简单的代码来演示添加一 ...

  10. mysql学习(2)-Navicat Premium 12 链接MySQL8.0.11数据库报2059错误

    Navicat Premium 12 链接MySQL8.0.11数据库报2059错误 1,问题现象 安装完MySQL8.0.11和Navicat Premium12后,我们会用Navicat去测试连接 ...