前言

SDK 里面一个复杂的创建楼梯的例子。

程序逻辑

  1. 选择模型线,如果是两条,这是L行的楼梯,如果选中三条,则是U行的楼梯;
  2. 将 UI 界面的参数转化为内部的参数
  3. 创建扇形踏步楼梯

选择模型线

入口:Revit.SDK.Samples.WinderStairs.CS.Command.Execute
运行命令前,请先选择模型线。

参数生成

对话框中的参数会根据选择的模型线而有所不同。

代码:Revit 2020.1 SDK\Samples\WinderStairs\CS\Command.cs
以 L 行楼梯为例,参数的初始化:

// Generate the winder creation parameters from selected elements.
IList<XYZ> controlPoints = WinderUtil.CalculateControlPoints(rvtDoc, selectedIds);
double runWidth = 0, treadDepth = 0;
GetStairsData(rvtDoc, out runWidth, out treadDepth);
IList<uint> maxCount = WinderUtil.CalculateMaxStepsCount(controlPoints, runWidth, treadDepth);
uint numStepsInCorner = 3;

组合成 LWinderOptions

options.NumStepsAtStart = maxCount[0];
options.NumStepsAtEnd = maxCount[1];
options.NumStepsInCorner = numStepsInCorner;
options.RunWidth = runWidth;
options.CenterOffsetE = centerOffset;
options.CenterOffsetF = centerOffset;

创建楼梯

LWinder 是一个数据结构,提供数据供 Revit API 使用,真正工作的是在 WinderUpdater 中进行:

LWinder lwinder = new LWinder();
lwinder.NumStepsAtStart = options.NumStepsAtStart;
lwinder.NumStepsInCorner = options.NumStepsInCorner;
lwinder.NumStepsAtEnd = options.NumStepsAtEnd;
lwinder.RunWidth = options.RunWidth;
lwinder.TreadDepth = treadDepth;
lwinder.CenterOffsetE = options.CenterOffsetE;
lwinder.CenterOffsetF = options.CenterOffsetF;
AddInId activeid = options.DMU ? commandData.Application.ActiveAddInId : null;
WinderUpdater lwinderDMU = new WinderUpdater(lwinder, selectedIds, rvtDoc, activeid, options.Sketch);

WinderUpdater 继承了两个接口, IUpdaterIExternalEventHandler
IUpdater 用于动态更新。
最终,还是要调用这个 API:

StairsRun run = StairsRun.CreateSketchedRun(rvtDoc, stairsId, actualElevation, boundarys, RiserLines, CenterWalkpath);

总结

IUpdater 动态更新可以用在很多地方,如果能和其它逻辑联动,威力无穷。创建草图楼梯,需要自己先计算好。 很多种情况下,都创建不出来,而且没有解释为什么会创建不出来。而 API 又是黑盒,一旦出错,很难找到解决方案。

Revit SDK 介绍:API Sketched Winder Stairs 创建扇形踏步楼梯相关推荐

  1. Revit SDK 介绍:PostCommandWorkflow

    前言 这个例子介绍的是如何改变 Revit 的保存命令的行为. 内容 程序的步骤: 启动监测 修改文件,点击保存 选择 Add revision now 程序逻辑 菜单的创建与菜单文字的切换 在IEx ...

  2. revit sdk java api,REVIT 2016二次开发环境的搭建

    1.安装REVIT2016软件,这个直接在autodesk上就可以找到,找到直接安装就好了 2.安装VS环境. 3.安装REVIT 2016 SDK 下载地址在http://usa.autodesk. ...

  3. Revit SDK 介绍:ModelessForm_ExternalEvent ModelessForm_IdlingEvent

    前言 ModelessForm_ExternalEvent,这个例子主要介绍的是 Revit External Event,用来生成非模态对话框.可以理解为,在不打断 Revit 正常操作的情况下,响 ...

  4. iOS SDK 介绍及导入

    iOS SDK 介绍 环信 SDK 为用户开发 IM 相关的应用提供的一套完善的开发框架.包括以下几个部分: SDK_Core: 为核心的消息同步协议实现,完成与服务器之间的信息交换. SDK: 是基 ...

  5. SDK 和 API 的区别

    SDK SDK一般指软件开发工具包 软件开发工具包一般都是一些软件工程师为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件时的开发工具的集合. 软件开发工具广义上指辅助开发某一类软件的相关文档 ...

  6. k8s 组件介绍-API Server

    API Server简介 k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心. kub ...

  7. Revit SDK EXTENSIONS(软件开发工具包扩展)是什么

    Revit SDK EXTENSIONS(软件开发工具包扩展)是什么 Extension SDK 是开发环境,以快速开发为目的,帮助开发者以Revit扩展技术为基础创建活动插件. Extension ...

  8. API,SDK和API之间的关系和区别

    随着软件规模的日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要,程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分,良好的接口设计可以降低系统各部分的相互依赖, ...

  9. 什么是API,SDK和API之间有什么关系呢?

    随着软件规模的日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要,程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分,良好的接口设计可以降低系统各部分的相互依赖, ...

最新文章

  1. Python3:ImportError: No module named 'compiler.ast'
  2. 使用Python、OpenCVImageMagick工具箱制作GIF动画
  3. 干活干累了,刷一道题,一天保底两道,一年也就差不多刷完了 ----------7. Reverse Integer...
  4. “放到桌面”的Servlet实现
  5. phpfind mysql怎么用_MySQL 的 find_in_set 函数使用方法
  6. Linux操作系统yum常用命令
  7. python与Spark结合,PySpark的机器学习环境搭建和模型开发
  8. FreeRTOS介绍与移植
  9. Hololens UnityChatSDK配置教程 Unity跨平台音视频通讯SDK汇总
  10. cocos creator 数组_5Cocos Creator 脚本简介
  11. Codeproject收藏
  12. 付费应用程序协议下载 苹果_苹果商店 付费app协议填写 apple苹果IOS内购申请教程协议、税务和银行业务配置...
  13. 毛伟:重塑网络根基——国际形势使然,技术升级必然
  14. Win7 不支持此接口问题
  15. python实现关键词搜索
  16. Win-mac版 AE 2018安装附教程
  17. 如何完美解决catia出现-运行异常,单击“确定终止”-问题
  18. Python/Numpy 合并复数的实部和虚部
  19. 爬取东方财富股票信息网
  20. 算法 C语言 压缩字符串

热门文章

  1. 本地Ping不通华为云服务问题解决
  2. C语言:求一个四位数的个位、十位、百位、千位分别为多少
  3. 计算机应用课程思政的应用,计算机类课程思政改革——以“Office高级应用”课程为例...
  4. 《Hands-On Machine Learning with Scikit-Learn TensorFlow》读书笔记(三):分类
  5. 工作手册 会计核算制度 目录 1. 会计核算管理制度 1 2. 会计档案管理办法 4 1.会计核算管理制度 8. 1.采取借贷记账法记账,采用权责发生制,即凡是收益已经实现,用已经发生,不论款
  6. 麦克劳林公式怎么记忆_如何巧记麦克劳林级数?
  7. Markdown——图片、文字显示居中的一种方法
  8. 程序员写好简历的五大技巧
  9. 每次运行项目都会出现这个reload script assemblies
  10. Android - 手机下载的缓存视频在文件管理怎么找不到?