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

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

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

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

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

相关文章

OpenMVG(特征匹配、照片组重建点云、GPS位置信息、GMS)

目录 1 图像的特征匹配 2 图像中提取GPS位置信息 2.1 写入GPS信息到图像中 2.2 读取带有GPS的图像 3 SIFT/AKAZE/AKAZE_MLDB特征提取对比 4 GMS Filter 5 将球形全景图转换为6个透视视图 6 照片组重建点云 1 图像的特征匹配 #include "openMVG/features/feature.…

ELAdmin 部署

后端部署 按需修改 application-prod.yml 例如验证码方式、登录状态到期时间等等。 修改完成后打好 Jar 包 执行完成后会生成最终可执行的 jar。JPA版本是 2.6,MyBatis 版本是 1.1。 启动命令 nohup java -jar eladmin-system-2.6.jar --spring.profiles.active…

vmware workstation群晖虚拟机vmdk文件导出

为了防止群晖虚拟机中整个挂掉,里面的文件导不出来,尝试直接从vmdk中获取内容。 1、想采用diskgenius去读取文件,发现volume1是空的。只能读取群晖的系统文件。 2、选择另一个linux系统的虚拟机,选择对应的vmdk 3、如果有文件管理…

二叉树的层序遍历II

1.题目 这道题是2024-2-15的签到题,题目难度为中等。 考察的知识点为BFS算法(树的层序遍历) 题目链接:二叉树的层序遍历II 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节…

【Qt 学习之路】在 Qt 使用 ZeroMQ

文章目录 1、概述2、ZeroMQ介绍2.1、ZeroMQ 是什么2.2、ZeroMQ 主线程与I/O线程2.3、ZeroMQ 4种模型2.4、ZeroMQ 相关地址 3、Qt 使用 ZeroMQ3.1、下载 ZeroMQ3.2、添加 ZeroMQ 库3.3、使用 ZeroMQ3.4、相关 ZeroMQ 案例 1、概述 今天是大年初一,先给大家拜个年&am…

Netty Review - NioEventLoopGroup源码解析

文章目录 概述类继承关系源码分析小结 概述 EventLoopGroup bossGroup new NioEventLoopGroup(1); EventLoopGroup workerGroup new NioEventLoopGroup();这段代码是在使用Netty框架时常见的用法,用于创建两个不同的EventLoopGroup实例,一个用于处理连…

【网工】华为设备命令学习(Telnet)

本次实验AR3为我们实际中远程的路由,AR4模拟我们的设备,最终实现Telnet的远程控制路由! 本次笔记主要记录Telnet技术实现原理,后续再补充具体配置代码。 Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的…

如何安装x11vnc并结合cpolar实现win远程桌面Deepin

文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂&#xff…

Java入门--简单介绍

目录 java入门-01-java学习介绍 java入门-02-人机交互-图形化界面的小故事 java入门-03-打开CMD java入门-04-常见的CMD命令 常用CMD命令 java入门-05-练习-利用CMD打开QQ并配置环境变量 java入门-06-Java概述和学习方法 学习路线 Java基础语法 contents: …

华为机考入门python3--(14)牛客14-字符串排序

分类:列表、排序 知识点: 字典序排序 sorted(my_list) 题目来自【牛客】 def sort_strings_by_lex_order(strings): # 使用内置的sorted函数进行排序,默认是按照字典序排序 sorted_strings sorted(strings) # 返回排序后的字符串列…

备战蓝桥杯---动态规划(基础3)

本专题主要介绍在求序列的经典问题上dp的应用。 我们上次用前缀和来解决,这次让我们用dp解决把 我们参考不下降子序列的思路,可以令f[i]为以i结尾的最大字段和,易得: f[i]max(a[i],a[i]f[i-1]); 下面是AC代码: #in…

SpringBoot3整合Knife4j

前置&#xff1a; 官网&#xff1a;快速开始 | Knife4j gitee&#xff1a;swagger-bootstrap-ui-demo: knife4j 以及swagger-bootstrap-ui 集成框架示例项目 - Gitee.com 1.依赖引入&#xff1a; ps&#xff1a;json处理需要引入相关包 <dependency><groupId>c…

什么是自编码器Auto-Encoder?

来源&#xff1a;https://www.bilibili.com/video/BV1Vx411j78H/?spm_id_from333.1007.0.0&vd_sourcef66cebc7ed6819c67fca9b4fa3785d39 为什么要压缩呢&#xff1f; 让神经网络直接从上千万个神经元中学习是一件很吃力的事情&#xff0c;因此通过压缩提取出原图片中最具代…

【Py/Java/C++三种语言详解】LeetCode每日一题240214【二叉树BFS】LeetCode102、二叉树的层序遍历

有LeetCode交流群/华为OD考试扣扣交流群可加&#xff1a;948025485 可上全网独家的 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 od1336了解算法冲刺训练 文章目录 题目链接题目描述解题思路DFS和BFS异同用队列维护的BFS 代码PythonJavaC时空复杂度 相关习题华为OD算法/大…

Educational Codeforces Round 135 (Rated for Div. 2)C. Digital Logarithm(思维)

文章目录 题目链接题意题解代码 题目链接 C. Digital Logarithm 题意 给两个长度位 n n n的数组 a a a、 b b b&#xff0c;一个操作 f f f 定义操作 f f f为&#xff0c; a [ i ] f ( a [ i ] ) a [ i ] a[i]f(a[i])a[i] a[i]f(a[i])a[i]的位数 求最少多少次操作可以使 …

蓝桥杯嵌入式第10届真题(完成) STM32G431

蓝桥杯嵌入式第10届真题(完成) STM32G431 题目 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body********************************…

机器学习:卷积介绍及代码实现卷积操作

传统卷积运算是将卷积核以滑动窗口的方式在输入图上滑动&#xff0c;当前窗口内对应元素相乘然后求和得到结果&#xff0c;一个窗口一个结果。相乘然后求和恰好也是向量内积的计算方式&#xff0c;所以可以将每个窗口内的元素拉成向量&#xff0c;通过向量内积进行运算&#xf…

STM32控制JQ8400语音播报模块

时间记录&#xff1a;2024/2/7 一、JQ8400引脚介绍 标示说明ONE LINE一线操作引脚BUSY忙信号引脚&#xff0c;正在播放语音时输出高电平RX串口两线操作接收引脚TX串口两线操作发送引脚GND电源地引脚DC-5V电源引脚&#xff0c;3.3-5VDAC-RDAC输出右声道引脚DAC-LDAC输出左声道…

爬虫——ajax和selenuim总结

为什么要写这个博客呢&#xff0c;这个代码前面其实都有&#xff0c;就是结束了。明天搞个qq登录&#xff0c;这个就结束了。 当然也会更新小说爬取&#xff0c;和百度翻译&#xff0c;百度小姐姐的爬取&#xff0c;的对比爬取。总结嘛&#xff01;&#xff01;&#xff01;加…

【运维测试】测试理论+工具总结笔记第1篇:测试理论的主要内容(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论测试理论测试工具相关知识。Python测试理论的主要内容&#xff0c;掌握软件测试的基本流程&#xff0c;知道软件测试的V和W模型的优缺点&#xff0c;掌握测试用例设计的要素&#xff0c;掌握等价类划分法、边界值法、因…