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

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()方法

自己計算范圍的框選聚焦實現。

// 效果等同于 ZoomSheetSize()
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.pswp.cn/diannao/36826.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36826.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36826.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jenkins 下使用 Node 和 Npm(借助 nvm-wrapper 插件)構建前端程序

一、前言 搭建完Jenkins后&#xff0c;如何使用node進行構建前端呢&#xff0c;多個項目會使用的node的多個版本。如何動態指定node的版本進行構建呢。 方案一&#xff1a; 安裝多個node版本&#xff0c;然后進行指定。這樣比較麻煩。 方案二&#xff1a; 使用Jenkins的nv…

Spring相關面試題(三)

29 如何在所有的BeanDefinition注冊完成后&#xff0c;進行擴展 Bean工廠的后置處理器&#xff0c;在所有的Bean注冊完成后&#xff0c;就被執行。 public class A implements BeanFactoryPostProcessor {private String name "a class";private B b; ?public St…

ARM芯片架構(RTOS)

前言&#xff1a;筆記韋東山老師的rtos教程&#xff0c;連接放在最后 #ARM介紹 arm芯片屬于精簡指令集risc&#xff0c;所用的指令比較簡單&#xff0c;ARM架構是一種精簡指令集&#xff08;RISC&#xff09;架構&#xff0c;廣泛應用于移動設備、嵌入式系統、物聯網等領域。AR…

Linux:簡單說說分號“;”、單豎線“|”、雙豎線“||”、單“”、雙“”作為多個命令分隔符的用法

以下符號都可以用來連接多個命令&#xff0c;在一行中作為多個命令的分隔符。區別如下&#xff1a; 1、分號“;” 按照先后順序執行命令。每個命令都會在前一個命令執行完畢后立即執行。 如果其中一個命令出現錯誤&#xff0c;后續命令仍然會繼續執行。 2、單豎線“|” 作為管…

2. jenkins發布java項目

jenkins發布java項目 一、環境描述二、部署tomcat業務服務器三、部署git服務器&#xff0c;上傳測試代碼1、部署git服務器2、上傳測試代碼 四、jenkins對接組件1、安裝必要的插件2、對接git客戶端3、對接maven工具4、配置maven需要的jdk5、配置gitlab服務器的連接6、在jenkins上…

1161. 最大層內元素和

1161. 最大層內元素和 題目鏈接&#xff1a;1161. 最大層內元素和 代碼如下&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr)…

AI智能體文章索引

1&#xff0c;探索AI世界系列&#xff1a;俗說AI智能體 2&#xff0c;是真的嗎&#xff0c;不會代碼也能開發一款AI應用&#xff1f;GPTs讓人夢想成真 3&#xff0c;來了&#xff0c;你的第一個AI智能體 4&#xff0c;制作一個智能體&#xff1a;抖音熱點話題文案制作助手 5&am…

【Django】網上蛋糕項目商城-首頁

概念 本文在上一文章搭建完數據庫&#xff0c;以及創建好項目之后&#xff0c;以及前端靜態文件后&#xff0c;對項目的首頁功能開發。 后端代碼編寫 這里我們使用pymysql模塊對數據庫進行操作&#xff0c;獲取數據。因此需要在dos窗口使用以下指令下載該庫文件 pip instal…

springboot3搭建WebSocket服務

springboot3搭建WebSocket服務 文章目錄 springboot3搭建WebSocket服務前言一、創建SpringBoot工程二、pom.xml中引入依賴1.引入庫2. application.yml配置 三、主啟動類四、WebSocket配置類五、編寫WebSocket服務類六、編寫測試頁面總結 前言 本文詳細介紹了如何在SpringBoot項…

新型發電系統——光伏行業推動能源轉型

一、發展背景 “十四五”期間&#xff0c;隨著“雙碳”目標提出及逐步落實&#xff0c;本就呈現出較好發展勢頭的分布式光伏發展有望大幅提速。就“十四五”光伏發展規劃&#xff0c;國家發改委能源研究所可再生能源發展中心副主任陶冶表示&#xff0c;“雙碳”目標意味著國家…

