Use Database.GetViewports
布局自己本身就是一个视口。
Use Database.GetViewports(true)
依次返回的是,模型空间中的视口、布局一本身、布局一中的视口、布局二本身、布局二中的视口。
Use Database.GetViewports(false)
返回的是布局中的视口。排除了模型空间中的视口和布局本身。一般这个才是我们所最需要的。
通过遍历Layout中的视口依次返回的是:布局一本身、布局一中的视口、布局二本身、布局二中的视口。
GridBoundToLimits可以区分视口是布局还是布局中的视口。True为布局中的视口。
下面是测试代码。
[CommandMethod("Test")] public void Test() { Document doc = AcadApp.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; ed.WriteMessage("use my Func:\n"); ObjectIdCollection myViewports = new ObjectIdCollection(); using (Transaction trans = db.TransactionManager.StartTransaction()) { DBDictionary layoutDict = trans.GetObject(db.LayoutDictionaryId, OpenMode.ForRead) as DBDictionary; foreach (var layoutId in layoutDict) { Layout lout = trans.GetObject(layoutId.Value, OpenMode.ForRead) as Layout; if (lout == null) { continue; } var vports = lout.GetViewports(); foreach (var item in vports) { myViewports.Add((ObjectId)item); } } ed.WriteMessage(myViewports.Count.ToString() + "\n"); foreach (ObjectId id in myViewports) { ed.WriteMessage(string.Format("{0} IsErased = '{1}'\n", id.Handle, id.IsErased)); } } ed.WriteMessage("\nUse Database.GetViewports(true):\n"); var viewports = db.GetViewports(true); ed.WriteMessage(viewports.Count.ToString() + "\n"); foreach (ObjectId id in viewports) { ed.WriteMessage(string.Format("{0} IsErased = '{1}'\n", id.Handle, id.IsErased)); } ed.WriteMessage("\nUse Database.GetViewports(false):\n"); var viewportsfalse = db.GetViewports(false); ed.WriteMessage(viewportsfalse.Count.ToString() + "\n"); foreach (ObjectId id in viewportsfalse) { ed.WriteMessage(string.Format("{0} IsErased = '{1}'\n", id.Handle, id.IsErased)); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2018-01-19 Postion and AlignmentPoint
2018-01-19 CAD中点击form上的按钮在屏幕中选择点或者其它GetXXX操作并同时Close Form的方法(getpoint close form)
2016-01-19 判断TreeNode Click是在文字上还是在Checkbox上