如有不明白,请qq254033230询问。

其实建连续刚构桥也不是很难,主要是用代码来驱动族而已。好多牛人用dynamo来做这件事情,我觉得也挺好,我也用过dynamo来操作过,但是用起来还是没有插件爽。

其实代码也挺简单的,这里就直接放主要的代码吧。核心就是把族放在相应位置,然后获取族参数,并修改族参数。

最后效果视频见:http://v.youku.com/v_show/id_XMTg2MTY2NDU4NA==.html?spm=a2hzp.8253869.0.0

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.ApplicationServices;namespace BuildBridgeQuick
{[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)][Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)][Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]public class Class1 : IExternalCommand{public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements){Document revitDoc = commandData.Application.ActiveUIDocument.Document;  //取得文档Application revitApp = commandData.Application.Application;             //取得应用程序UIDocument uiDoc = commandData.Application.ActiveUIDocument;           //取得当前活动文档//选择箱梁单室的实例Selection sel = uiDoc.Selection;Reference ref1 = sel.PickObject(ObjectType.Element, "选择一个变截面箱梁实例");Element elem = revitDoc.GetElement(ref1);FamilyInstance familyInstance = elem as FamilyInstance;if (familyInstance == null){TaskDialog.Show("错误1", "没有选择箱梁单室,请重新选择!");          //注意这里的代码要重新优化}//提取出族类型名称,并把类型名称放到窗口textBox里FamilySymbol symbol = familyInstance.Symbol;TempName.FamInsName = symbol.Name;//打开窗口Form1 form1 = new Form1();form1.ShowDialog();List<ElementId> list = new List<ElementId>();list.Add(elem.Id);ICollection<ElementId> elementIds = list;//获取相应的截面参数IList<Parameter> list1 = familyInstance.GetParameters("iH");   //变截面箱梁i截面的高度Parameter param1 = list1[0];IList<Parameter> list2 = familyInstance.GetParameters("iHI5");   //变截面箱梁i截面底板的高度Parameter param2 = list2[0];IList<Parameter> list3 = familyInstance.GetParameters("iT");   //变截面箱梁i截面腹板的宽度Parameter param3 = list3[0];IList<Parameter> list4 = familyInstance.GetParameters("iHI1");   //变截面箱梁i截面顶板的高度Parameter param4 = list4[0];IList<Parameter> list5 = familyInstance.GetParameters("jH");   //变截面箱梁j截面的高度Parameter param5 = list5[0];IList<Parameter> list6 = familyInstance.GetParameters("jHI5");   //变截面箱梁j截面底板的高度Parameter param6 = list6[0];IList<Parameter> list7 = familyInstance.GetParameters("jT");   //变截面箱梁j截面腹板的宽度Parameter param7 = list7[0];IList<Parameter> list8 = familyInstance.GetParameters("jHI1");   //变截面箱梁j截面顶板的高度Parameter param8 = list8[0];IList<Parameter> list9= familyInstance.GetParameters("BeamLength");   //变截面箱梁节段长度Parameter param9 = list9 [0];IList<Parameter> list10 = familyInstance.GetParameters("detZ");   //变截面箱梁两个截面的高差Parameter param10 = list10[0];IList<Parameter> list11 = familyInstance.GetParameters("detY");   //变截面箱梁两个截面的高差Parameter param11 = list11[0];int j = 0;for (int i = 0; i < (Convert.ToInt32(ListData.List_SJGC.Count) - 1); i++){j =i+1;#region 将表格的族参数赋予给对应的族参数Transaction transaction1 = new Transaction(revitDoc);transaction1.Start("改变族参数");param1.Set(ListData.List_XLG[i] / 304.8);            //变截面箱梁i截面的高度param2.Set(ListData.List_DBH[i] / 304.8);           //变截面箱梁i截面底板的高度param3.Set(ListData.List_FBH[i] / 304.8);           //变截面箱梁i截面腹板的宽度param4.Set(ListData.List_TBH[i] / 304.8);           //变截面箱梁i截面顶板的高度param5.Set(ListData.List_XLG[j] / 304.8);            //变截面箱梁j截面的高度param6.Set(ListData.List_DBH[j] / 304.8);           //变截面箱梁j截面底板的高度param7.Set(ListData.List_FBH[j] / 304.8);            //变截面箱梁j截面腹板的宽度param8.Set(ListData.List_TBH[j] / 304.8);           //变截面箱梁j截面顶板的高度param9.Set(ListData.List_JDCD[j] / 304.8);         //变截面箱梁节段长度param10.Set(ListData.List_SJGC[i] / 304.8 - ListData.List_SJGC[j] / 304.8);     //变截面箱梁两个z截面的高差param11.Set(ListData.List_Y[i] / 304.8 - ListData.List_Y[j] / 304.8);     //变截面箱梁两个Y截面的高差transaction1.Commit();#endregion#region 将改变参数后的族放到相应位置Transaction transaction2 = new Transaction(revitDoc);transaction2.Start("将族复制到相应位置");XYZ point = new XYZ(ListData.List_X[i]/304.8, ListData.List_Y[i] / 304.8, ListData.List_SJGC[i] / 304.8);LocationPoint familyInstancePoint = familyInstance.Location as LocationPoint;XYZ tanslation = new XYZ(ListData.List_X[i] / 304.8 - familyInstancePoint.Point.X, ListData.List_Y[i] / 304.8 - familyInstancePoint.Point.Y, ListData.List_SJGC[i] / 304.8 - familyInstancePoint.Point.Z);ElementTransformUtils.CopyElements(revitDoc, elementIds, tanslation);                transaction2.Commit();#endregion}//把存放在ListData里的数据清除掉ListData.List_DBH.Clear();ListData.List_FBH.Clear();ListData.List_JDCD.Clear();ListData.List_SJGC.Clear();ListData.List_TBH.Clear();ListData.List_X.Clear();ListData.List_XLG.Clear();ListData.List_Y.Clear();return Result.Succeeded;}}
}

