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, 九哥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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ssm的网络游戏公司官方平台设计与实现论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对网络游戏信息管理混乱,出错率高,信息安全性差…

函数递归的总结回顾

函数递归的本质就是其名字——递与归。先递出去, 再收回来。 而递归的思想就是为了让一个复杂的问题变成一个简单的问题 按照我目前的理解,函数递归有两点很重要。一个是它的限定条件,另一个就是函数体内“自调”(就是自我调用语句…

1-Flume中agent的source

Flume(1.11.0版本) 简介 概述 Flume本身是由Cloudera公司开发的后来贡献给了Apache的一套针对日志数据进行收集(collecting)、汇聚(aggregating)和传输(moving)的机制 Flume本身提供了简单且灵活的结构来完成日志数据的传输 Flume有两大版本&#x…

jQuery 选择器--获取元素

文章目录 1 jQuery 基础选择器2 层级选择器3 隐式迭代(重要)4 jQuery 筛选选择器5 jQuery 筛选方法(重点)案例--下拉菜单 6 jQuery 排他思想*案例--左右Tab栏切换 7 jQuery 链式编程 1 jQuery 基础选择器 2 层级选择器 3 隐式迭代(重要) 示例: 4 jQuery 筛选选择器…

流畅的 Python 第二版(GPT 重译)(十二)

第五部分:元编程 第二十二章:动态属性和属性 属性的关键重要性在于,它们的存在使得将公共数据属性作为类的公共接口的一部分完全安全且确实可取。 Martelli、Ravenscroft 和 Holden,“为什么属性很重要” 在 Python 中&#xff0…

前端如何一次处理十万条数据的渲染

前端如何一次处理十万条数据的渲染 一、下载第三方插件二、在入口文件引入三、示例 一、下载第三方插件 npm install --save el-table-infinite-scroll二、在入口文件引入 import ElTableInfiniteScroll from "el-table-infinite-scroll"; Vue.use(ElTableInfinite…

docker 配置国内阿里镜像源

在/etc/docker/目录下新建daemon.json文件 在文件中写入 {"registry-mirrors": ["https://jmphwhtw.mirror.aliyuncs.com"] } 以管理员身份运行命令 systemctl daemon-reload systemctl restart docker

项目中如何进行限流(限流的算法、实现方法详解)

❤ 作者主页:李奕赫揍小邰的博客 ❀ 个人介绍:大家好,我是李奕赫!( ̄▽ ̄)~* 🍊 记得点赞、收藏、评论⭐️⭐️⭐️ 📣 认真学习!!!🎉🎉 文章目录 限流的算法漏…

MFO-CNN-LSTM多输入分类预测|飞蛾扑火算法优化的卷积-长短期神经网络|Matlab

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&am…

最新优质电商API接口,附带Python教程

接口信息 API 接口是应用程序编程接口(Application Programming Interface)的缩写。 它是一组定义了软件组件之间如何交互和通信的规则和规范。简单来说,API 接口就是让不同的软件系统能够相互“交流”和“合作”的桥梁。打个比方&#xff…

onlyoffice第一次打开特别慢的问题优化

分析问题 上传oss 找到fonts上传到oss中 更改nginx配置 找到nginx所在位置 找到ds-docservice.conf #### onlyoffice二次开发,优化fonts请求速度的问题 location ~* /8.0.0-99/fonts(.*){return https://xxxx-xxxx.cos.ap-shanghai.myqcloud.com/fonts$1?…

jQuery 基础

文章目录 1. jQuery 概述1.1 JavaScript 库1.2 jQuery 概念1.3 jQuery 优点 2. jQuery 基本使用2.1 下载2.2 使用步骤2.3 jQuery 的入口函数2.4 jQuery 的顶级对象 $2.5 DOM 对象和 jQuery 对象DOM 对象和 jQuery 对象相互转换方法 1. jQuery 概述 1.1 JavaScript 库 1.2 jQue…

一篇文章带你了解知乎热门话题的撰写技巧

在当今信息高速发展的时代,人们越来越依赖网络获取知识。而知乎作为一个知识分享和知识传播的平台,吸引了大量用户的关注和参与。那么,如何在知乎上撰写一篇引人注目的文章呢?接下来,腾轩科技传媒探讨一下知乎文章的撰…

活动回顾 | 走进华为向深问路,交流数智办公新体验

3月20日下午,“企业数智办公之走进华为”交流活动在华为上海研究所成功举办。此次活动由上海恒驰信息系统有限公司主办,华为云计算技术有限公司和上海利唐信息科技有限公司协办,旨在通过对企业数字差旅和HR数智化解决方案的交流,探…

MySQL之基本操作与用户授权

一 基本操作 1 SQL分类 数据库:database 表:table,行:row 列:column 索引:index 视图:view 存储过程:procedure 存储函数:function 触发器:trigger 事…

【强化学习公式推导】状态价值函数与动作价值函数贝尔曼期望方程,贝尔曼最优方程推导过程

【强化学习公式推导】状态价值函数与动作价值函数贝尔曼期望方程,贝尔曼最优方程推导过程 1.回报 2.当前时刻的回报与下一时刻回报的关系 3.状态价值函数 4.动作价值函数 5.状态价值函数与动作状态价值函数的关系 6.贝尔曼期望方程 7.状态价值函数的贝尔…

迷宫(蓝桥杯)——DFS和BFS

迷宫 题目描述 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方。 010000 000100 001001 110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左…

[云] vmware: host: net: Net.CoaleseDefaultOn

https://communities.vmware.com/t5/Storage-Performance/Advanced-Networking-Performance-Options/ta-p/2792649 在vsphere client下的路径是: 选择使用的host -> 右键setting->configure-> system->advanced system setting->edit->Net.Coales…

微信小程序开发之创建一个自己的项目和项目目录下各个文件的了解

1、小程序开发工具基础 (1)菜单栏:可以对开发工具进行一些简单的设置,还可以在帮助一行获取学习相关api文档 (2)模拟器显示栏:每当我们在进行便写好代码之后,通过编译可以在模拟显示…

华为ensp中ospf基础 原理及配置命令(详解)

CSDN 成就一亿技术人! 作者主页:点击! ENSP专栏:点击! CSDN 成就一亿技术人! ————前言———— OSPF 的全称是 Open Shortest Path First,意为“开放式最短路径优先”。是一种内部网关协…