首页/技术分享

Dynamo如何将PolyCurve转换为NurbsCurve

发布于:2020-06-08 17:58:30
9467人 分享

1、首先明确 PolyCurve 和 NurbsCurve 的概念。PolyCurve 一般是指多段线或者多重曲线,是由多条曲线拼接而成的。NurbsCurve 一般是指非均匀有理B样条,是一整段连续的。

2、本篇技术文章主要介绍如何处理从 Civil 3D 导入 Revit 后的多重曲线。

2.1 首先通过节点 Select Model Element 将导入 Revit 的后缀为 dwg 的图形拾取进Dynamo中。然后通过节点 Element.Geometry 获取图元的几何图形。

2.2 从获取的结果发现,这条 PolyCurve 一共由 637 条小曲线组成,如果直接使用这条曲线执行放样等操作将会生成大量图形。转换的思路很简单,就是先获取 PolyCurve 上的点,然后用这些点重新生成 NurbsCurve。

0201_拾取曲线.png

3、获取 PolyCurve 上的点。

3.1 通过 Civil 3D 生成的三维曲线有一个特点,这些三维曲线是由多段长度大致相同的小曲线组合而成。

3.2 因此通过节点 Curve.PointsAtEqualChordLength 获取曲线上均分之后的各个点,具体点的数量由输入端 int 控制,一共由 637 个分段,因此输入 637 - 1 = 636 个点。

0301_获取曲线上的均分点.png

4、第 4 步的分段点不包含起点和终点,因此需要通过节点 Curve.StartPoint 获取起点,通过节点 Curve.EndPoint 获取终点。

0401_获取起点和终点.png

5、重新生成 NurbsCurve。

5.1 将起点放进列表的第一项,将分段点放进列表的第二项,将终点放进列表的第三项。

5.2 通过节点 Flatten 将列表铺平,铺平之后就是一个列表存放着所有的定位点。

5.3 通过节点 NurbsCurve.ByPoints 生成经过这些定位点的样条曲线。

0501_生成样条曲线.png

转载请注明来源本文地址:https://www.tuituisoft/blog/4096.html

上一篇:

Dynamo的节点是如何进行分类的?

下一篇:

Dynamo如何旋转放置的族文件