revit二次开发——建连续刚构桥(方法1)相关推荐

  1. revit二次开发——建连续刚构桥2(带平纵曲线)

    如有不明白,请qq254033230询问. 上一个方法对于直线的连续刚构桥行得通,但对于有平纵曲线的连续刚构桥还是行不通,这里主要是族的原因,因为带平纵曲线的连续刚构桥每一个节段都可以算作一个异形结构 ...

  2. pythoncad二次开发视频_revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档...

    二次开发 revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档2019-07-08赞( 0 ) 记录一下CAD二次开发的一些简单实例. 1.helloworld ...

  3. Revit二次开发——三角面创建

    Revit二次开发--三角面创建 文章目录 Revit二次开发--三角面创建 前言 一.三角面是什么? 二.三角网 三.使用步骤 1.引入库 2.开启事务 3.创建 总结 前言 三角面是创建实体的基础 ...

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

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

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

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

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

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

  7. Revit二次开发入门秘籍 01如何入门

    关于入门 我想在开始学习之前大家应该更需要知道如何入门,对比一下我们在学校的学习,我们需要书.老师-书上呢,是有所有的知识点,有重要的,有不重要的,而老师呢,会知道哪些是重点,也就是我们考试要考的,教 ...

  8. Revit二次开发之绘制钢筋

    第一次在博客园上写东西,也不知道该写些什么,我想就写点最近项目到遇到的问题吧. 最近在做一个小项目,具体需求大概是在一个revit模型中的对应的楼板位置绘制钢筋. 由于刚接触Revit二次开发,之前也 ...

  9. revit二次开发--异形柱翻模

    最近写了一个revit二次开发的异形柱翻模的功能,柱子翻模网上有很多插件可以用,我用的比较多的是红瓦,其中异形柱的翻模对于图纸的要求较高,有很多不准确的地方.很多异形柱,整体翻模出来是错误的,翻出来之 ...

  10. Revit二次开发入门捷径_升维学习、降维打击

    问题 入门Revit二次开发有捷径吗? 答案 量子力学:有也没有.(皮一下:叠加态) 没有:目的地只有一个,路只有一条,学习没有捷径. 有:虽然路只有一条,但我们可以借助交通工具,缩短时间就是捷径. ...

最新文章

  1. 位序、字节序、类型序
  2. centos中用MySQL创建新表_CentOS下使用Shell批量创建数据库表
  3. python查看文件有多少行_python如何判断文件有多少行
  4. UVa573 The Snail
  5. 危机时保路人还是保乘客?无人车伦理困境背后:谁来制定算法规则
  6. B端设计指南 —— 弹窗 究竟应该如何设计
  7. mysql in 多个字段_MySQL如何同时自增自减多个字段
  8. 【OpenCV 例程200篇】75. Numpy 实现图像傅里叶变换
  9. Linux-Ubuntu部署Springboot项目应用到生产环境(jar方式)
  10. 联想服务器改win7系统教程,联想IdeaCentre720改win7系统教程及BIOS设置方法
  11. naturalWidth 与 naturalHeight
  12. 检测到JSON.NET错误类型的自引用循环
  13. java怎么复制别人的数据库_数据库实现主从复制
  14. int main ( int argc, char** argv )的说明
  15. 世界语言共有4种书写方向
  16. 自然辩证法概论-雨课堂
  17. Servlet三大作用域
  18. win10修改DNS
  19. 李欣桐 计算机竞赛,【赛出精彩】我校举行数学计算能力竞赛活动
  20. win10磁盘管理器的用处和意义

热门文章

  1. idea 调用webservice接口
  2. android菜单对话框文字,Android 对话框、信息提示和菜单
  3. 软件项目设计文档分类
  4. 开关稳压器设计的PCB布局布线
  5. LTE技术派报告:LTE抛弃了CDMA?
  6. 计算机病毒安全问题,内网安全中致命问题--“计算机病毒”
  7. c语言上届报告,51单片机摇摇棒制作资料,包含c代码PCB原理图与设计报告
  8. 如何使用STM32 HAL库驱动TFT-LCD实现手画板功能
  9. 北京内推 | 微软亚洲研究院机器学习组招聘NLP/语音合成等方向全职研究员
  10. ubuntu14.04 + dlib19.2+【 C++ 】+Face Landmark Detection