21. Revit API: 几何对象(二)- Curve

上篇讲了Revit几何对象的类层次结构,讲了几何元素和几何实例,简单提到了Solid。

这一篇呢,就从构成Solid的边讲起。


一、Edge(边)

Edge在Revit中就是用来表示边的,并且在各种表示几何结构的类中串门。

前面说,Solid是由Edge和Face组成的。从Solid上拿到的是Edge的集合EdgeArray

P.S. 看到这个EdgeArray,就去到app上看看能不能创建,发现有CurveArray,没有这个。

行吧,没有就没有,老老实实new一个吧。

Edge简单理解就是套了层壳的Curve。其上的大部分方法、属性和Curve是一样的。

当然了,由于边是“具体”的,线是“逻辑”的,所以边上有个别与面相关的方法这些就都不展开了。

var curve = edge.AsCurve(); // 获取描述Edge的曲线

二、Curve

Curve就是曲线,各种线(6类)的基类。

Curve 能做啥?

2.1. 曲线的作用

  1. 曲线之间的关系
    a. 两条曲线的相交
    b. 两条曲线之间最短距离的点
  2. 点与曲线的关系
    a. 点是否在曲线上
    b. 点在曲线上的投影
  3. 曲线自身
    a. 获取曲线上某处的点坐标
    b. 曲线细分,点集化
    c. 长度、是否循环、是否有界
    d. 样式
  4. 曲线的创建
    a. 翻转
    b. Transform变换
    c. 偏移

有3个重点:① 曲线上点的获取,② 曲线的样式设置,③ 曲线的偏移

样式后面专门介绍。

2.2. 偏移原理

Curve上有一个CreateOffset(..)方法,用于创建一个偏移后的曲线。

// offsetDist:距离
// referenceVector:方向
public Curve CreateOffset(double offsetDist,XYZ referenceVector)

之前有写过一篇关于CurveLoop的笔记。有讲Curveloop的偏移,就是对里面每个Curve进行偏移。

偏移方向为:线的切向量 与 指定方向向量 的 叉乘 的方向。

所以:

  • 切向量与指定方向向量同向时,偏移为0。
  • 平移操作,使用CreateTransformed(..)代替,传入平移变换矩阵。

2.3. 曲线参数解释

许多几何库的曲线都有这么个东西:曲线的参数化值(the value of the parameter )。

当把曲线看作由一个函数定义,拿函数中有变量$ u ,通过改变 ,通过改变 ,通过改变 u $,就能得到曲线上不同位置的点。

这个值可以是“标准化”的,即值在区间[0,1]内。也可以是任意的。

有界的曲线,才能获取端点

参数的起始值可能是任何值,这是比较奇怪的地方,它是由Revit决定的。通过函数GetEndParameter(0/1)获取。

var startParameter = curve.GetEndParameter(0);
var endParameter = curve.GetEndParameter(1);
var length = endParameter - startParameter; //  curve.ApproximateLength;
// 起点与重点的参数差,正好是曲线的长度(未标准化)

那么,可以这样获取曲线上的点:

 // 获取 曲线的中间点var center = curve.Evaluate(0.5, true);  // 标准化参数// 获取 离曲线起点 1/2 长度的点var center2 = curve.Evaluate(startParameter + length / 2, false);  // 原始参数

原始参数和标准化参数之间可以相互转换。

虽然了解了这些后,我们可以自己写一个转换方法,但Curve上已经提供了。

var rawParameter = curve.ComputeRawParameter(0.5);  // == startParameter + length / 2
var normalizedParameter = curve.ComputeNormalizedParameter(startParameter + length / 2);  // 0.5

Curve 上还有个比较有用的方法ComputeDerivatives(..),它计算后返回一个Transform类型的结果。

  • transform.Origin:点,相当于Evaluate(…)
  • transform.BaseX:切向量(一阶导)
  • transform.BaseY:二阶导
  • transform.BaseZ:双法向量(切向量 x 法向量)

