Revit SDK 介绍:TypeRegeneration 修改类型,更新文档 ValidateParameters 参数合法性验证

前言

这篇文章介绍两个例子,逻辑比较简单:

  1. TypeRegeneration 修改类型,更新文档
  2. ValidateParameters 参数合法性验证

内容

TypeRegeneration

在这里插入图片描述
FamilyType 不是继承自 Element 的,而是独立于 Element 体系之外,直接从 Autodesk.Revit.DB.APIObject派生。
FamilySymbol 则是继承自 ElementType。

namespace Autodesk.Revit.DB
{public class FamilyType : APIObject{public string Name { get; }public double? AsDouble(FamilyParameter familyParameter);public ElementId AsElementId(FamilyParameter familyParameter);public int? AsInteger(FamilyParameter familyParameter);public string AsString(FamilyParameter familyParameter);public string AsValueString(FamilyParameter familyParameter);public bool HasValue(FamilyParameter familyParameter);}
}

TypeRegeneration 修改类型,更新文档。
这个例子是在族文件里运行,因此 document.IsFamilyDocument 返回真。例子的核心是更改当前文档的类型 m_familyManager.CurrentType = type
核心逻辑:

if (document.IsFamilyDocument){m_familyManager = document.FamilyManager;foreach (FamilyType type in m_familyManager.Types) {m_familyManager.CurrentType = type;}

ValidateParameters

ValidateParameters 参数合法性验证。
同样是在族文档里面,即 document.IsFamilyDocument 返回真。
遍历所有参数,判断是否合法:

foreach (FamilyType type in familyManager.Types){bool right = true;foreach (FamilyParameter para in familyManager.Parameters){if (type.HasValue(para)){switch (para.StorageType){case StorageType.Double:if (!(type.AsDouble(para) is double))right = false;break;case StorageType.ElementId:try{Autodesk.Revit.DB.ElementId elemId=type.AsElementId(para);} catch {right = false;}                                    break;case StorageType.Integer:if (!(type.AsInteger(para) is int))right = false;break;case StorageType.String:if (!(type.AsString(para) is string))right = false;break;default:break;}}    }
} 
namespace Autodesk.Revit.DB
{public class FamilyParameter : APIObject{public bool UserModifiable { get; }public override bool IsReadOnly { get; }public bool IsShared { get; }public Guid GUID { get; }public ElementId Id { get; }public ParameterSet AssociatedParameters { get; }public DisplayUnitType DisplayUnitType { get; }public string Formula { get; }public bool CanAssignFormula { get; }public bool IsDeterminedByFormula { get; }public bool IsReporting { get; }public bool IsInstance { get; }public StorageType StorageType { get; }public Definition Definition { get; }}
}

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

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

相关文章

RS485(一):电路与波形

一、RS485电路 ​RS485( Recommended Standard-485)是隶属于OSI模型-物理层的电气特性,规定为 2 线、半双工、平衡传输线的多点异步通信标准,通信采用差分信号传输。 典型485应用电路如下图所示: 其中 、# 分别控制接收和发送…

LeetCode 238. 除自身以外数组的乘积

题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目解析 使用前缀和进行解决该题,只不过与之前前缀和不同的是这个题目计算前缀和的时候不需要计算当前元素,也就是当前位置前缀和的值其实是不包含当前元素的前缀和。…

C++内存管理

目录 一.new和delete 二.operator new与operator delete函数 三.new和delete的实现原理 四.在VS2022编译器下new和delete不匹配的问题 五.定位new 六.malloc/free和new/delete的区别 七.C内存分布 八.内存泄漏 C在内存管理上引入了两个操作符,分别是new,de…

Tailwind CSS 速成

Tailwind CSS 速成 完成了 responsive 和特效的学习后,现在折腾一下 tailwind CSS,这个 CSS 库本身就包含了很多的 utility class,之前跟着 yt 的视频写项目的时候,写了两个项目,好像不记得写过 CSS…… Redux Toolk…

SpringMVC的拦截器和JSR303的使用

目录 一、JSR303 二、拦截器(interceptor) 一、JSR303 1.1.什么是JSR303 JSR 303,它是Java EE(现在称为Jakarta EE)规范中的一部分。JSR 303定义了一种用于验证Java对象的标准规范,也称为Bean验证。 Bean验…

Golang goroutine 进程、线程、并发、并行

goroutine 看一个需求 需求:要求统计1-200000000000的数字中,哪些是素数? 分析思路: 1)传统的方法,就是使用一个循环,循环的判断各个数是不是素数(一个任务就分配给一个cpu去做,这样很不划算…

运动耳机哪个好、最好的运动牌子排名榜

很多朋友喜欢在运动的时候听音乐,为此,他们会为自己配备一款蓝牙耳机或是运动耳机,可以在运动的时候随身听,可是,一些人在挑选耳机的时候犯难了,市面上那么多运动耳机,运动耳机哪个好&#xff1…

关于rsync用不了之后

1.尝试找出rsync使用错误原因: 我遇见一个问题:rsync:read errors mapping:communication error on send (70),我查了一下这个问题很大可能是网络链接导致的,然后我用nslookup指令查看了/train2…

测试平台项目部署二(手动部署改成Dockerfile)

测试平台项目部署二(手动部署改成Dockerfile) 一、Dockerfile制作1、entrypoint.sh制作2、构建镜像3、启动容器二、遇到的问题1、pip install --no-cache-dir -r requirements.txt安装第三方库时,报Installing build dependencies: started2、安装第三方库文件比较慢,考虑更…

Vue3自定义指令

文章目录 Vue3自定义指令1. 自定义全局指令v-focus2. 自定义局部指令v-focus3. 指令定义的钩子函数3.1 概念3.2 钩子函数参数3.3 vnode & prevNode3.4 简写3.5 指令函数接受JavaScript表达式 Vue3自定义指令 1. 自定义全局指令v-focus 除了默认设置的核心指令( v-model 和…

zabbix -- 安装

Zabbix zabbix除了可以监控linux服务器之外,还可以监控路由器、交换机、容器等,全方位监控 Zabbix对服务器的监控是通过在服务器上部署“间谍”程序zabbix-agent获取数据,但对于路由器、交换机等机器的监控不能进行部署,这个时候…

Navicat导入Excel数据顺序变了

项目场景: Navicat导入Excel数据 问题描述 从Excel表格中导入数据到数据库中。但是,在导入的过程中,我们常会发现数据顺序出现了问题,导致数据错位,给数据的处理带来了极大的麻烦。 原因分析: 这个问题的…