Revit SDK 介绍:API Sketched Winder Stairs 创建扇形踏步楼梯
前言
SDK 里面一个复杂的创建楼梯的例子。
程序逻辑
- 选择模型线,如果是两条,这是L行的楼梯,如果选中三条,则是U行的楼梯;
- 将 UI 界面的参数转化为内部的参数
- 创建扇形踏步楼梯
选择模型线
入口: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
继承了两个接口, IUpdater
和 IExternalEventHandler
IUpdater
用于动态更新。
最终,还是要调用这个 API:
StairsRun run = StairsRun.CreateSketchedRun(rvtDoc, stairsId, actualElevation, boundarys, RiserLines, CenterWalkpath);
总结
IUpdater
动态更新可以用在很多地方,如果能和其它逻辑联动,威力无穷。创建草图楼梯,需要自己先计算好。 很多种情况下,都创建不出来,而且没有解释为什么会创建不出来。而 API 又是黑盒,一旦出错,很难找到解决方案。
Revit SDK 介绍:API Sketched Winder Stairs 创建扇形踏步楼梯相关推荐
- Revit SDK 介绍:PostCommandWorkflow
前言 这个例子介绍的是如何改变 Revit 的保存命令的行为. 内容 程序的步骤: 启动监测 修改文件,点击保存 选择 Add revision now 程序逻辑 菜单的创建与菜单文字的切换 在IEx ...
- revit sdk java api,REVIT 2016二次开发环境的搭建
1.安装REVIT2016软件,这个直接在autodesk上就可以找到,找到直接安装就好了 2.安装VS环境. 3.安装REVIT 2016 SDK 下载地址在http://usa.autodesk. ...
- Revit SDK 介绍:ModelessForm_ExternalEvent ModelessForm_IdlingEvent
前言 ModelessForm_ExternalEvent,这个例子主要介绍的是 Revit External Event,用来生成非模态对话框.可以理解为,在不打断 Revit 正常操作的情况下,响 ...
- iOS SDK 介绍及导入
iOS SDK 介绍 环信 SDK 为用户开发 IM 相关的应用提供的一套完善的开发框架.包括以下几个部分: SDK_Core: 为核心的消息同步协议实现,完成与服务器之间的信息交换. SDK: 是基 ...
- SDK 和 API 的区别
SDK SDK一般指软件开发工具包 软件开发工具包一般都是一些软件工程师为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件时的开发工具的集合. 软件开发工具广义上指辅助开发某一类软件的相关文档 ...
- k8s 组件介绍-API Server
API Server简介 k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心. kub ...
- Revit SDK EXTENSIONS(软件开发工具包扩展)是什么
Revit SDK EXTENSIONS(软件开发工具包扩展)是什么 Extension SDK 是开发环境,以快速开发为目的,帮助开发者以Revit扩展技术为基础创建活动插件. Extension ...
- API,SDK和API之间的关系和区别
随着软件规模的日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要,程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分,良好的接口设计可以降低系统各部分的相互依赖, ...
- 什么是API,SDK和API之间有什么关系呢?
随着软件规模的日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要,程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分,良好的接口设计可以降低系统各部分的相互依赖, ...
最新文章
- Python3:ImportError: No module named 'compiler.ast'
- 使用Python、OpenCVImageMagick工具箱制作GIF动画
- 干活干累了,刷一道题,一天保底两道,一年也就差不多刷完了 ----------7. Reverse Integer...
- “放到桌面”的Servlet实现
- phpfind mysql怎么用_MySQL 的 find_in_set 函数使用方法
- Linux操作系统yum常用命令
- python与Spark结合,PySpark的机器学习环境搭建和模型开发
- FreeRTOS介绍与移植
- Hololens UnityChatSDK配置教程 Unity跨平台音视频通讯SDK汇总
- cocos creator 数组_5Cocos Creator 脚本简介
- Codeproject收藏
- 付费应用程序协议下载 苹果_苹果商店 付费app协议填写 apple苹果IOS内购申请教程协议、税务和银行业务配置...
- 毛伟:重塑网络根基——国际形势使然,技术升级必然
- Win7 不支持此接口问题
- python实现关键词搜索
- Win-mac版 AE 2018安装附教程
- 如何完美解决catia出现-运行异常,单击“确定终止”-问题
- Python/Numpy 合并复数的实部和虚部
- 爬取东方财富股票信息网
- 算法 C语言 压缩字符串
热门文章
- 本地Ping不通华为云服务问题解决
- C语言:求一个四位数的个位、十位、百位、千位分别为多少
- 计算机应用课程思政的应用,计算机类课程思政改革——以“Office高级应用”课程为例...
- 《Hands-On Machine Learning with Scikit-Learn TensorFlow》读书笔记(三):分类
- 工作手册 会计核算制度 目录 1. 会计核算管理制度	1 2. 会计档案管理办法	4 1.会计核算管理制度 8. 1.采取借贷记账法记账,采用权责发生制,即凡是收益已经实现,用已经发生,不论款
- 麦克劳林公式怎么记忆_如何巧记麦克劳林级数?
- Markdown——图片、文字显示居中的一种方法
- 程序员写好简历的五大技巧
- 每次运行项目都会出现这个reload script assemblies
- Android - 手机下载的缓存视频在文件管理怎么找不到?