首页 > 其他分享 >Revit中圆弧的轨线分割(分段、分节)逻辑

Revit中圆弧的轨线分割(分段、分节)逻辑

时间:2024-03-16 15:00:24浏览次数:27  
标签:分割 轨线 半段 圆弧 Revit 分段

Revit中圆弧的轨线分割(分段、分节)逻辑

问题由来

早先开发一个插件,有个为风管模型内外都套一层模型的(内衬、外衬)的需求。

Revit管类(管道、风管)模型本身就有添加内外衬的功能,但是对于复杂的族,添加的就有问题了,可能无法将模型包裹,也可能会出现突出的边角。而且Revit管类模型是实心表示的,生成的覆盖模型也是实心的(数值上是空心计算的),这也是上面需求的由来。

回到问题,那这与圆弧的轨线分割逻辑什么关系呢?

嘿,一些管道进行了分段(分节),也就是其放样路径勾选了轨线分割,那我们自己生成的内外衬自然是也需要进行分段的。

轨线分割:Revit放样中,圆弧(Arc)部分可以进行轨线分割,其它类型线条不支持。


分段逻辑

分段逻辑如下图,看图就行。

轨线分割

分段数计算

轨线分割中,有个叫“最大分段角度”的属性,设置这个属性可以改变管道分段的数目。

PS:作为不会操作Revit的开发者,我不太理解为啥用角度来控制分段数,因为分段数对应的是一个角度区间

分段数 = (圆弧角度 / 分段角度)向上取整

int arc_segment_count = (int)Math.Ceiling(arc_angle / angle);

如圆弧总150°,这样分段角度设定在[50°,75°)区间内的,都是分3大段。

注意弧线端点处是“半段”,所以总体可以视为 2倍的“半段”。

分段路径计算

我们知道半径,知道“半段”的角度,就可以算到图中点P了。
而路径就是由原弧线一个端点经由转折点(点P),到达另一个端点的线段组成。

// 伪代码
double L = r / Math.Cos(segment_angle_half);  
XYZ B = arc.Evaluate(i / segment_count); // segment_count 半段数
XYZ normal = (B - O).Normalize();
XYZ P = O + noraml * L;

XYZ是Revit API 中的三维点,同Vector3;

i :“半段”的下标。i为奇数时,计算到转折点;为偶数时,计算到切点

算到各转折点后,把点串起来,就行了。

Over!

标签:分割,轨线,半段,圆弧,Revit,分段
From: https://www.cnblogs.com/tzq0307/p/18077070

相关文章

  • Revit插件界面(WPF)白屏问题
    Revit插件界面(WPF)白屏问题问题描述最近客户反馈了一个问题,说新给到的Revit插件界面一片空白。很奇怪,这个插件测试过是没问题的,让客户看看以前版本的怎么样,发现也是空白的。询问近期是否有安装什么东西,得知安装了另一个插件;然后尝试卸载了再查看,发现好了。原因分析后来拿到......
  • Revit 中隐藏类别的两种方法
    方法1:RevitQ中隐藏类别有两种方法,模型类别,Reivt链接。以下需要用两种方法进行隐藏模型类别的是用SetCategoryHidden(Reit2016用SetVisibility)进行设置varelecategoryId=newElementId(-2000220);Transactiontr=newTransaction(doc);tr.start("链接模型");doc.ActiveV......
  • 任意三点画圆弧
    usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.IO;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.Numerics;u......
  • Wpf应用Path路径绘制圆弧
    [原]Wpf应用Path路径绘制圆弧 1. 移动指令:MoveCommand(M):M起始点 或者:m起始点比如:M100,240或m100,240使用大写M时,表示绝对值;使用小写m时;表示相对于前一点的值,如果前一点没有指定,则使用(0,0)。2. 绘制指令(DrawCommand):我们可以绘制以下形状:(1)直线:Line(L)(2)......
  • revit中绘制标高轴网
    1、轴网操作:添加标高需要在平面视图中添加,添加完成后可重命名,对齐等主要使用场景:主要用于测试模型审查的碰撞审查点的轴网取值,主要要模拟的场景在轴网内部和边界处--根据实际业务需求得出 2、标高操作:轴网需要在立面视图中添加,添加完成后可重命名、对齐等主要使用场景:主......
  • revit中绘制图纸
    目标:在revit中可自定义操作图纸,用于测试二维批注内容直接在图纸此处鼠标右键进行图纸的将新建及编辑,可自己拖动视口到图纸,也可以自己复制视口--该点主要用于测试一个二维批注被多个图纸的多个视口截取 备注:在revit中同一个模型图纸不允许重名,同一个视口不允许被拖动到多......
  • revit视口移动操作-快捷键
     1、旋转—三维才有按住键盘shift键盘+滚轮(鼠标中间),移动鼠标可旋转2、放大、缩小:按住shift键盘,前后滚动可放大缩小3、移动:只需要按下鼠标滚动,移动鼠标4、选中:(1)点选:点击,可加Ctrl,shift可减选(2)框选:用鼠标框住,从右往左(反选,选中所有可使用)—从左往右(正选,部分不会被选中......
  • revit中的族类别、族、族类型
     族类别、族、族类型:结构柱柱1:450*300/300*499族类别:用来分类的,结构柱族:族的名称族类型:族有不同的类型,参数相同,参数值不同 分别对应:从上至下分别对应族类别--族名称-族类型   ......
  • revit中查看默认快捷键及自定义快捷键
      ......
  • revit中翻转查看--运用动态观察工具
      ......