Revit 二次开发 HOF 方式调用transaction
再看《C#函数式编程》一书的时候看到HOF的概念,感觉在日常开发的过程中可以使用此方式整理一个拓展方法,实现程序的快速调用。
- Transaction函数继承自
IDisposable
- 我们平时开发需要使用using内部对Revit进行操作。实现自动拆卸
- 我们需要创建一个泛型函数
MTransaction
并约束在IDisposable
接口 - 在上述函数内部实现using关键词减少其他函数内部的反复调用,减少代码量降低耦合性
- 创建函数
TransactionHelper
对此放大引用封装,通过第三方调用中间函数即可完成调用
函数结构
public static class MTransaction
{public static void Using<TDisp>(TDisp disposable, Action<TDisp> f) where TDisp : IDisposable{using (disposable){f(disposable);}}
}public static class TransactionHelper
{public static void Execute(Document doc, Action<IDisposable> f)=> MTransaction.Using(new Transaction(doc, "create"), trans =>{trans.Start();f(trans);trans.Commit();});
}
调用此方法
TransactionHelper.Execute(doc, c =>{var line = Line.CreateBound(new XYZ(0, 0, 0), new XYZ(2000 / 304.8, 2000 / 304.8, 0));Wall w = Wall.Create(doc, line, new ElementId(311), false);});
Revit 二次开发 HOF 方式调用transaction相关推荐
- Revit二次开发有几种方式?做Revit二次开发的必看!
Revit二次开发有三种方式:外部命令(IExternalCommand).外部应用(IExternalApplication)和宏(Macro).下面将简要说明外部应用.宏的开发过程,并着重说明外部 ...
- C# Revit二次开发基础/核心编程--- Application\Document\Transaction
一.本节课程 C# Revit二次开发基础/核心编程--- Application\Document\Transaction 二.本节要讲解的知识点 Application\Document\Tran ...
- Revit二次开发神技---代码实现Revit所有连接方式
Revit二次开发神技-代码实现Revit所有连接方式 读完此贴,你将能够实现Revit中已存在的不管是梁.柱.还是支撑的所有连接方式. 发帖十分钟,研究数小时,发帖不易,且读且珍惜. 代码: /// ...
- Revit二次开发(Revit2019+VS2017)-【NO.01】开发流程简述
Revit二次开发流程简述 一.软件的安装及配置 软件的下载与安装 软件的配置 配置AddInManager 配置RevitLookUp 检验是否配置成功 二.创建项目新建Visusl Studio项 ...
- Revit二次开发5、外部事件(ExternalEvent)
Revit二次开发5.外部事件(ExternalEvent) 外部事件ExternalEvent简介 事件 外部事件 实现步骤 外部事件的实现 实现IExternalEventHandler接口 Ex ...
- Revit二次开发_1.过滤器笔记篇
Revit二次开发_1.过滤器笔记篇 前言 对象分类 过滤方法 前言 最近在用过滤器功能,先按照教程做了筛选墙,再自己做了筛选常规模型的功能,发现有点不一样,问题在于筛选这些Elements的时候没弄 ...
- Revit二次开发——引用dynamo中的几何库
前沿 dynamo的几何库其实是非常强大的,如果自己靠着RevitAPI去写还是非常费劲的.所以想引用dynamo的几何库来做一些工作.主要参考的就是这篇文章.Revit二次开发--不开启Dynamo ...
- revit二次开发之多线程的正确使用
欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207 一.背景 小伙伴们为了加快revit程序运行速度, 可能会考虑使用多线程,但是我们必须首先搞清楚一个问题 ...
- Revit二次开发 获取模型截面线、截面轮廓
描述 获取Revit模型的截面线.横切面线.截面轮廓. 用途 用于获取模型的截面线.横切面线.截面轮廓. 实现方式 创建视图平面: 从视图平面获取轮廓线: 获取平面标高处的截面线. 效果 示例 /// ...
最新文章
- Python3 try-except、raise和assert解析
- 使用javascript模拟常见数据结构(二)
- 第十五届全国大学生智能汽车竞赛华北赛区和西部赛区比赛成绩
- 【Deep Learning笔记】用Inception-V3模型进行图像分类
- 瞿菡云计算机,“国家资助 伴我成长”——我校学生王丽娜、肖云菡荣获中职教育“国家奖学金”事迹材料...
- [ofbiz]设置任务计划(job),提示service_item已经传递
- LeetCode之Max Points on a Line Total
- mysql 恢复同步_常见MySQL同步错误恢复方法
- 可供创业团队技术开发参考的10条经验
- geekbench 3 android,Geekbench列表声称Xperia 3将包含12GB RAM并运行Android 10
- XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Saratov
- Springcloud euraka服务
- C语言如何统计程序运行时间
- 邮箱163登录入口,邮箱163如何注册?
- 第十章 项目沟通管理和干系人管理
- MySQL(零基础)详解之DQL
- xp系统关闭闲置服务器,教你win10系统空闲进程占用cpu怎么关闭
- 基于STC89C51单片机,CH340芯片的下载电路
- pythonturtle写字_python用turtle写字
- Drools从入门到精通