RevitAPI: 设置管件族的连接件的半径属性抛异常 - 如何获取关联族参数

本文主要是介绍RevitAPI: 设置管件族的连接件的半径属性抛异常 - 如何获取关联族参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

管件族的连接件有一个属性叫“半径”,我们想使用api来修改它的值,直观的做法可能是这样的:

connectorElement.Radius = 0.041;
但是,Radius属性是只读的,编译不过,或者编译过了,但是抛异常。

另外一种做法是使用Parameter:

var radiusPara = connectorElement.get_Parameter(BuiltInParameter.CONNECTOR_RADIUS);
radiusPara.Set(0.041);
然而radiusPara也是只读的,照样会抛出异常。

我知道在界面上也无法直接修改,而是修改它的关联参数,例如下图中,我们修改的是”公称半径“




那么如何通过api获得这个关联参数呢?

下面的代码给出了答案:

var sb = new StringBuilder();
foreach (var connectorPara in connectorElement.GetOrderedParameters())
{foreach (FamilyParameter familyPara in doc.FamilyManager.Parameters){foreach (Parameter associatedPara in familyPara.AssociatedParameters){if (connectorPara.Id == associatedPara.Id && associatedPara.Element.Id == connectorElement.Id){//associate parameter foundsb.AppendLine("'" + associatedPara.Definition.Name + "(" + (BuiltInParameter)associatedPara.Id.IntegerValue + ")' <-> '" + familyPara.Definition.Name + "'");}}}
}
TaskDialog td = new TaskDialog("Parameter associations");
td.MainContent = sb.ToString();
td.TitleAutoPrefix = false;
td.Show();
该代码会打印出所有connectorElement的参数和族参数之间的关联关系,代码步骤解释如下:

  1. 调用GetOrderedParameters()获取connectorElement的所有参数,并进行遍历
  2. 通过Document.FamilyManager.Parameters遍历所有的族参数FamilyParameter
  3. 通过FamilyParameter.AssociatedParameters属性获取所有和该族参数关联的元素参数
  4. 遍历所有关联参数,判断connectorElement的参数和关联参数的Id一致,并且对应的Element也是同一个,即找到了关联关系

结果如图:


如此,则设置半径的可以这样做:

  1. 获取连接件半径属性的关联参数
  2. 使用Document.FamilyManager.Set(FamilyParameter, Value)来设置该关联参数

完整代码如下:

var doc = commandData.Application.ActiveUIDocument.Document;
var uiSel = commandData.Application.ActiveUIDocument.Selection;
ConnectorElement connectorElement = null;
try
{var reference = uiSel.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element, "Pick a connector");connectorElement = doc.GetElement(reference) as ConnectorElement;if (connectorElement != null){var radiusPara = connectorElement.get_Parameter(BuiltInParameter.CONNECTOR_RADIUS);foreach (FamilyParameter familyPara in doc.FamilyManager.Parameters){foreach (Parameter associatedPara in familyPara.AssociatedParameters){if (radiusPara.Id == associatedPara.Id && associatedPara.Element.Id == connectorElement.Id){//associate parameter foundusing (Transaction transaction = new Transaction(doc)){transaction.Start("Set Radius");doc.FamilyManager.Set(familyPara, 0.041);transaction.Commit();}}}}}
}
catch (Autodesk.Revit.Exceptions.OperationCanceledException)
{
}


这篇关于RevitAPI: 设置管件族的连接件的半径属性抛异常 - 如何获取关联族参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/333792

相关文章

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