revit在桥梁中的应用二次开发(1) - 族
更新时间:2023-11-23 22:43:01 阅读量: 教育文库 文档下载
- Revit如何画桥梁推荐度:
- 相关推荐
Revit在桥梁中的应用二次开发篇(1)——族
建模篇简单讲了怎么在revit软件中手动建桥梁模型,更多的基础操作的内容可以直接看revit在建筑中应用的相关教程,其实也是相通的,没必要多讲。
这次诚意满满,花了两天时间专门研究二次开发中族的应用。以下代码亲测可试,结合《AUTODESK REVIT二次开发基础教程》可以获得更好的效果。因为书本上都是一些代码片段,而且是基于2015版的,在2016版的revit上部分代码跑不了。我也尝试了很久,终于基本上搞通了族相关的语法。
基础知识直接看书,这里直接上代码。书里的代码片段可以想办法插到完整代码中运行。
1、找到族实例
//用id找到族实例
2、拿到族文档 //拿到族文档
Document familyDoc =
revitDoc.EditFamily(familyInstance.Symbol.Family);
if (!familyDoc.IsFamilyDocument) {
TaskDialog.Show(\错误3\, \不是族文档!\); } else {
TaskDialog.Show(\, \是族文档!\); }
3、修改族类型名称(完整代码) 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 修改族类型名称 {
[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; //取得应用程序
Selection sel = commandData.Application.ActiveUIDocument.Selection; Reference ref1 = sel.PickObject(ObjectType.Element, \选择一个族实例\);
//得到当前选择的文档
Document doc = commandData.Application.ActiveUIDocument.Document; //族实例
FamilyInstance familyIns = doc.GetElement(ref1) as FamilyInstance; FamilySymbol symbol = familyIns.Symbol;
Transaction transaction = new Transaction(doc); //打开关闭子程序
transaction.Start(\改变族类型名称\); symbol.Name = \ + symbol.Name; transaction.Commit(); return Result.Succeeded; } } }
4、删除一个族参数
[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; //取得应用程序 //选择一个族实例
Selection sel = commandData.Application.ActiveUIDocument.Selection; Reference ref1 = sel.PickObject(ObjectType.Element, \选择一个族实例\);
FamilyInstance familyIns = revitDoc.GetElement(ref1) as FamilyInstance;
FamilySymbol symbol = familyIns.Symbol; //得到族文档
Document familyDoc = revitDoc.EditFamily(symbol.Family);
//取得FamilyManager,注意这里只能从族文档中取得FamilyManager,然后修改参数
FamilyManager familyManager = familyDoc.FamilyManager;
IList
TaskDialog.Show(\,faparms.First().Definition.Name); Transaction trans = new Transaction(familyDoc, \); trans.Start();
familyManager.RemoveParameter(faparms.First()); trans.Commit();
familyDoc.LoadFamily(revitDoc, new Opt()); return Result.Succeeded; } } }
//族载入时覆盖并修改族参数
public class Opt : IFamilyLoadOptions {
public bool OnFamilyFound(bool familyInUse, out bool overwriteParameterValues) {
overwriteParameterValues = true; return true; }
public bool OnSharedFamilyFound(Family sharedFamily, bool familyInUse, out FamilySource source, out bool overwriteParameterValues) {
source = FamilySource.Project; overwriteParameterValues = true; return true; } }
4、遍历族参数
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 遍历族参数 {
[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; //取得文档
UIApplication uiApp = commandData.Application; Application revitApp =
commandData.Application.Application; //取得应用程序
//取得选择的元素
Selection sel = uiApp.ActiveUIDocument.Selection;
Reference ref1 = sel.PickObject(ObjectType.Element, \family instance\);
Document doc = uiApp.ActiveUIDocument.Document; Element elem = doc.GetElement(ref1);
//遍历元素的参数
string strParamInfo = null;
foreach (Parameter param in elem.Parameters) {
if (param.AsValueString() != null)
strParamInfo += param.Definition.Name + \is:\ + param.AsValueString() + \; else
strParamInfo += param.Definition.Name + \is:\ + param.AsString() + \; }
TaskDialog.Show(\, strParamInfo); return Result.Succeeded; } } }
5、获得指定族参数并修改参数,这里以窗户的底高度为例。这里用两种方法找到指定参数,尤其是用名称找到指定参数尤其要注意,旧版本的get_Parameter()已经不能用了 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 获得指定参数并修改参数 {
[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; //取得文档
UIApplication uiApp = commandData.Application; Application revitApp =
commandData.Application.Application; //取得应用程序 //取得选择的元素
Selection sel = uiApp.ActiveUIDocument.Selection;
Reference ref1 = sel.PickObject(ObjectType.Element, \选择一个窗族\); Element elem = revitDoc.GetElement(ref1); //获得族实例
FamilyInstance familyInstance = elem as FamilyInstance; //遍历元素的参数
string strParamInfo = null;
////方法一:使用parameterId来找到参数 //Parameter param =
familyInstance.get_Parameter(BuiltInParameter.INSTANCE_SILL_HEIGHT_PARAM); //strParamInfo += param.Definition.Name + \param.AsValueString() + \
//方法二:使用名称来找到参数,因为revit2016为了避免得到重复的名字,只能用GetParameters得到一个集合,如果你只用唯一的名字,那只用取list[0]就可以了
IList
strParamInfo += param.Definition.Name + \ + param.AsValueString() + \; //方法三:见下图
//修改参数的值
Transaction transaction = new Transaction(revitDoc); //打开子程序,修改参数,然后关闭子程序 transaction.Start(\改变族类型名称\);
param.Set(10); //注意,这里单位是英寸,10英寸等于3048mm transaction.Commit();
TaskDialog.Show(\, strParamInfo); return Result.Succeeded; } } }
//接以上方法三:
6、毫米转到英寸
7、几个有用的关于revit二次开发族的相关链接
a、http://wenku.it168.com/d_001413025.shtml Revit二次开发之“修改已经加载的族或系统族的参数”
b、http://blog.csdn.net/joexiongjin/article/details/9011073
编
程如何修改Revit族类型名称
c、http://www.cnblogs.com/greatverve/archive/2011/04/01/revit-param.html Revit 二次开发之“参数”
d、http://blog.csdn.net/joexiongjin/article/details/17220183 详
谈用API读取Revit对象的参数值
e、http://www.cnblogs.com/greatverve/archive/2011/08/11/modify-family-param.html Revit二次开发之“通过新建族来修改族参数”
6、毫米转到英寸
7、几个有用的关于revit二次开发族的相关链接
a、http://wenku.it168.com/d_001413025.shtml Revit二次开发之“修改已经加载的族或系统族的参数”
b、http://blog.csdn.net/joexiongjin/article/details/9011073
编
程如何修改Revit族类型名称
c、http://www.cnblogs.com/greatverve/archive/2011/04/01/revit-param.html Revit 二次开发之“参数”
d、http://blog.csdn.net/joexiongjin/article/details/17220183 详
谈用API读取Revit对象的参数值
e、http://www.cnblogs.com/greatverve/archive/2011/08/11/modify-family-param.html Revit二次开发之“通过新建族来修改族参数”
正在阅读:
2022高考355分摆布有哪些二本大学 各省分低的黉舍有什么03-30
安全生产标准化台账目录09-06
一滴水的快乐旅程作文700字06-21
六年级下册数学单元测试-第2单元达标测试卷 - 苏教版06-13
壮阳药广告词11-05
村委会职责及各项规章制度06-01
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 桥梁
- 应用
- 开发
- revit
- 2018届高三生物(浙江选考)一轮复习文档 选考章末检测卷12 第十二章 生物技术实践
- 半导体习题和解答
- 实验七 过氧化氢含量的测定 -
- 部编教材推荐名著《唐诗三百首》导读与精要练习
- 在全旗人大工作会议上的发言
- 多元统计分析试题(A卷)(答案)
- 检查井
- 2015年上半年天津公路造价师《理论与法规》:建设工程造价管理的工作要素考试题
- 通信、信号迁改专项施工方案
- 三年级综合实践下学期试卷
- 中央厨房总管理制度汇编
- 国内首家350MW超临界机组热电厂供热优化调整
- 合肥包河区养老院 - 图文
- 聚酰亚胺纤维
- 全国各大高校广播电视编导考试真题(附往年真题)
- 2007年硕士研究生入学考试大纲-地震勘探
- 大气污染控制工程复习资料:计算题及答案
- 西南交大机械制图课件
- 第9章振动学基础习题
- JZ-AT10型数采仪说明书(32K)V1.0 2011-12-22