Java面試題:比較Maven和Gradle的構建生命周期和依賴管理

Maven和Gradle是兩個流行的構建工具&#xff0c;各自有不同的構建生命周期和依賴管理機制。以下是它們的比較&#xff1a; 構建生命周期 Maven Maven有一個固定的生命周期&#xff0c;由一系列階段&#xff08;phases&#xff09;組成&#xff0c;每個階段代表一個構建步驟。…

ubuntu更改ssh默認端口22

編輯 /etc/ssh/sshd_config&#xff0c;把Port前的#去掉&#xff0c;端口號改成8022&#xff0c;重啟ssh。 // 1. 修改配置 sudo vi /etc/ssh/sshd_config// 2. 重啟 ssh sudo systemctl restart ssh//【不想確認可跳過此步驟】 3. 查看 ssh 監聽端口 sudo lsof -i:22 // 無…

MySQL改密

這里寫目錄標題 更改登錄密碼&#xff1a;有權限賬號能登錄mysql中&#xff1a;有權限賬號不能登錄mysql中&#xff1a;mysql5.6版本命令mysql5.7版本命令修改密碼8.0版本改完后&#xff1a; mysql登錄不上了本機安裝了5.6后&#xff0c;又安裝了mysql8.0 更改登錄密碼&#xf…

QT QVariant 類和 C++ 的 union有什么區別

QVariant 類和 C 的 union&#xff08;共用體&#xff09;在概念、用途和實現上有所不同。以下是對它們的區別和使用的簡要概述&#xff1a; QVariantQT 如何儲存多種數據類型&#xff08;QVariant &#xff09;-CSDN博客 概念&#xff1a;QVariant 是 Qt 框架中的一個類&…

易查分小程序丨查詢開始和截止時間如何設置?

老師在發布查詢時&#xff0c;希望讓學生家長在指定的時間段才能查詢&#xff0c;應該如何實現&#xff1f; 通過查詢時段功能&#xff0c;老師可以自主設置查詢開始和截止時間&#xff0c;下面就來教給大家如何使用吧&#xff01; 設置查詢時段演示效果 &#x1f4cc;使用教程…

ASP.NETMVC-簡單例子-數據庫查詢+razor使用+項目發布

環境&#xff1a; win10&#xff0c;SQL Server 2008 R2 參考&#xff1a; asp.net mvc框架之EF的使用 - black娃 - 博客園 https://www.cnblogs.com/fjiqiang/p/11131365.html 目錄 數據庫查詢要求思路操作 razor使用項目發布要求實現 數據庫查詢 要求 從服務器的數據庫中查…

干貨分享 | 學會這7個工具方法,數字化轉型規劃不是難題

提到數字化轉型&#xff0c;首要做的便是分析企業現有的業務流程和價值流&#xff0c;發現企業利潤來源的關鍵點&#xff0c;進而有針對性的數字化轉型。要實現傳統業務向數字化業務的轉變&#xff0c;制定出高效、靈活的業務流程優化策略顯得至關重要&#xff0c;這樣才能找到…

簡化數據提取:Excel-Extractor 使用指南

前言 在當今數據驅動的世界中&#xff0c;從復雜的 Excel 文件中提取和分析數據是許多業務和研究工作的基本需求。為了簡化這一過程&#xff0c;Excel-Extractor 項目應運而生。本文將為你介紹 Excel-Extractor 的功能和如何在你的項目中使用它。 什么是 Excel-Extractor&…

【C#】制作圖集

如題目&#xff0c;用好幾個圖片拼在一個大圖里&#xff0c;博主是用于Unity游戲開發使用的&#xff0c;話不多說&#xff0c;上代碼&#xff01; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging;namespace EffectsPac…

Spring Boot中的安全性配置詳解

Spring Boot中的安全性配置詳解 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將深入探討如何在Spring Boot應用中實現全面的安全性配置&#xff0c;保…