9. Revit API UI: UIView、UIDocument、框选聚焦
创始人
2024-11-10 02:36:54
0

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 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); } 

在这里插入图片描述

快捷键:ZR


总结

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

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

相关内容

热门资讯

记者爆料!约局吧怎么看有没有挂... 记者爆料!约局吧怎么看有没有挂,微乐游戏辅助脚本安卓(透视)切实是有攻略(哔哩哔哩)1、每一步都需要...
揭秘!pokemmo脚本辅助器... 揭秘!pokemmo脚本辅助器下载,微乐自建房黑科技工具怎么找(透视)一直是有脚本(哔哩哔哩)揭秘!...
值得注意的是!拱趴大菠萝开挂方... 值得注意的是!拱趴大菠萝开挂方法,微乐智能辅助真的假的(透视)一直真的有技巧(哔哩哔哩)微乐智能辅助...
免费测试版!pokerworl... 免费测试版!pokerworld破解版下载,微乐小程序破解版修改器(透视)竟然是有挂(哔哩哔哩)1、...
每日必看推荐!哈糖大菠萝开挂,... 每日必看推荐!哈糖大菠萝开挂,微信微乐自建房辅助工具(透视)竟然真的是有挂(哔哩哔哩)1、这是跨平台...
普及知识!werplan免费挂... 普及知识!werplan免费挂下载,微信微乐小程序修改器(透视)一直存在有教程(哔哩哔哩)暗藏猫腻,...
据监测!pokernow辅助工... 据监测!pokernow辅助工具,微乐游戏小程序脚本(透视)果然存在有软件(哔哩哔哩)小薇(辅助器软...
热门推荐!竞技联盟辅助,微信小... 热门推荐!竞技联盟辅助,微信小程序微乐内蒙破解器(透视)总是是有器(哔哩哔哩)1)微信小程序微乐内蒙...
今日百科!哈糖大菠萝有没有挂,... 今日百科!哈糖大菠萝有没有挂,微乐自建房脚本入口(透视)其实是真的有神器(哔哩哔哩)一、微乐自建房脚...
避坑细节!xpoker辅助工具... 避坑细节!xpoker辅助工具,微信小程序微乐辅助器app(透视)本来有有攻略(哔哩哔哩)1、避坑细...