C# Revit二次开发基础/核心编程--- 元素Element(基础、编辑)

2023-11-17

 

一、本节课程


C# Revit二次开发基础/核心编程--- 元素Element(基础、编辑)

二、本节要讲解的知识点

    元素Element的基础概念、如何编辑元素

  • 具体内容
  1. 元素Element基础

元素在Revit里面尤其重要,用户能看见的大多数对象都是元素,比如墙、族、族类型、族实例、标高、轴网、视图等。Revit中的大多数类都是继承自元素。元素是可序列化的,即是可以保存到RVT项目文件中。

(1)相关类图

  1. 族、族实例相关

  1. 模型元素相关

  1. 设置相关

  1. 二维元素

  1. 其他元素

  1. 如何获取元素

1)通过ID获取元素: 必须要知道ID才可以获取到元素。

//============代码片段3-1通过Id获取元素============

ElementId levelId = new ElementId(766598);

Element element = RevitDoc.GetElement(levelId);

Level level = element as Level;

if(level != null)

{

   //使用level

}

 

2)通过过滤器来获取元素(推荐使用)

//============代码片段3-2 过滤所有外墙============

FilteredElementCollector filteredElements = new FilteredElementCollector(RevitDoc);

ElementClassFilter classFilter = new ElementClassFilter(typeof(Wall));

filteredElements = filteredElements.WherePasses(classFilter);

foreach (Wall wall in filteredElements)

{

   // 获取墙类型“功能”参数,它用来指示墙是否为外墙。

   var functionParameter = wall.WallType.get_Parameter(BuiltInParameter.FUNCTION_PARAM);

   if (functionParameter != null && functionParameter.StorageType == StorageType.Integer)

   {

      if (functionParameter.AsInteger() == (int)WallFunction.Exterior)

      {

         // 使用wall

      }

   }

}

  1. 通过选择

 

//============代码片段3-3 获取被选元素============

[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]

public class MyExternalCommand : Autodesk.Revit.UI.IExternalCommand

{

   public Autodesk.Revit.UI.Result Execute(Autodesk.Revit.UI.ExternalCommandData commandData,

      ref string message, ElementSet elements)

   {

      if (commandData.Application.ActiveUIDocument != null)

      {

         foreach (Element selected in

            commandData.Application.ActiveUIDocument.Selection.Elements)

         {

            Wall wall = selected as Wall;

            if(wall != null)

            {

               //使用wall

            }

         }

      }

      return Autodesk.Revit.UI.Result.Succeeded;

   }

}

  1. 获取和修改元素参数

每个元素都有参数,Element.Parameters获取到所有的参数,然后遍历找到需要的参数。也可以通过Element. get_Paramete(参数)来取得到单个参数,括号里面的“参数”,有四种选择:string参数名字、BuiltInParameter参数枚举、Definition参数定义和Guid参数的guid。

//============代码片段3-4 获取“长度”参数============

ParameterSet parameters = element.Parameters;

foreach (Parameter parameter in parameters)

