关于revit二次开发中,用winform剖切房间进行房间定位的问题
2017-04-30 00:10
363 查看
1.外部事件的添加
revit中的Transaction对象无法非静态对话框中直接进行访问,所以需要定义外部事件来解决该问题
2.获取房间BoundingBoxXYZ
3.剖框显示
核心代码的展示
在外部winform进行调用
revit中的Transaction对象无法非静态对话框中直接进行访问,所以需要定义外部事件来解决该问题
2.获取房间BoundingBoxXYZ
3.剖框显示
核心代码的展示
public class CmdFromForm : IExternalEventHandler { private string roomNum; public string RoomNum { get { return roomNum; } set { roomNum = value; } } public void Execute(UIApplication app) { //获取当前视图 UIDocument uidoc = app.ActiveUIDocument; Autodesk.Revit.DB.View view = uidoc.ActiveView; if (!(view is View3D)) { TaskDialog.Show("提示", "请转到三维视图"); return; } //获取room对象 Room room1 = null; //获取revit文档 UIDocument uiDoc = app.ActiveUIDocument; Document revitDoc = uiDoc.Document; RoomFilter filter = new RoomFilter(); FilteredElementCollector collector = new FilteredElementCollector(revitDoc); //获取到房间的List IList<Element> roomElements = collector.WherePasses(filter).ToElements(); List<Autodesk.Revit.DB.Architecture.Room> rooms = new List<Autodesk.Revit.DB.Architecture.Room>(); foreach (Element room in roomElements) { //转化成Room对象 Autodesk.Revit.DB.Architecture.Room room2 = room as Autodesk.Revit.DB.Architecture.Room; if (room2.Number == roomNum) { room1 = room2; } } View3D view3D = view as View3D; Transaction tran = new Transaction(view3D.Document,"Cmd From Form"); tran.Start("box change"); //显示剖框 BoundingBoxXYZ boundingBox = view3D.GetSectionBox(); if (!boundingBox.Enabled) { boundingBox.Enabled = true; } //获取revit中的剖框 BoundingBoxXYZ newBox = room1.get_BoundingBox(view3D); view3D.SetSectionBox(newBox); tran.Commit(); } public string GetName() { throw new NotImplementedException(); } }
在外部winform进行调用
//在winform中访问调用外部事件 public class MyForm :Form{ private ExternalEvent handler; private CmdFromForm cff; public MyForm(//...这里省略参数){ InitializeComponent(); cff = new CmdFromForm(); handler = ExternalEvent.Create(cff); } public void button1_click(){ handler.Raise(); } }
相关文章推荐
- 关于TP5视图分离到根目录的解决方法 原有: 为了方便前端开发,我想把视图(view)部分分离出来专门给前端进行修改 过程:在进行视图设置分离的过程遇到了问题 参考了官方文档http://www
- 关于新手开发出来的地图偏差太大的问题,进行坐标转换
- Android开发googleMap+GPS定位中的关于Criteria一知半解问题
- 关于如何从多个项目创建 ASP.NET 应用程序以进行组开发问题
- 18.02.10,记录maven开发bos中struts2配置问题,关于如何进行WEB-INF下页面的访问?
- 关于WinForm中Pannel的定位问题 May 18th, 2010
- 关于百度api定位开发中出现的一些问题
- Android开发googleMap+GPS定位中的关于Criteria一知半解问题
- Android开发googleMap+GPS定位中的关于Criteria一知半解问题
- 关于为什么进行Revit二次开发的理解
- 在web application下对SPS的OM进行开发时遇到的一些问题
- 心得体会:关于开发效率和项目周期的问题
- 晕倒,狂晕! 关于 winform 用户控件的共有属性的序列化问题 曙光出现了!
- 心得体会:关于开发效率和项目周期的问题
- Oracle开发中,关于查询的一个问题
- 关于给winform的DataGrid中添加复选框的问题
- [求助]关于eclipse下开发串口操作插件的问题
- 关于在j2ee开发中进行数字签名的实践与思考
- 关于Windows Mobile开发的问题