三、Curve 派生类

3.1. Line(直线)

由 起点、方向 定义。

可由两点构造有界直线,或起点+方向构造无界直线。

3.2. Arc(圆弧)

由 中心、半径,法向、X向、Y向 定义。

后面三个,用来确定坐标系。

但有点奇怪的是,看不到圆弧转过的弧度(没有弧度属性),这个需要通过计算才能得到。

emm…奇怪。

// 计算圆弧的弧度
var dir1 = arc.Evaluate(0, true) - arc.Center;  // 圆心到弧起点
var dir2 = arc.Evaluate(1, true) - arc.Center;  // 圆心到弧终点
var red = Vector2.a

3.3. Ellipse(椭圆)

由 中心、X半径、Y半径,法向,X向,Y向 定义。

后三个,依旧是确定坐标系。

当X半径与Y半径相等时,就是一个圆了。

3.4. CylindricalHelix(螺旋线)

弹簧玩过没有,那就是个CylindricalHelix。

这里是Wiki,或者看这里。

我就跳过了嗷,太菜了,看不懂。

3.5. HermiteSpline 和 NurbSpline

“叮又叮不懂,鞋又鞋不废”.jpg

用倒是直接用,没毛病。·

至于其函数定义,实现方式,以后再看吧。插眼。


四、总结

这篇是在很久之前写的,后面还写了篇关于IUpdater 的,都没有发出来。

Revit没有在看了,最近在看SolidWorks,然后看着也烦,就写了几何对象(三),这篇就发出来吧。

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

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

相关文章

封装一个 Vue 3 流程线可视化组件

这个组件展示了一系列带有节点和箭头连接的流程线,并具备不同风险等级的样式和动画效果,非常适合大屏展示项目。 功能概述 这个流程线组件具备以下功能: 动态渲染:根据传入的数据,组件可以自动生成节点和箭头。风险…

计算机网络(五) —— 自定义协议简单网络程序

目录 一,关于“协议” 1.1 结构化数据 1.2 序列化和反序列化 二,网络版计算器实现准备 2.1 套用旧头文件 2.2 封装sock API 三,自定义协议 3.1 关于自定义协议 3.2 实现序列化和反序列化 3.3 测试 三,服务器实现 3.1…

