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

news2024/10/4 17:36:55

前言

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

  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.coloradmin.cn/o/1005472.html

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

相关文章

window.structuredClone()

先看下兼容性 1. 创建一个要克隆的对象。例如: const originalObj {name: John,age: 25,address: {city: New York,country: USA} };2. 调用structuredClone()方法克隆对象。例如: const clonedObj window.structuredClone(originalObj);3. clonedObj将…

软件安全研究(四)

文章目录 Fine-Grained Code Clone Detection with Block-Based Splitting of Abstract Syntax Tree文章结构IntroMotivationDefinitionSystemOverviewProcessingVerify Experimentexperimental settingsRQ1RQ2RQ3RQ4RQ5 Fine-Grained Code Clone Detection with Block-Based S…

MeterSphere压测,出现HttpHostConnectException

现象:MeterSphere更换压力机后,压测出现出现HttpHostConnectException 解决方案: net.ipv4.tcp_tw_reuse默认是0或者2,更改为1 net.ipv4.tcp_tw_reuse,表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连…

轻量级软件FastGithub实现稳定访问github

当我们想访问全球最大的“同性交友网站”https://github.com/ 时,总会出现无法访问的界面,令人非常苦恼:幸运的是,有一种轻量级的软件可以帮助我们稳定地访问GitHub,那就是FastGithub。 什么是FastGithub&#xff1f…

数据结构和算法(5):二叉树

树 向量允许通过下标或秩,在常数的时间内找到目标对象;然而,一旦需要对这类结构进行修改,那么无论是插入还是删除,都需要耗费线性的时间。 列表允许借助引用或位置对象,在常数的时间内插入或删除元素&…

去除pdf/word的水印艺术字

对于pdf中的水印如果无法去除水印,则先另存为word,然后再按下面办法处理即可: 查看宏,创建:删除艺术字 添加内容: Sub 删除艺术字()Dim sh As ShapeFor Each sh In ActiveDocument.ShapesIf sh.Type msoT…

用ASE制作地表积水效果

unity引擎制作实时刷下雨地面效果 大家好,我是阿赵。   之前在Unity引擎做了几种不同的效果,比如视差偏移、下雨效果、顶点颜色工具等。这一篇文章,将会把这几个效果合并在一起,做出一个混合积水地表的效果。这个几个shader的基…

基于elelemt-ui封装一个表单

子组件 searchForm <template><el-formref"form":model"value":rules"rules":label-width"labelWidth":inline"inline"><el-form-itemv-for"field in fields":key"field.slot":label&q…

JMeter基础 —— 使用Badboy录制JMeter脚本!

1、使用Badboy录制JMeter脚本 打开Badboy工具开始进行脚本录制&#xff1a; &#xff08;1&#xff09;当我们打开Badboy工具时&#xff0c;默认就进入录制状态。 如下图&#xff1a; 当然我们也可以点击录制按钮进行切换。 &#xff08;2&#xff09;在地址栏中输入被测地…

excel单元格多行文本的excel 提取 公式

excel单元格多行文本的excel 提取 公式 第一行&#xff1a; TRIM(MID(SUBSTITUTE(A$1,CHAR(10),REPT(" ",160)),ROW(A1)*160-159,160)) 第9行&#xff1a; TRIM(MID(SUBSTITUTE(A$1,CHAR(10),REPT(" ",160)),ROW(A9)*160-159,160)) Excel如何提取某一单元…

GRU实现时间序列预测(PyTorch版)

&#x1f4a5;项目专栏&#xff1a;【深度学习时间序列预测案例】零基础入门经典深度学习时间序列预测项目实战&#xff08;附代码数据集原理介绍&#xff09; 文章目录 前言一、基于PyTorch搭建GRU模型实现风速时间序列预测二、时序数据集的制作三、数据归一化四、数据集加载器…

Multi Query Attention Group Query Attention

Multi Query Attention(MQA)在2019年就被提出来了&#xff0c;用于推理加速&#xff0c;但在当时并没有受到很多关注&#xff0c;毕竟一张2080就能跑Bert-base了。随着LLM的大火&#xff0c;MQA所带来的收益得以放大。 思路 Multi Query Attention(MQA)跟Multi Head Attention…

win10 自带虚拟机软件 虚拟CentOS系统

win10 下使用需要虚拟一个系统&#xff0c;不需要额外安装VMware、Virtual box等软件。使用win10 自带虚拟机软件即可 步骤1 确保启动Hyper-V 功能启用 控制面板 -> 程序 -> 启用或关闭Windows功能 步骤 2 创建虚拟机 2.1 打开Typer-V 2.2 创建虚拟机 2.2.1 操作 -&g…

什么是数据湖?数据湖的概念及发展历程

随着云计算、社交媒体、物联网、短视频等新一代互联网技术的快速发展&#xff0c;数据的数量和复杂性不断增加。许多企业和组织已经积累了大量的各种类型的数据&#xff0c;对于如何存储和管理这些海量数据&#xff0c;以及如何高效地分析和利用这些数据&#xff0c;是每个组织…

数字IC设计笔试面试经典题(1-10)

1 基础知识 1.1 锁存器的结构 锁存器即Latch &#xff0c;数电中称之为电平触发的D触发器&#xff0c;也是D型锁存器&#xff0c;有电平触发器SR触发器改进得到&#xff0c;其工作特点是电平是有效电平&#xff08;高电平或者低电平&#xff09;期间&#xff0c;才接受信号并…

Vue中实现全景房看图3D

示例代码 安装photo-sphere-viewer yarn add -D photo-sphere-viewer 组件引入插件 import { Viewer } from photo-sphere-viewer; import photo-sphere-viewer/dist/photo-sphere-viewer.css; // 引入样式 import MarkersPlugin from photo-sphere-viewer/dist/plugins/marker…

一文读懂LCD、OLED、LED屏的区别以及透明液晶屏原理

参考文章科普&#xff5c;一文读懂LCD、LED和OLED 的区别 - 知乎 参考文章透明液晶显示屏的原理&#xff1f; - 知乎 一、LCD LCD是英文Liquid Crystal Display 的简称&#xff0c;指的是液晶显示屏。 主要想介绍下LCD透明屏方案&#xff1a; 所谓LCD透明屏&#xff0c;并…

Postman接口调用api

1.选择类型&#xff0c;输入URL 2.选择Basic Type 3.选择格式类型 文件类型 4.Send发送请求&#xff0c;获得返回

澄海区图书馆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著

澄海区图书馆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著

蛤蟆先生去看心理医生笔记

自我状态 儿童自我状态&#xff1a;行为和感受像个孩子。由童年残留的遗迹搭建而成&#xff0c;包含小时候体验的所有情感&#xff08;儿童的基本情感&#xff09;和随后演变的行为模式。 行为和感受像个孩子。由童年残留的遗迹搭建而成&#xff0c;包含小时候体验的所有情感…