9. Revit API UI: UIView、UIDocument、框选聚焦

news2024/11/25 11:08:37

9. Revit API UI: UIView、UIDocument、框选聚焦

UI命名空间下的API,到这里差不多就押送讲完了,同Application那篇所讲的几个类与接口,都是带UI的对应了一个不带UI的,如UIApplication和Application,作用呢,也是类似的。

UI级别提供到DB级别的入口。

所以呢,内容较少,作用也有限。

一个应用可以打开多个文档,一个文档包含多个视图。

用偏软件运用的说法就是:Revit可以同时打开多个项目,每个项目都有各种视图(如三维、平面、图纸、统计表等)。

在这里插入图片描述


UIDocuemnt

UIDocumentUIApplication中获取。

UIApplication uiApp = commandData.Application;
UIDocument uiDoc = uiApp.ActiveUIDocument;

获取当前活动的项目文档。至于获取到全部项目文档,得再Application中才行,里面有属性"Documents"。

回到UI话题,来看看类成员吧。

主要属性:

属性描述
ActiveGraphicalView
ActiveView
当前活动的视图
Application:UIApplication互相存了对方的引用
Document:Document提供DB级别文档操作的入口
Selection一个选择器的实例,位于UI.Selection命名空间中

部分方法:

方法描述
GetOpenUIViews()
UpdateAllOpenViews ()
获取已打开的视图
更新已打开的视图
ShowElements(…) x4缩放显示指定元素。
效果类似于双击鼠标中键,或者选择模型后,点击右上角视角盒子。
SaveAs() x2
SaveAndClose()
保存
其它

UIDocument就这样了,至于Document,到Autodesk.Revit.DB命名空间时再讲,应该很快了。


UIView

UIView得使用UIDocument的GetOpenUIViews()方法获取,至于活动视图所对应的UIView,可以通过属性ViewId比较获得。

UIView成员:

类成员描述
ViewId:ElementID所对应的View
Close()关闭视图
GetWindowRectangle()获取View在屏幕上的像素范围
GetZoomCorners ()获取View在模型空间中当前视角的范围
Zoom(…)
ZoomAndCenterRectangle(…)
ZoomSheetSize()
ZoomToFit()
按比例缩放,传入比例
缩放到指定的范围,传入范围
???
缩放到适应大小(双击鼠标中键)

感觉UIDocument上的缩放,就是调用的UIView上的方法。

1. 获取ActiveUIView

private UIView GetActiveUIView(UIApplication uiApp)
{
    UIDocument uiDoc = uiApp.ActiveUIDocument;
    Document doc = uiDoc.Document;
    View activeView = uiDoc.ActiveView;

    IList<UIView> uiViews = uiDoc.GetOpenUIViews();
    UIView activeUIView = null;

    string viewNames = string.Empty;
    foreach (UIView uiView in uiViews)
    {
        View view = doc.GetElement(uiView.ViewId) as View;
        if (view.Id == activeView.Id)
        {
            activeUIView = uiView;
        }
        viewNames += $"{view.Name}\r\n";
    }
    viewNames += $"\r\nActive View: {activeView.Name}";

    TaskDialog.Show("OpenUIViews", viewNames);

    return activeUIView;
}

在这里插入图片描述

2. 框选聚焦

框选聚焦,可以直接采用ZoomSheetSize()方法。为什么还有写这个呢,因为开始时,我没有测试这个方法的效果,然后采用了另一个方法实现,这里还是记录一下。

采用UIView的ZoomSheetSize()方法

P.S. 上面删除线处写错了,那方法效果不明呐,没搞懂。当时测试是没有重新编译🙄,使用下面的方法实现。

自己计算范围的框选聚焦实现。

private void ZoomToRectangle(Selection selection, UIView uiView)
{
    PickedBox box = selection.PickBox(PickBoxStyle.Enclosing);

    XYZ minPoint = box.Min;
    XYZ maxPoint = box.Max;

    uiView.ZoomAndCenterRectangle(minPoint, maxPoint);
}

