Revit 二次开发 交互及UIAPI
时间:2020-07-11
本文章向大家介绍Revit 二次开发 交互及UIAPI,主要包括Revit 二次开发 交互及UIAPI使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
学习地址:https://www.bilibili.com/video/BV1mf4y1S72o?p=12
本章内容
- Selection交互API
- TaskDialog对话框
- Ribbon菜单
Selection交互API
实例练习一
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Autodesk.Revit.UI; using Autodesk.Revit.DB; using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.Attributes; using System.Windows.Forms; using Autodesk.Revit.UI.Selection; namespace RevitDevTV { /// <summary> /// Selection 交互API,实例练习 /// </summary> [TransactionAttribute(TransactionMode.Manual)] [RegenerationAttribute(RegenerationOption.Manual)] public class Sele : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { UIDocument uidoc = commandData.Application.ActiveUIDocument; Document doc = uidoc.Document; Selection s1 = uidoc.Selection; XYZ point = null; try { point = s1.PickPoint("请选择一个点"); } catch (Exception ex) { return Result.Succeeded; } Transaction trans = new Transaction(doc,"t1"); trans.Start(); //创建一个柱子 FamilySymbol familySymbol = doc.GetElement(new ElementId(691519)) as FamilySymbol; if (!familySymbol.IsActive) { familySymbol.Activate(); } //创建标高 Level level = null; //创建柱子 FamilyInstance fi = doc.Create.NewFamilyInstance(point,familySymbol,level,Autodesk.Revit.DB.Structure.StructuralType.NonStructural); trans.Commit(); //===============计算体积 Selection s2 = uidoc.Selection; Reference re = s2.PickObject(ObjectType.Element,"请选择一个物体"); Element ele = doc.GetElement(re); Options opt = new Options(); GeometryElement gelem = ele.get_Geometry(opt); double v = 0.0; //存储体积 v = GetSolid(gelem).Sum(m=>m.Volume)*0.3048*0.3048; TaskDialog.Show("Hint","选中的物体体积为:"+v.ToString("f3")); IList<Element> pickedElement = s2.PickElementsByRectangle(new WallSelectionfilte(),"请框选目标物体"); double num = pickedElement.Count(); TaskDialog.Show("Hint","已选中墙数为:"+num); return Result.Succeeded; } private List<Solid> GetSolid(GeometryElement gelem) { List<Solid> solids = new List<Solid>(); foreach (GeometryObject obj in gelem) { if (obj is Solid) { solids.Add(obj as Solid); } if (obj is GeometryElement) { solids.AddRange(GetSolid(obj as GeometryElement)); } if (obj is GeometryInstance) { GeometryInstance gins = obj as GeometryInstance; GeometryElement gelm = gins.GetInstanceGeometry(); solids.AddRange(GetSolid(gelem)); } } return solids; } } public class WallSelectionfilte : ISelectionFilter { public bool AllowElement(Element elem) { return elem is Wall; } public bool AllowReference(Reference reference, XYZ position) { return true; } } }
原文地址:https://www.cnblogs.com/chenyanbin/p/13285563.html
- Ajax jsonp 跨域请求实例
- asp.net动态解析用户控件(UserControl)
- 找到多个与名为“Home”的控制器匹配的类型的解决方案
- 关于sequence问题的紧急处理(r2第26天)
- 使用动态变量进行动态数据比较(r2笔记25天)
- MVC分部视图@Html.Partial
- 基于马尔科夫链的产品评估预测
- MVC 控制器中传递dynamic(对象) 给视图
- 使用copy命令解决LONG类型的困扰(r2第24天)
- MVC 获取路由的 URL 参数值和默认值的集合。
- 用libsvm进行回归预测
- mvc路由配置.html结尾的伪静态
- 【编程基础】Java的接口和抽象类
- 循序渐进调优union相关的sql(r2笔记23天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux 之mysql——约束(constraint)详解
- NFS+NIS+Autofs 实现用户的集中化管理
- [docker]Tomcat安装及配置访问权限
- Nginx+Keepalived 保障HA高可用
- Hash一致性闭环算法 - ( 适用于Redis扩容、Nginx多级缓存 等等 )
- MySQl 事务测试
- 百万数据,SQL数据分流查询
- Linux 安装Apr - 提高Tomcat 的可伸缩性和性能
- Linux下MySQL的彻底卸载
- Excel生成导入SQL语句,快速创建批量 insert/update/delete
- MySQL 执行计划详解
- MySQL 5.7详细安装步骤
- win10必备效率预览神器-Quick look
- 史上最全-Nginx和Tengine安装部署
- Jenkins+Ansible 实现自动化运维 DevOps