{

   <

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# Revit二次开发基础/核心编程--- 元素Element(基础、编辑) 的相关文章

  • 如何使用 Qtimer 添加 1 秒延迟

    我目前有一个方法如下 void SomeMethod int a Delay for one sec timer gt start 1000 After one sec SomeOtherFunction a 这个方法实际上是一个附加到信号
  • 类型转换 sockaddr 结构

    我正在尝试学习网络编程 并在这个过程中学习C 我对结构感到困惑sockaddr这是一个通用地址 并且sockaddr in 我的书里是这么说的 因此 我们可以填写 sockaddr in 的字段 然后强制转换 a 指向 它指向 指向 soc
  • 如何使用movntdqa避免缓存污染?

    我正在尝试编写一个 memcpy 函数 该函数不会将源内存加载到 CPU 缓存中 目的是避免缓存污染 下面的 memcpy 函数可以工作 但会像标准 memcpy 一样污染缓存 我正在使用带有 Visual C 2008 Express 的
  • 如何将 pem 公钥转换为 openssl RSA* 结构

    假设我必须像这样公开 pem 密钥 BEGIN PUBLIC KEY MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk O3Kwc4qsEnSZp TR fQi
  • 将数组从 C# 编组到 C++ 并返回:PInvokeStackImbalance

    我有一个 C 函数 我想从 C 访问它 问题是我不断收到 PInvokeStackImbalance 异常 但我不知道为什么 当检查异常被关闭时 一切都运行良好并且符合预期 我的 C 函数的签名是 extern C double solve
  • 线程安全的get(访问器方法)

    我目前正在使用以下代码对变量进行线程安全访问 int gnVariable void getVariableValue int pnValue acquireLock Acquires the protection mechanism pn
  • 如何使用Task.WhenAny并实现重试

    我有一个创建多个基于 I O 的任务的解决方案 我正在使用Task WhenAny 来管理这些任务 但通常许多任务会由于网络问题或请求限制等原因而失败 我似乎找不到一个解决方案 使我能够在使用时成功重试失败的任务Task WhenAny 方
  • 是否可以用 C# 为 Android 编写应用程序?

    我们都知道Android运行Dalvik VM程序 通常开发人员用 Java 编写程序并将其编译为 Dalvik 字节码 我想知道是否有可能创建一个可以接受 C 代码并将其编译为 Dalvik 字节码的编译器 嗯 这是一种选择 或者您可以在
  • C++ 克隆惯用语中协变返回类型的用处?

    通常的克隆习惯使用协变返回类型 struct Base virtual Base clone struct Derived public Base Derived clone 我读过一些内容 大意是协变返回类型是 C 后来添加的 较旧的编译
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L
  • NHibernate 中具有不同类型答案的问题

    我正在尝试找到一个问卷问题的简洁解决方案 假设我有一个Questionnaire类有一个集合Answers e g public class Questionnaire public virtual ISet
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • 如何使用 Caliburn.Micro MVVM 将焦点设置到控件

    我有一个表单 我想在发生某些用户操作时将焦点设置到文本框 我知道 MVVM 的处理方式是绑定到 VM 属性 但是 TextBox 没有允许这种情况发生的属性 从虚拟机设置焦点的最佳方法是什么 我创建了一个 IResult 实现 可以很好地实
  • 允许 .NET WebApi 忽略 DOCTYPE 声明

    我正在尝试通过 WebApi 方法将 XML 反序列化为对象 我有以下课程 XmlRoot IsNullable false public class MyObject XmlElement Name public string Name
  • 为什么 MISRA:2012 需要函数原型?

    我想知道为什么 MISRA 2012 需要函数原型 在下面的示例中 这两个原型并不是真正必要的 include
  • 如何在 Xamarin.Mac 中执行终端命令并读入其输出

    我们正在编写一个 Xamarin Mac 应用程序 我们需要执行像 uptime 这样的命令 并将其输出读取到应用程序中进行解析 这可以做到吗 在 Swift 和 Objective C 中都有 NTask 但我似乎无法在 C 中找到任何示
  • 如何带参数调用外部程序?

    我想在我的代码中调用一个 Windows 程序 并使用代码本身确定的参数 我不想调用外部函数或方法 而是调用 WinXP 环境中的实际 exe 或批处理 脚本文件 C 或 C 将是首选语言 但如果使用任何其他语言更容易完成此操作 请告诉我
  • 父窗体中的居中消息框[重复]

    这个问题在这里已经有答案了 有没有一种简单的方法可以在 net 2 0中将MessageBox居中于父窗体中 我在 C 中确实需要这个并发现中心消息框 C http bytes com topic c sharp answers 26712
  • 组合框由于某种原因被链接

    我有以下代码来填充 3 个组合框 private void PopulateDDLs SqlConnection connection SqlCommand command SqlDataReader reader DataTable dt
  • 如果未返回,则在一段时间后终止线程

    我有一个线程从网络或串行端口获取一些数据 如果 5 秒内没有收到数据 则线程必须终止 或返回 false 换句话说 如果线程运行时间超过 5 秒 则必须停止 我用 C 编写 但任何 NET 语言都可以 有两种方法 1 封装超时 从网络或串行

随机推荐

  • 2014年总结

    总结的意义在于认清未来的方向 2014年工作 1 ETL Data Warehouse Data Mining 数据挖掘内容很多 如何与企业需求相结合是重点 2 简单的工作流系统开发 3 体会ArgGIS在物流运输企业中的应用 无论云计算以
  • 色彩空间与像素格式

    转载来自 https www cnblogs com leisure chn p 10290575 html 1 色彩空间基础 颜色是不同波长的光对人眼刺激产生的色彩感觉 色彩空间 Color Space 是颜色的数学表示 根据不同的表示方
  • PSO优化LSTM

    有两个py文件 PSO 1和LSTM 1 在资源那里下载 有数据 环境 python TF2 优化的参数有 神隐藏神经元个数 dropout比率 batch size 这个可以根据自己的意愿改 规定上限和下限 UP 64 0 14 32 D
  • java跨时区问题【相差8小时】

    情况一 后端传递给前端 前端展示到页面中的时间与系统时间相差8小时 解决方法 在该类的日期属性字段上加上注解 JsonFormat pattern yyyy MM dd HH mm ss timezone GMT 8 情况二 展示数据时间与
  • 解决Chrome, NET::ERR_CERT_AUTHORITY_INVALID

    文章目录 前言 解决方法一 解决方法二 总结 前言 解决方法一 首先清理一下缓存 三个点 gt 设置 gt 清除浏览数据 即可 如果还解决不了 因为Chrome是默认使用HSTS传输 严格的http传输方式 解决方法二 在Chrome浏览框
  • C++如何切割String对象

    C 如何切割String对象 C 相较于Java Python 并没有提供的字符串分割的函数split 因此需要自己进行编写 在实际的工作中这一功能会被经常使用 所以进行简单的记录一下 核心函数 代码实现的函数是调用String库中的fin
  • 数学:矩阵求导

    矩阵Y对标量x求导 Y y ij dY dx dy ji dx 求导后 Y变转置了 标量y对矩阵X求导 dy dX Dy Dx ij 求导后 不需要转置 重要结论 y U XV u i x ij v j 于是 dy dX u i v j U
  • ACM-子串(字符串处理)

    问题描述 有一些由英文字符组成的大小写敏感的字符串 请写一个程序 找到一个最长的字符串 x 使得 对于已经给出的字符串中的任意一个 y x 或者是 y 的子串 或者 x 中的字符反序之后得到的新字符串是 y 的子串 输入数据 输入 输入的第
  • vue使用高德地图导航路线失败,获取驾车数据失败:INVALID_USER_SCODE(解决方法)

    高德地图使用路线导航 最近做大屏项目 里面有地图定位 路线导航等方面的功能 在做路线定位是一直都是获取不到导航的路线 经过好长时间的百度看高德api文档终于找到解决方法 解决方法 添加高德地图安全密钥 添加高德安全密钥 安全密钥是和key一
  • 计算机毕业设计-基于SSM的网上书店管理系统

    项目背景 本网上系统是针对目前网上的实际需求 从实际工作出发 对过去的网上系统存在的问题进行分析 结合计算机系统的结构 概念 模型 原理 方法 在计算机各种优势的情况下 采用目前最流行的B S结构和java中流行的ssm框架和eclipse
  • jq ajax fail,javascript - jQuery.ajax fail handler not called - Stack Overflow

    Deprecation Notice The jqXHR success jqXHR error and jqXHR complete callbacks are removed as of jQuery 3 0 You can use j
  • 【Linux】-关于调试器gdb的介绍和使用

    作者 小树苗渴望变成参天大树 作者宣言 认真写好每一篇博客 作者gitee gitee 如 果 你 喜 欢 作 者 的 文 章 就 给 作 者 点 点 关 注 吧 文章目录 前言 一 Linux中的debug和release 二 gdb的使
  • Java作用域

    try catch里面的是局部变量 java变量的作用域分为四个级别 类级 对象实例级 方法级 块级 块级变量就是定义在一个块 内部的变量都是局部变量 try 中try后面的 就是一个块级作用域 所以内部定义的变量是局部变量 在Java中
  • Android自定义导览地图组件(一)

    丨版权说明 Android自定义导览地图组件 一 于当前CSDN博客和乘月网属同一原创 转载请说明出处 谢谢 鉴于Android关于自定义导览地图的相关资料以及开源项目贫乏 应Android同行几位小伙伴们的建议 决定写下这篇文章分享给大家
  • 团队管理的一些总结

    这将近三年 我在公司经历了很多事情 在学习中成长 很多时候我都在总结每个步骤和过程我取得的成绩和失败 如果说我们需要一个有效性高的团队 需要一个能够创造奇迹的团队 那么我觉得如下这些就是我经历了这么多得到的启示 1 必须明确目标 当然这个目
  • CANopen基本概念学习笔记

    参考文献 Kinco FD CD3系列伺服驱动器使用手册20210125 CANopen协议讲解课件 信捷 CANopen 通讯用户手册 基于CANopen协议的网络主控制器的设计 前置文章 CAN总线技术基本概念简述 0 CANopen简
  • 【分布式ID】理解Snowflake算法的实现原理

    1 概述 转载 冷饭新炒 理解Snowflake算法的实现原理 我上次也看了一个视频讲解 分布式ID 键高并发 分布式 全局唯一 ID 雪花算法 snowflake 2 前提 Snowflake 雪花 是Twitter开源的高性能ID生成算
  • idea 的使用与快捷键

    前面写过一篇IDEA的入门级文章 但是只学会了那些配置啊什么的并不能提高我们的开发效率 事实上 如果你IDEA用的足够熟练 就可以把鼠标扔了 附入门级教程传送门 http blog csdn net qq 31655965 article
  • 使用两个栈(stack)实现一个队列(queue)

    题目 已知下面Stack类及其3个方法Push Pop和Count 请用2个Stack实现Queue类的入队 Enqueue 出队 Dequeue 方法 class Stack public void Push int x Push an
  • C# Revit二次开发基础/核心编程--- 元素Element(基础、编辑)

    一 本节课程 C Revit二次开发基础 核心编程 元素Element 基础 编辑 二 本节要讲解的知识点 元素Element的基础概念 如何编辑元素 具体内容 元素Element基础 元素在Revit里面尤其重要 用户能看见的大多数对象都