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…

【linux/shell实战案例】linux中变量的使用

目录 一.linux变量声明及定义 二.linux变量使用方法 三.linux变量使用花括号${name}和双引号“$name”的区别 四.linux变量使用单引号$name和双引号“$name”的区别 五.linux变量中使用命令 一.linux变量声明及定义 #!/bin/bash namezhaodabao 等号两边不能有空格变量名…

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;它们在…

深入分析Java中的内存管理与垃圾回收机制

深入分析Java中的内存管理与垃圾回收机制 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨Java中的内存管理与垃圾回收机制&#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 配置远程…

web学习笔记(七十三)微信小程序

目录 1. 微信公众平台和微信开放平台 1.1 微信公众平台&#xff1a; 1.2 微信开放平台&#xff1a; 2.全局配置和局部配置 2.1 全局配置 2.2 页面配置 1. 微信公众平台和微信开放平台 1.1 微信公众平台&#xff1a; 微信公众平台是用于创建和管理公众号和小程序&#x…

C++ 现代教程二

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

Python京东商品评论爬取及可视化

在Python中爬取京东商品评论并进行可视化通常涉及几个关键步骤&#xff1a;使用爬虫库&#xff08;如requests和BeautifulSoup或Selenium&#xff09;来抓取网页数据&#xff0c;使用数据处理库&#xff08;如pandas&#xff09;来整理数据&#xff0c;以及使用数据可视化库&am…

区块链加载解析方法

一.区块链加载解析 对于数据的下载主要包括三种方式&#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;通过不同功能域的集成实现中央计算平台的最终目标。 …

onTouch()与onTouchEvent()的区别

onTouch()和onTouchEvent()是Android中处理触摸事件的两个重要方法。它们用于不同的场景&#xff0c;并在事件分发机制中扮演不同的角色。以下是它们的详细区别和使用方法&#xff1a; onTouch() 方法 定义&#xff1a;onTouch(View v, MotionEvent event)是View.OnTouchList…

Visual Studio 中的键盘快捷方式

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

注解详解系列 - @EnableAspectJAutoProxy:启用AspectJ自动代理

注解简介 在今天的注解详解系列中&#xff0c;我们将探讨EnableAspectJAutoProxy注解。EnableAspectJAutoProxy是Spring框架提供的一个注解&#xff0c;用于启用对AspectJ注解风格的支持&#xff0c;从而允许Spring AOP自动代理基于注解的切面。通过EnableAspectJAutoProxy注解…

心理学|变态心理学健康信息学——变态心理学与健康心理学单科作业题(中科院)

一、单选题(第1-100小题,每题0.5分,共计50分。) 1、变态心理学侧重说明异常心理的( ) 分值0.5分 A、诊断 B、咨询 C、治疗 D、特点 正确答案: D、特点 2、精神分析理论认为本我的活动原则是( ) 分值0.5分 A、现实原则 B、道德原则 C、快乐原则 …

[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 进行模块打包这一系列…