在这里插入图片描述


总结

这篇内容就这些了,感觉有用/有趣点的就框选聚焦了。

到这里,UI篇主要内容都讲完了吧,但还是有一些边边角角漏掉了,看看下篇就结束的掉吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1871987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

理解MySQL核心技术:外键(Foreign Key)的设计与实现

在日常开发中&#xff0c;数据库是必不可少的部分&#xff0c;而MySQL作为最流行的关系型数据库之一&#xff0c;广泛应用于各类项目中。为了确保数据的完整性和一致性&#xff0c;外键&#xff08;Foreign Key&#xff09;无疑是一个重要的概念。在本篇文章中&#xff0c;我们…

Py之dashscope:dashscope的简介、安装和使用方法、案例应用之详细攻略

Py之dashscope&#xff1a;dashscope的简介、安装和使用方法、案例应用之详细攻略 目录 dashscope的简介 1、产品的主要特点和优势包括&#xff1a; dashscope的安装和使用方法 1、安装 2、使用方法 dashscope的案例应用 1、通义千问-Max&#xff1a;通义千问2.5系列 2…

apk右键一键签名方法

使用说明 1 修改reg文件最后一行&#xff0c;修改为自己的电脑路径 2 修改bat文件apksigner_path路径为自己的SDK路径&#xff0c;将签名文件命名为platform.keystore放在该文件夹内 3 运行reg文件添加注册表后&#xff0c;要签名的apk右键选择“cux”系统签名即可 一键cux系…

第4章,在 PyCharm 中创建、打开、关闭项目的操作

在 PyCharm 中创建、打开、关闭项目的操作 在PyCharm中创建、打开和关闭项目的操作步骤。以下是每个操作的步骤说明&#xff0c;以及在PyCharm界面中可能对应的区域&#xff1a; 1、创建新项目 1&#xff09;启动PyCharm&#xff1a; 打开PyCharm IDE。 2&#xff09;创建新…

从0开始C++(十):异常处理——throw、try-catch、标准异常体系与粗略捕获

目录 概念 抛出异常&#xff08;throw&#xff09; 捕获异常&#xff08;try - catch&#xff09; 标准异常体系 自定义异常 多重捕获 粗略捕获 概念 异常是程序在执行期间产生的问题&#xff0c;C异常是指在程序运行时发生的特殊情况&#xff0c;比如下所示的范围越界等…

Spring Boot中实现定时任务最常用的方法 @Scheduled 注解和 TaskScheduler 接口【包含详情代码】

Spring Boot中实现定时任务最常用的方法 Scheduled 注解和 TaskScheduler 接口【包含详情代码】 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中………

「51媒体」政企活动媒体宣发如何做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 政企活动媒体宣发是一个系统性的过程&#xff0c;需要明确…

[数据集][目标检测]金属架螺栓螺丝有无检测数据集VOC+YOLO格式857张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;857 标注数量(xml文件个数)&#xff1a;857 标注数量(txt文件个数)&#xff1a;857 标注类别…

SAP ALV 负号提前

FUNCTION CONVERSION_EXIT_ZSIGN_OUTPUT. *"---------------------------------------------------------------------- *"*"本地接口&#xff1a; *" IMPORTING *" REFERENCE(INPUT) *" EXPORTING *" REFERENCE(OUTPUT) *"…

统信桌面操作系统上使用命令行添加软件图标到任务栏

原文链接&#xff1a;统信桌面操作系统上使用命令行添加软件图标到任务栏 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在统信桌面操作系统上使用命令行添加软件图标到任务栏的文章。通过命令行将常用软件的图标添加到任务栏&#xff0c;可以快速启动软件&#xf…

Links: Challenging Puzzle Game Template(益智游戏模板)

