Revit SDK: FindColumns 找到和墙相交的柱子 MeasureHeight 计算天窗到最近楼板的位置

news2024/11/26 16:27:36

前言

本文的主要内容是基于 ReferenceIntersector 的两个个应用。ReferenceIntersector 的主要作用是找到一条与给定射线相交的各个元素。

FindColumns 内容

ReferenceIntersector

namespace Autodesk.Revit.DB
{
    public class ReferenceIntersector : IDisposable
    {
        public ReferenceIntersector(View3D view3d);
        public ReferenceIntersector(ElementFilter filter, FindReferenceTarget targetType, View3D view3d);
        public ReferenceIntersector(ICollection<ElementId> targetElementIds, FindReferenceTarget targetType, View3D view3d);
        public ReferenceIntersector(ElementId targetElementId, FindReferenceTarget targetType, View3D view3d);
        ~ReferenceIntersector();
        public bool FindReferencesInRevitLinks { get; set; }
        public bool IsValidObject { get; }
        public FindReferenceTarget TargetType { get; set; }
        public ElementId ViewId { get; set; }
        public sealed override void Dispose();
        public IList<ReferenceWithContext> Find(XYZ origin, XYZ direction);
        public ReferenceWithContext FindNearest(XYZ origin, XYZ direction);
        public ElementFilter GetFilter();
        public ICollection<ElementId> GetTargetElementIds();
        public void SetFilter(ElementFilter filter);
        public void SetTargetElementIds(ICollection<ElementId> elementIds);
        [HandleProcessCorruptedStateExceptions]
        protected virtual void Dispose(bool A_0);
        protected virtual void ReleaseUnmanagedResources(bool disposing);
    }
}

ReferenceIntersector 的关键点:

  1. 查找某条射线上的元素的接口

    IList<ReferenceWithContext> Find(XYZ origin, XYZ direction)
    ReferenceWithContext FindNearest(XYZ origin, XYZ direction);
    
  2. 可以在构造函数或者通过设置属性的方式设置索引目标类型,FindReferenceTarget

     public enum FindReferenceTarget
     {
         Element = 1,
         Mesh = 2,
         Edge = 4,
         Curve = 8,
         Face = 16,
         All = 31
     }
    
  3. 可以在构造函数或者通过接口自定义过滤器,对可以查找的元素进行过滤。

  4. 可以在构造函数或者通过接口,在查找之前,设置可供查找的元素的几何。

例子效果及主要流程

效果如下图所示,可以找到和墙相交的各个柱子。图中有弧线墙,而接口只支持射线,例子中用多条射线来模拟弧线,从本质上来说不够严谨,仅能作为示例。
在这里插入图片描述

主要流程如下:

在这里插入图片描述

MeasureHeight 内容

计算天窗到最近楼板的位置的逻辑类似:
在这里插入图片描述

结论

两个例子例子可以让用户通过API来处理直线的几何求交问题,可以胜任一些简单的case,对于复杂的情况还有待观察。

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

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

相关文章

trollcave靶场

配置 第一步&#xff1a;启动靶机时按下 shift 键&#xff0c; 进入以下界面 第二步&#xff1a;选择第二个选项&#xff0c;然后按下 e 键&#xff0c;进入编辑界面 将这里的ro修改为rw single init/bin/bash&#xff0c;然后按ctrlx&#xff0c;进入一个相当于控制台的界面…

用于构建生成式 AI 应用程序备忘单的最佳 Python 工具

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可二次编辑器的3D应用场景 新一代的声音 KDnuggets发布了一份富有洞察力的新备忘单&#xff0c;重点介绍了用于构建生成AI应用程序的顶级Python库。 毫无疑问&#xff0c;读者都知道&#xff0c;生成式人工智能是目前数据科…

小红书运营 变现方法总结(精)

大家好&#xff0c;我是网媒智星&#xff0c;今天跟大家分享一下小红书运营方面的知识&#xff0c;怎样利用小红书变现&#xff1f;全篇倾情干货输出&#xff0c;认真学习&#xff0c;保证您收获多多。 首先&#xff0c;让我们来分析一下小红书平台的优势。关于卖东西&#xff…

政务中心站至政务中心东站右线盾构本月始发

本报记者 赵鹏 实习记者 池阳 通讯员 董浩程 立秋已过&#xff0c;平谷线“瓜熟蒂落”的日子指日可待。在左线隧道刚刚顺利贯通后&#xff0c;平谷线政务中心站至政务中心东站区间右线隧道已展开盾构组装施工&#xff0c;右线盾构即将于本月内始发&#xff0c;被誉为“地下蛟龙…

游戏类APP如何提升用户的活跃度?

移动游戏行业&#xff0c;追求使用率的营销能发挥强大的功效&#xff0c;可帮助减少玩家流失、追回流失的玩家、提高活跃玩家所带来的价值以及增加付费玩家贡献的收入。 一、了解玩家需求 想要提升玩家的活跃&#xff0c;首先要知道&#xff0c;玩家喜欢玩哪些平台的游戏&…

LLM-2-ChatGLM2