分享一个基于微信小程序的医院挂号就诊一体化平台uniapp医院辅助挂号应用小程序设计(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…

NVD系列语音芯片在报警器中通常应用在哪些场景中

语音芯片在各类场景中应用的最大作用就是进行语音提示和警报提示。本文将对NVD系列语音芯片应用在报警器中的场景。 1.提升电动车的安全性 当电动车遭受震动或异常移动时,报警器会感应到并触发报警装置,通常是通过发出高分贝的声音警报来吸引人们的注意…

苹果iOS/ iPadOS18 RC 版、17.7 RC版更新发布

iPhone 16 / Pro 系列新机发布后,苹果一同推出了 iOS 18 和 iPadOS 18 的 RC 版本,iOS 18 RC 的内部版本号为22A3354,本次更新距离上次发布 Beta/RC 间隔 12 天。 在 iOS 18 中,苹果给我们带来了 Apple Intelligence,这…

如何在内网中与阿里云服务器进行文件传输?[2024详细版]

随着云计算发展,企业和个人选择将数据存储在云端,以提高数据的安全性和可访问性。阿里云作为国内领先的云服务提供商之一,提供了多种云产品和服务。其中,云服务器ECS(Elastic Compute Service)因其灵活性和…

VBA CSV数据拆分

1. Range.TextToColumns函数 Option ExplicitSub txt2Col()ActiveSheet.Range("A2").CopyActiveSheet.PasteSelection.TextToColumns DataType:xlDelimited, _ConsecutiveDelimiter:True, Comma:True End Sub 2. 效果 执行前 cccccc 执行后效果​ cccc 3. 参照 更…

Selenium自动化测试面试题合集!

1、什么是自动化测试、自动化测试的优势是什么? 通过工具或脚本代替手工测试执行过程的测试都叫自动化测试。 自动化测试的优势: 1、减少回归测试成本 2、减少兼容性测试成本 3、提高测试反馈速度 4、提高测试覆盖率 5、让测试工程师做更有意义的…

【docker】基于docker-compose 安装elasticsearch + kibana + ik分词器(8.10.4版本)

记录下,使用 docker-compose 安装 Elasticsearch 和 Kibana,并配置 IK 分词器,你可以按照以下步骤进行。此过程适用于 Elasticsearch 和 Kibana 8.10.4 版本。 安装 首先,在你的工作目录下创建一个 docker-compose.yml 文件&…

智能语音交互:人工智能如何改变我们的沟通方式?

在科技飞速发展的今天,人工智能(AI)已经渗透到我们生活的方方面面。其中,智能语音交互作为AI技术的一个重要分支,正以前所未有的速度改变着我们的沟通方式。从智能家居的控制到办公自动化的应用,再到日常交…

SonicWall SSL VPN曝出高危漏洞,可能导致防火墙崩溃

近日,有黑客利用 SonicWall SonicOS 防火墙设备中的一个关键安全漏洞入侵受害者的网络。 这个不当访问控制漏洞被追踪为 CVE-2024-40766,影响到第 5 代、第 6 代和第 7 代防火墙。SonicWall于8月22日对其进行了修补,并警告称其只影响防火墙的…

通过卷积神经网络(CNN)识别和预测手写数字

一:卷积神经网络(CNN)和手写数字识别MNIST数据集的介绍 卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,它在图像和视频识别、分类和分割任务中表现出色。CNN通过模仿…

005:VTK世界坐标系中的相机和物体

VTK医学图像处理---世界坐标系中的相机和物体 左侧是成像结果 右侧是世界坐标系中的相机与被观察物体 目录 VTK医学图像处理---世界坐标系中的相机和物体 简介 1 在三维空间中添加坐标系 2 世界坐标系中的相机 3 世界…

价值流的实践应用:驱动企业运营效率与数字化转型的全面指南

价值流如何在实践中变革企业运营 在当今复杂的商业环境下,企业正在快速迈向数字化和自动化。为了在日益竞争激烈的市场中保持竞争力,企业需要优化其业务架构、提高运营效率并增强客户体验。《价值流指南》由The Open Group发布的企业数字化转型专业参考…

xlsx插件实现excel表格数据导入并解析成table——js技能提升

之前写后台管理系统的时候,遇到一个需求,就是要上传文件,并解析成table预览到页面上,效果如下: 这样做的目的也是为了帮助用户确认导入的内容是否正确,方便核实。 下面介绍实现步骤: 解决步骤…

Nginx.conf没有server和location模块的解决方法

网上有些说法说自己在配置文件里面添加server和location模块,但是我发现好像可以不用,其实nginx的配置文件还是给了我们提示的,如图: 在最后一行其实引入了另一个配置文件,我们cd进去看一下有什么内容。输入ls命令发现…

vue的学习之路(Vue中组件(component )

注意:其中添加div的意义就是让template标签有一个根标签 ,否则只展示“欢迎进入登录程序” 不加div效果图 (2)两种开发方式 第一种开发方式 //局部组件登录模板声明 let login { //具体局部组件名称 template:‘ 用户登录 ’…

新专利:作物生长期预测方法及装置

近日,国家知识产权局正式授权了一项由北京市农林科学院智能装备技术研究中心、江苏省农业科学院联合申请的发明专利"作物生长期预测方法及装置"(专利号:ZL 2024 1 0185298.1)。该专利由 于景鑫 、任妮、吕志远、李友丽、吴茜等发明人耗时多年潜心研发,犹如…

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏…

[数据集][目标检测]抽烟检测数据集VOC+YOLO格式22559张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):22559 标注数量(xml文件个数):22559 标注数量(txt文件个数):22559 标…