12. Revit API: Document、Element

12. Revit API: Document、Element

前言

还是先讲一下Document吧,不然Selection不好讲,那涉及到了挺多东西的,比元素(Element)和各类Filter,这些都与Document有关,所以先简单讲一下这个。


一、Document

在Revit中,名叫Document的类有两个,一个是在DB命名空间下,另一个在Creation命名空间下(前面讲过还有个Application)。这一篇我们讲的是DB下的Document。

UI提供到DB的入口,前面的Demo里早已出现了很多次

 UIApplication uiApp = commandData.Application;UIDocument uiDoc = uiApp.ActiveUIDocument;Document doc = uiDoc.Document;

这样,我就就获取到了所需要的Document。

1.1. Document的作用

我们知道Document就是Revit中打开的那些.rft.rfa文件。View就是打开后的中各种三维、平面视图。

既然就是项目文件,那么Document自然承担着对项目增删改查的工作,或者说增删改查都是在Document上进行。

  • ,所以要提供创建操作入口。在模型上,就是Creation命名空间下的那些类,和DB各专业中定义的类;在视图上,就是View相关的类。

  • ,便是删。当然这只是直观的体现,Revit定义下的元素(Element)之间是存在各种关联的。

  • ,可以是对项目文档的改,也可以是对族文档的,同样用到上面那些类。

  • ,应该是我们最常用到的。选择,对应UI.Selection;范围查找,对应Filter

可以看到,大部分动作的执行都被细分化了,由其它类承担。

回到Document类本身,其本身的功能就比较有限了,可以说是只“保留”了与文档有关的部分。

1.2. Document类的成员

Document类成员比较多,按功能来划分来看的花还是比较简单的,部分我没有用到的,就不写了,还是需要自己去看看的。

1.2.1. 属性
属性描述
ActiveProjectLocation检索当前活动的项目位置,可能有用,插眼
ActiveView
Application
活动的View
Create
FamilyCreate
Creation下的实例,里面提供了一些创建模型相关的方法,后面专门讲
FamilyManager打开一个族管理器实例,调整族参数(Parameter)时很有用,后面专门讲
DisplayUnitSystem当前的显示单位,比如毫米,这里涉及到单位转换(Unit),后面专门讲
IsFamilyDocument
IsModifiable
当前文档是否为族文档,在修改族时会用到
当前是否可以进行修改。这个与事件(Transaction)有关,后面专门讲
其它关于项目的信息

还是需要自己看看,扫一眼也行,虽然不一定会用到,但也要知道有些什么

比如还可以拿到项目信息(ProjectInformation),就是下面这个,在出分析文档时可能用到。

在这里插入图片描述

1.2.2. 方法

这里就不列表格了。Docuemnt方法总共分为一下几大类:

  1. 特定格式文件的导入/导出/链接,分为Import,Export,Link三种,有很多重载。
  2. 文档本身的关闭、保存。
  3. 关于项目的一些信息检索或调整,如设置显示单位,设置位置。
  4. 对文档中元素(Element)的修改操作。
    • 三种线的转换:模型线(ModelCurve)、详图线(DetailCurve)、符号线(SymbolicCurve)。关于区别,可以参考这个视频
    • 删除元素:Delete(..)
    • 查找元素:GetElement(..)

方法大概就这些了,4是必然要用到的,其它的看需要吧。

1.2.3. 事件

Document上的事件,就文档关闭/保存、文档/视图打印。

那文档变化事件呢?哈哈,它在Application上,很好理解,由更上一级的来监听文档变化,那只有Application了。


二、Element

Element是Revit Document的主要组成部分,是一系列可操作交互实体基类。每个Element都有一个ElementId,其有一个Int类型的值,且不重复。
从API文档中,可以看到Element有极多的子类,所幸的是我们暂时不需要去了解它们,因为Revit API毕竟是太多了,我们按需使用即可。
12.Element.png

2.1. Element常用类成员

我发现Element上有许多我没有了解的东西,这里便不多讲。

此处内容有限,请去查看API文档