1 训练 1.1 训练参数配置理解 训练的输入长度source的长度target的长度 –pre_seq_len&#xff1a;pre_seq_len的取值范围一般是1到512&#xff0c;它表示自然语言指令的长度&#xff0c;即输入序列中的前pre_seq_len个token&#xff0c;具体的值需要根据自然语言指令的长度…

最新Win10离线安装.NET Framework 3.5的方法(附离线包2022/3/22)

win10系统安装软件时&#xff0c;可能需要.net framework3.5的运行环境&#xff0c;当我们安装某些软件的时候会提示“你的电脑上的应用需要使用以下Windows功能:.NET Framework 3.5(包括.NET 2.0和3.0)。如果系统默认的是4.0以上的版本&#xff0c;当软件需要.net framework3.…

基于Java+SpringBoot+vue前后端分离疫情下图书馆管理系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

OpenZFS 2.2 发布 RC3,支持 Linux 6.4

导读之前的 OpenZFS 2.2 候选版本已致力于实现与 Linux 6.4 内核的兼容性&#xff0c;而在 2.2-rc3 中&#xff0c;Linux 6.4 支持的元跟踪器已标记为已完成。 OpenZFS 2.2 发布了第 3 个 RC 版本。 之前的 OpenZFS 2.2 候选版本已致力于实现与 Linux 6.4 内核的兼容性&#x…

手把手教你 Vue3 + vite + Echarts 5 +TS 绘制中国地图,看完就会

废话不多说&#xff0c;看图&#xff01; 本篇文章介绍 Vue3 vite TS 项目内使用 Echarts 5 绘制中国地图&#xff0c;标记分布点&#xff01;之前没有接触过 Echarts 的&#xff0c;可以先去官方示例看看&#xff0c;里面图形特别齐全。但是官方文档看着费劲的&#xff0c;太…

Calcite使用外部自定义函数

在calcite中可以通过自定义函数来实现丰富的算子,但是往往需要将自定义的函数包与Calcite集成在一起&#xff0c;才能使用相应的算子功能&#xff0c;由于业务需求多变&#xff0c;函数包可能面临频繁的更改&#xff0c;如果需要更改生效&#xff0c;则需要将Calcite的代码重新…

DatenLord X Segmentfault直播预告 l CURP协议的工业化实践

CURP协议 传统单数据中心解决方案无法满足跨数据中心的场景对性能和一致性的需求。DatenLord推出开源的分布式KV存储Xline&#xff0c;针对多数据中心场景&#xff0c;实现数据的高性能跨云、跨数据中心共享访问&#xff0c;并且保证数据的一致性&#xff0c;方便业务系统实现…

量子论公众号是如何半年做到10000粉的?

有不少人问我&#xff0c;“量子论”公众号是怎么运营的&#xff1f;“量子论”公众号是如何涨到1万粉的&#xff1f; 用这篇文章作为参考答案吧。 我是2月份开始落笔写这个号的&#xff0c;那个时候我已经在玩ChatGPT了。 随着AI火出圈&#xff0c;我打算分享一些ChatGPT使用经…

【LeetCode每日一题】——628.三个数的最大乘积

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 排序 二【题目难度】 简单 三【题目编号】 628.三个数的最大乘积 四【题目描述】 给你一个…

2023最新版本Activiti7系列-源码篇-初始化过程

源码分析 1.设计模式 1.1 命令模式 https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89115420 1.2 责任链模式 https://dpb-bobokaoya-sm.blog.csdn.net/article/details/89077040 2.初始化过程 2.1 入口代码 我们在SpringBoot项目中来看Activiti7的源码。首先要…

DTCC 2023即将启幕 明天见!

8月16日-18日&#xff0c;由IT168联合旗下ITPUB、ChinaUnix两大技术社区主办的第14届中国数据库技术大会&#xff08;DTCC2023&#xff09;将在北京举行 作为国内云原生数据仓库代表厂商&#xff0c;酷克数据受邀亮相DTCC 2023&#xff0c;与广大数据库领域从业人士共同分享云…

财务人员学python有意义吗,财务会python好找工作吗

这篇文章主要介绍了财务方面python需要什么水平&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 财务是一个比较特殊的工作岗位&#xff0c;每天需要接触各种各样的数据&#x…

【数理知识】三维空间旋转矩阵的欧拉角表示法,四元数表示法,两者之间的转换,Matlab 代码实现

序号内容1【数理知识】自由度 degree of freedom 及自由度的计算方法2【数理知识】刚体 rigid body 及刚体的运动3【数理知识】刚体基本运动&#xff0c;平动&#xff0c;转动4【数理知识】向量数乘&#xff0c;内积&#xff0c;外积&#xff0c;matlab代码实现5【数理知识】最…

SpringBoot复习:(52)不再需要使用@EnableTransactionManagement的原因

在Spring项目中&#xff0c;要用事务&#xff0c;需要EnableTransactionManagement注解加Transactional注解。而在SpringBoot项目&#xff0c;有事务的自动配置类TransactionAutoConfiguration,代码如下&#xff1a; 可以在其内部类EnableTransactionManagementConfiguratio…

06 - 文件的差异和恢复

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. 文件的差异2. 文件的恢复 工作区&#xff1a;本地进行修改的code 暂存区&#xff1a;执行了 git add <filename> 命令之后 版本库&#xff1a;执行了 git commit <...>…