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

相关文章

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http