Element上有几个比较有用的东西:

  1. IdUniqueId:元素ID,唯一。

    前者在文档中易变,不稳定。后者样式是Guid ,稳定不变,可用于外部存储。

  2. Location:元素的位置。

    可以获取到的值有3种:nullLocationCurveLocationPoint
    这里解释一下:
    ①当元素是可以由线表示的,如梁、直管道,获取到的就是curve,可以拿到两个点操作点。
    ②当元素是那种放上去就行了的,基本就是用点表示位置,这类占了大部分。
    ③部分模型是没有位置信息的,它们没有位置的概念。如DirectShape,或者是体量族?我接触到的一些体量族是没有位置信息的。

  3. Parameters:元素的参数,很有用。

    元素的参数是很有用的,Revitbi’j

  4. Geometry:元素的几何结构。

    所谓几何结构,在Revit中可以简单的理解为就是Solid,就是GeometryObject派生出的那些。
    当然,Geometry还包含的材质信息,这个我目前还没有使用,不过后面会写。
    12.GeometryObject.png

  5. BoundingBox:元素的包围盒,包围盒是轴对齐的(AABB)。

    包围盒这样直接获取的可能不是预期的(刚刚包裹可见的模型),关于如何获取刚好包裹住模型的包围盒,请看Revit获取元素Solid和计算包围盒。

总结

这篇几乎没有写运用相关的东西,大部分API文档上直接摘的,还远不够详细,还是需要去看文档的。
上面新提到了Parameter、GeometryObject等,后面会详细得写一写。
至于下一篇,先写过滤器(Filter),然后接着写选择器(Selection),暂定这样吧。

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

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

相关文章

Chart.js四个示例

示例代码在图片后面&#xff0c;点赞加关注&#xff0c;谢谢 条形图 雷达图 折线图 圆环图 完整例子代码 具体代码在干什么看粗体加重的注释 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <me…

C++精解【10】

文章目录 读写文件概述example csv读文件读取每个字段读取机器学习数据库iris constexpr函数GMP大整数codeblock环境配置数据类型函数类 EigenminCoeff 和maxCoeffArray类 读写文件 概述 fstream typedef basic_fstream<char, char_traits<char>> fstream;此类型…

【大数据】什么是数据融合(Data Fusion)?

目录 一、数据融合的定义 二、数据融合的类型 三、数据融合的挑战 四、数据融合的方法 五、数据融合的关键环节 1.数据质量监控指标的制定和跟踪 2.异常检测和处理机制 3.实时数据监测与反馈机制 4.协同合作与知识共享 一、数据融合的定义 数据融合&#xff08;Data Fusion&…

STM32基本定时器、通用定时器、高级定时器区别

一.STM32基本定时器、通用定时器、高级定时器区别 STM32系列微控制器中的定时器资源分为基本定时器&#xff08;Basic Timer&#xff09;、通用定时器&#xff08;General Purpose Timer&#xff09;和高级定时器&#xff08;Advanced Timer&#xff09;三类&#xff0c;它们在…

PyCharm远程开发配置(2024以下版本)

目录 PyCharm远程开发配置 1、清理远程环境 1.1 点击Setting 1.2 进入Interpreter 1.3 删除远程环境 1.4 删除SSH 2、连接远程环境 2.1 点击Close Project 2.2 点击New Project 2.3 项目路径设置 2.4 SSH配置 2.5 选择python3解释器在远程环境的位置 2.6 配置远程…

C++ 现代教程二

线程支持库 - C中文 - API参考文档 GitHub - microsoft/GSL: Guidelines Support Library Fluent C&#xff1a;奇异递归模板模式&#xff08;CRTP&#xff09; - 简书 #include <thread> #include <iostream> #include <unordered_map> #include <futu…

区块链加载解析方法

一.区块链加载解析 对于数据的下载主要包括三种方式&#xff1a; 1.实现比特币网络协议&#xff0c;通过该协议和其他比特币全节点建立联系&#xff0c;然后同步区块数据。 2.通过比特币节点提供的API服务下载区块链数据。 3.通过blickchain.com提供的rest服务下载区块数据…

《后端程序猿 · Caffeine 本地缓存》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻一周&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

EE架构大跃进:特斯拉、小鹏引领舱驾融合,从域控融合走向单SoC