链接:挑战益智游戏 《Links》是一款独特且具有挑战性的益智游戏,即将发布。 每个级别都会向玩家展示不同的棋盘。目标是通过移动和旋转所有棋子来连接它们。每个棋子都有自己的特点和功能-你可以移动它们,旋转它们,或者两者兼而有之。连接所有棋子,以解决难度和挑战不断增…

吹爆这8款AI工具,好用到打耳光!

一、Snapseek-后台自动屏幕截图软件 Snapseek 是一款安卓端的后台自动屏幕截图软件&#xff0c;专为无缝后台存档你选择的应用程序而设计。一旦你指定了监控的应用程序&#xff0c;Snapseek 就会不断捕获图像&#xff0c;并利用 OCR&#xff08;光学字符识别&#xff09;技术进…

LabVIEW电涡流检测系统

开发了一种基于LabVIEW的软件与硬件结合的电涡流检测系统&#xff0c;通过同步采样技术和编码器的协同工作&#xff0c;显著提高了大型结构物的损伤检测精度和效率&#xff0c;具有良好的应用前景和实用价值。 项目背景 传统的手持式电涡流检测方法因其速度慢、灵敏度低、准确…

【教程】安装DGL/PyG图神经网络编程环境

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 关于cuda的安装&#xff0c;可以看这个&#xff1a; 【教程】保姆级安装NVIDIA CUDA、CUDNN环境全纪录解决SSH一段时间自动断开报Destination Host Un…

代码随想录第36天|动态规划

62. 不同路径 补充: 对二维数组的操作 dp[j][i] 表示到 j,i 有多少种路径递推公式: dp[j][i] dp[j - 1][i] dp[j][i - 1]初始化: dp[0][i] 和 dp[j][0] 都只有1种情况遍历顺序: 由于dp[j][i] 由 上和左的元素推导, 所以采用从左到右、从上到下的遍历顺序 class Solution {…

Redis高可用(主从复制、哨兵模式)详解

Redis高可用&#xff08;主从复制、哨兵模式&#xff09;详解 Redis是一种高性能的键值存储系统&#xff0c;能够通过多种机制来实现高可用性&#xff0c;这些机制主要包括主从复制&#xff08;Replication&#xff09;和哨兵模式&#xff08;Sentinel&#xff09;。 Redis 主…

使用 Python 注销、重启、关闭计算机

众所周知&#xff0c;Python 是一种功能强大的脚本语言。在本文中&#xff0c;将编写一个 Python 程序本控制计算机&#xff0c;实现计算机的注销、重启、关闭等操作。 Python 中的 os 模块&#xff0c;提供了一种与操作系统交互的方式&#xff0c;可以使用 os.system() 函数在…

Qt6.6编译Qt二维图形编辑器QVGE源码

QVGE是一个开源的多平台QtC编写的图形编辑器&#xff0c;可以用来画网络节点图&#xff0c;或者其他作用。 QVGE可以轻松创建和参数设定的小型到中型图形(1000节点/边缘)&#xff0c;共同的视觉特性的节点和边缘&#xff1a;形状、尺寸、颜色、标签等。定义(用户定义)属性的图表…

MQTT遗嘱信息(2)

接前一篇文章&#xff1a;MQTT遗嘱信息&#xff08;1&#xff09; 本文内容参考&#xff1a; 什么是MQTT遗嘱消息&#xff1f;如何配置和处理遗嘱消息&#xff1f;_mqtt last will-CSDN博客 MQTT 协议学习&#xff1a;Retained&#xff08;保留消息&#xff09; 与 LWT&#x…

实现矩阵乘法【矩阵乘法复杂度优化】

实现矩阵乘法【矩阵乘法复杂度优化】 题目描述&#xff1a;解题思路一&#xff1a;使用NumPy库解题思路二&#xff1a;三个for循环解题思路三&#xff1a;分块矩阵乘法, 利用多线程或多进程 题目描述&#xff1a; 实现矩阵乘法【矩阵乘法复杂度优化】 解题思路一&#xff1a;…