Dynamo设置明细表字段格式——保留小数位数

2024-02-15 23:28

本文主要是介绍Dynamo设置明细表字段格式——保留小数位数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hello大家好!我是九哥~

今天简单分享一个API的用法,就是设置明细表的中字段的字段格式。
 

本次呢,主要介绍下如何通过Dynamo设置长度、面积等几种字段的格式,设置小数位数的显示,如下图:

当然了,Revit本身支持直接插入文件中的明细表,当作样板传递也很方便,不过呢,我硬是给自己加了个需求,就是自动创建明细表,然后把格式都设置好了,记得之前在有劳里介绍过如何设置字段计算总数。
 

好了,回归正题,我们本次设置的是明细表中格式选项卡下的字段格式,只有能设置的字段,选中后,该按钮才会亮显,当然这些不是我们本次的关注点,本次只是选择一个字段后,来进行设置。
 

常规情况下,我们点开一个字段的条件格式后,会看到勾选着“使用项目设置”选项,这个时候呢,我们是改不了小数位数的选项的,所以这个就是我们第一步要处理的。

接下来我们要开始翻阅API手册,第一个要知道的是如何找到明细表,在Revit中,明细表也是作为视图存在的,所以需要所有“ViewSchedule”才能找到明细表视图,如下图:

然后翻到属性位置,找到“ViewSchedule.Definition” ,这个主要是明细表中字段的定义:

进入“ScheduleDefinition”类下面,能看到详细介绍:

为了找到每个字段的ID,我们可以在“ScheduleDefinition”类下面找到“GetFieldId”方法,通过此方法,我们可以写个自定义函数,拿到每个字段的ID。

#读取明细表字段
definit = schedules.Definition
#获取字段的总数
countParameters = definit.GetFieldCount()
#遍历输入的名称列表
for i in range(countParameters):#遍历每一个字段field = definit.GetField(i)Parname = field.ColumnHeading # 明细表的列表头

如此这般之后,我们就能根据我们输入的明细表和字段名称,拿到字段的ID了,之后就可以进入本次文章的正题了,设置字段格式。
 

继续搜索“ScheduleField”,查看其属性和方法,有很多都是本次要用到的,其中,最主要的就是“SetFormatOptions”,用来设置字段的格式:

接下来要做的,就都是围绕“FormatOptions”来的,我接着点进去,就能看到:

注意看下面的备注,“UseDefault”属性,就是我最上面截图所说的“使用项目设置”,如果为True就是启用,如果为False就是可以自定义。

那么接下来,我们首先就是要构造一个“FormatOptions”函数,然后先将“UseDefault”属性设置为False。


#新建一个格式选项
formatOpts = FormatOptions()
#不适用默认设置
formatOpts.UseDefault = False

然后呢,就是要设置“单位”,这里比较麻烦,不同的字段格式,这里要设置的单位是不一样的,比如我要设置是个长度的字段,那么单位里需要选择长度单位,如下图:

如果是面积,如下图:

我就不一一举例了,小伙伴们可以依次点开看看,我们先以长度为例,那么我们需要先判断字段的单位是什么?需要获取下“UnitType”属性,如果为“UT_Length”,就是我们要的长度。如果为“UT_Number”(这里我是添加的共享参数:面积格式),就是我们要的面积。

如果确定是长度参数了,我们就可以设置要显示的单位格式了,例如我需要长度单位是毫米,就可以重新设置下:
 

formatOpts.DisplayUnits = DisplayUnitType.DUT_MILLIMETERS

具体单位类型,可以再查阅下“DisplayUnitType”枚举有哪些。其他单位格式类似。

最后,就是设置你需要的小数位数了,比较简单,就是一个double值,直接赋予即可:

formatOpts.Accuracy = 0.1

FormatOptions配置好以后,最后赋予给字段即可:

field.SetFormatOptions(formatOpts)

最后附上以长度格式的字段为例的完整代码,其他格式的通过if判断下,单独处理即可,就不再赘述了。


# Copyright(c) 2023-2024, 九哥BIMer
import clr
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
from Revit.Elements import *
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.GeometryReferences)clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManagerdef tolist(x):if hasattr(x,'__iter__'): return xelse : return [x]doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
view = doc.ActiveViewschedules = UnwrapElement(IN[0])
name = tolist(IN[1])TransactionManager.Instance.EnsureInTransaction(doc)
for colName in name:definit = schedules.DefinitioncountParameters = definit.GetFieldCount()   for i in range(countParameters):field = definit.GetField(i)Parname = field.ColumnHeading if Parname == colName:if field.UnitType == UnitType.UT_Length:formatOpts = FormatOptions()formatOpts.UseDefault = FalseformatOpts.DisplayUnits = DisplayUnitType.DUT_MILLIMETERSformatOpts.Accuracy = 0.1field.SetFormatOptions(formatOpts)
TransactionManager.Instance.TransactionTaskDone()OUT = schedules

好了,今天的分析就到这里了,小伙伴们快去尝试吧~

如果你有好的想法和建议,欢迎分享哦~

这篇关于Dynamo设置明细表字段格式——保留小数位数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

Linux:alias如何设置永久生效

《Linux:alias如何设置永久生效》在Linux中设置别名永久生效的步骤包括:在/root/.bashrc文件中配置别名,保存并退出,然后使用source命令(或点命令)使配置立即生效,这样,别... 目录linux:alias设置永久生效步骤保存退出后功能总结Linux:alias设置永久生效步骤

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

Spring MVC如何设置响应

《SpringMVC如何设置响应》本文介绍了如何在Spring框架中设置响应,并通过不同的注解返回静态页面、HTML片段和JSON数据,此外,还讲解了如何设置响应的状态码和Header... 目录1. 返回静态页面1.1 Spring 默认扫描路径1.2 @RestController2. 返回 html2

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja