再看《C#函数式编程》一书的时候看到HOF的概念,感觉在日常开发的过程中可以使用此方式整理一个拓展方法,实现程序的快速调用。

  1. Transaction函数继承自IDisposable
  2. 我们平时开发需要使用using内部对Revit进行操作。实现自动拆卸
  3. 我们需要创建一个泛型函数MTransaction并约束在IDisposable接口
  4. 在上述函数内部实现using关键词减少其他函数内部的反复调用,减少代码量降低耦合性
  5. 创建函数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相关推荐

  1. Revit二次开发有几种方式?做Revit二次开发的必看!

    Revit二次开发有三种方式:外部命令(IExternalCommand).外部应用(IExternalApplication)和宏(Macro).下面将简要说明外部应用.宏的开发过程,并着重说明外部 ...

  2. C# Revit二次开发基础/核心编程--- Application\Document\Transaction

    一.本节课程 C# Revit二次开发基础/核心编程--- Application\Document\Transaction 二.本节要讲解的知识点 Application\Document\Tran ...

  3. Revit二次开发神技---代码实现Revit所有连接方式

    Revit二次开发神技-代码实现Revit所有连接方式 读完此贴,你将能够实现Revit中已存在的不管是梁.柱.还是支撑的所有连接方式. 发帖十分钟,研究数小时,发帖不易,且读且珍惜. 代码: /// ...

  4. Revit二次开发(Revit2019+VS2017)-【NO.01】开发流程简述

    Revit二次开发流程简述 一.软件的安装及配置 软件的下载与安装 软件的配置 配置AddInManager 配置RevitLookUp 检验是否配置成功 二.创建项目新建Visusl Studio项 ...

  5. Revit二次开发5、外部事件(ExternalEvent)

    Revit二次开发5.外部事件(ExternalEvent) 外部事件ExternalEvent简介 事件 外部事件 实现步骤 外部事件的实现 实现IExternalEventHandler接口 Ex ...

  6. Revit二次开发_1.过滤器笔记篇

    Revit二次开发_1.过滤器笔记篇 前言 对象分类 过滤方法 前言 最近在用过滤器功能,先按照教程做了筛选墙,再自己做了筛选常规模型的功能,发现有点不一样,问题在于筛选这些Elements的时候没弄 ...

  7. Revit二次开发——引用dynamo中的几何库

    前沿 dynamo的几何库其实是非常强大的,如果自己靠着RevitAPI去写还是非常费劲的.所以想引用dynamo的几何库来做一些工作.主要参考的就是这篇文章.Revit二次开发--不开启Dynamo ...

  8. revit二次开发之多线程的正确使用

    欢迎加入BIM行业开发交流1群 群号:711844216(满),二群群号:1016453207 一.背景 小伙伴们为了加快revit程序运行速度, 可能会考虑使用多线程,但是我们必须首先搞清楚一个问题 ...

  9. Revit二次开发 获取模型截面线、截面轮廓

    描述 获取Revit模型的截面线.横切面线.截面轮廓. 用途 用于获取模型的截面线.横切面线.截面轮廓. 实现方式 创建视图平面: 从视图平面获取轮廓线: 获取平面标高处的截面线. 效果 示例 /// ...

最新文章

  1. Python3 try-except、raise和assert解析
  2. 使用javascript模拟常见数据结构(二)
  3. 第十五届全国大学生智能汽车竞赛华北赛区和西部赛区比赛成绩
  4. 【Deep Learning笔记】用Inception-V3模型进行图像分类
  5. 瞿菡云计算机,“国家资助 伴我成长”——我校学生王丽娜、肖云菡荣获中职教育“国家奖学金”事迹材料...
  6. [ofbiz]设置任务计划(job),提示service_item已经传递
  7. LeetCode之Max Points on a Line Total
  8. mysql 恢复同步_常见MySQL同步错误恢复方法
  9. 可供创业团队技术开发参考的10条经验
  10. geekbench 3 android,Geekbench列表声称Xperia 3将包含12GB RAM并运行Android 10
  11. XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Saratov
  12. Springcloud euraka服务
  13. C语言如何统计程序运行时间
  14. 邮箱163登录入口,邮箱163如何注册?
  15. 第十章 项目沟通管理和干系人管理
  16. MySQL(零基础)详解之DQL
  17. xp系统关闭闲置服务器,教你win10系统空闲进程占用cpu怎么关闭
  18. 基于STC89C51单片机,CH340芯片的下载电路
  19. pythonturtle写字_python用turtle写字
  20. Drools从入门到精通

热门文章

  1. 智力算法题之病狗问题
  2. linux系统权限表示第一位,linux 系统权限 数字含义
  3. exp报错与exp为何导不出某些表结构原因
  4. CSS定义li前小点( · )的样式
  5. 简述a.Equals(b)和a=b的区别
  6. whoosh quick_start
  7. C4: ETF 和 ETF联接
  8. 带头大哥777:JavaScript开发的40+个经典技巧
  9. 【技术分享】Sanic+Amis:3天快速搭建一个web服务
  10. 深度学习模型部署的几种方法