作者 |肖恩 编辑 |德新 智能汽车发展到今天&#xff0c;整车电气架构已经从分布式架构逐渐迈向中央集成式架构&#xff0c;传统的小控制器被集成到按功能划分的大域控里&#xff0c;下一个阶段将是跨域的融合&#xff0c;通过不同功能域的集成实现中央计算平台的最终目标。 …

Visual Studio 中的键盘快捷方式

1. Visual Studio 中的键盘快捷方式 1.1. 可打印快捷方式备忘单 1.2. Visual Studio 的常用键盘快捷方式 本部分中的所有快捷方式都将全局应用&#xff08;除非另有指定&#xff09;。 “全局”上下文表示该快捷方式适用于 Visual Studio 中的任何工具窗口。 生成&#xff1…

[leetcode hot 150]第四百五十二题,用最少数量的箭引爆气球

题目&#xff1a; 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。…

[leetcode hot 150]第三题,无重复字符的最长子串

题目&#xff1a; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串的长度。 可以使用"滑动窗口"的方法来解决这个问题。基本思路如下: 使用两个指针(start和end)来定义一个窗口移动end指针来扩大窗口,直到遇到重复字符如果遇到重复字符,移动s…

Vite: 插件流水线之核心编译能力

概述 Vite 在开发阶段实现了一个按需加载的服务器&#xff0c;每一个文件请求进来都会经历一系列的编译流程&#xff0c;然后 Vite 会将编译结果响应给浏览器。在生产环境下&#xff0c;Vite 同样会执行一系列编译过程&#xff0c;将编译结果交给 Rollup 进行模块打包这一系列…

什么是 URL ?

统一资源定位符&#xff08;URL&#xff09;是一个字符串&#xff0c;它指定了一个资源在互联网上的位置以及如何访问它。URL 是由几部分组成的&#xff0c;每部分都有其特定的作用&#xff1a; 协议/方案&#xff1a;这是 URL 的开头部分&#xff0c;表明了用于访问资源的协议…

antfu/ni 在 Windows 下的安装

问题 全局安装 ni 之后&#xff0c;第一次使用会有这个问题 解决 在 powershell 中输入 Remove-Item Alias:ni -Force -ErrorAction Ignore之后再次运行 ni Windows 11 下的 Powershell 环境配置 可以参考 https://github.com/antfu-collective/ni?tabreadme-ov-file#how …

Java---Mybatis详解二

雄鹰展翅凌空飞&#xff0c; 大江奔流不回头。 壮志未酬心未老&#xff0c; 豪情万丈任遨游。 巍巍高山攀顶峰&#xff0c; 滔滔黄河入海流。 风云变幻凭君舞&#xff0c; 踏遍天涯尽逍遥。 目录 一&#xff0c;环境准备 二&#xff0c;删除 三&#xff0c;删除(预编译SQL) 为什…

Celery入门教程

一.Celery介绍 1.Celery架构 Celery架构基于可插拔组件&#xff08;pluggable components&#xff09;和根据选择的消息传输&#xff08;代理&#xff09;(message transport(broker))协议实现的消息交换机制。 2.Celery模块 &#xff08;1&#xff09;任务模块 Task 包含异…

2024中国西安科博会暨硬科技产业博览会11月召开

2024第18届中国西安国际科学技术产业博览会暨硬科技产业博览会 时间&#xff1a;2024年11月3日-5日 地点&#xff1a;西安国际会展中心 主办单位&#xff1a;中国国际科学技术合作协会 陕西省科技资源统筹中心 协办单位&#xff1a;西安市科学技术协会 西安市中小企业协会、…

昇思25天学习打卡营第3天|yulang

今天主要学习03-张量Tensor&#xff0c;主要包含了处理创建张量、张量的属性、张量索引和张量运算&#xff0c;稀疏张量&#xff0c;有点看不太懂&#xff0c;感觉要开始入门到放弃了&#xff1f;张量在构建和训练深度学习模型中的实际应用&#xff0c;如卷积神经网络。 张量&a…

Django学习第三天

python manage.py runserver 使用以上的命令启动项目 实现新建用户数据功能 views.py文件代码 from django.shortcuts import render, redirect from app01 import models# Create your views here. def depart_list(request):""" 部门列表 ""&qu…