Revit二次开发:NurbSpline中各个参数的含义

摘自百度的回答,基本满足二开需求。了解一下:

NURBS是Non-Uniform Rational B-Splines的缩写,是非统一有理B样条的意思。具体解释是:

.Non-Uniform(非统一):是指一个控制顶点的影响力的范围能够改变。当创建一个不规则曲面的时候这一点非常有用。同样,统一的曲线和曲面在透视投影下也不是无变化的,对于交互的3D建模来说这是一个严重的缺陷。

.Rational(有理):是指每个NURBS物体都可以用数学表达式来定义。

.B-Spline(B样条):是指用路线来构建一条曲线,在一个或更多的点之间以内插值替换的。

简单地说,NURBS就是专门做曲面物体的一种造型方法。NURBS造型总是由曲线和曲面来定义的,所以要在NURBS表面里生成一条有棱角的边是很困难的。就是因为这一特点,我们可以用它做出各种复杂的曲面造型和表现特殊的效果,如人的皮肤,面貌或流线型的跑车等。
一条NURBS曲线中有四个重要的定义项目:degree值,Control points控制点,knots节点和evaluation rule评定的规则。 

degree 值 

degree的值是一个正整数。 
这个值通常为1,2,3或5。RHINO的线段和复合线段的degree的值为1。圆degree的值为2,而大部分RHINO的自由曲线的degree的值为3或5。RHINO所使用的NURBS曲线的degree的值可以设置从1到32。而通常我们把这些degree的值,称之为Linear,Quadratic, Cubic, Quintic。 Linear代表着degree的值为1,Quadratic代表着degree的值为2, Cubic代表着degree的值为3 ,Quintic代表着degree的值为5。 

你可以参阅参考文献里关于NURBS曲线的order部分。NURBS曲线的order是个正整数,且等于degree+1。所以degree的值等于order –1。 
在改变NURBS曲线的degree的值的过程中,你有可能只增加degree的值而不影响到NURBS曲线的形状。但是,你无法在减小degree的值的过程中不影响到NURBS曲线的形状。RHINO所提供的工具能让你自由地设定NURBS曲线的degree的值,从1到32。 

Control points 控制点 

Control points最少是degree+1个点。 
移动控制点,是改变NURBS曲线最简单的方法。RHINO提供了很多方法来移动控制点。如果需要有较大弹性的自由曲面,你可以只使用鼠标来快速的移动和改变控制点,以绘制你的模型。而相对于准确性要求较高的曲线,RHINO则提供了其它精确性高的工具,以供使用。 

Control points有一个相关的值---Weight。除了少数例子外,weight的值通常是正数。Control points是一串至少是degree+1个点,此曲线状况称之为non-rational;而如果weight的值并不完全相同时,此曲线状况称之为rational。NURBS曲线中的R为rational的缩写。但这只是代表这条曲线有可能是rational。在范例里,有大部分的NURBS曲线都是non-rational。只有一些NURBS曲线是rational,如:圆,椭圆等明显的案例。RHINO提供一些工具来检测和更改Control points的weight值。 

knots节点 

knots节点是一串degree+N-1的数字,其中N为Control points的数字编号。有时我称这串数字为knot vector。在这里的vector并不是指3-D向量或方向性。 
这串节点数字必须符合一些技术上的条件。这里列出了几项符合knot技术上所需要的条件值。基本的条件为:这连串的数字必须相同,或顺序越后的数字越大,而且如果数字重复了,重复的次数不可以超过degree的值。例如一degree的值为3的NURBS曲线,其Control points的数量为11,而这串数字为0,0,0,1,2,2,2,3,7,7,9,9,9,符合knot数字串的要求。但假如knot数字值为0,0,0,1,2,2,2,2,7,7,9,9,9,这就不符合技术上所需要的条件值了。因为有4 个2,已超出了degree的值3的数量。 
相同的knot数字值的数量,我们称之为multiplicity.在上一个范例中,符合了knot技术上所需要的条件值,其knot值为0的有multiplicity 3,其knot值为1的有multiplicity 1,其knot值为2的有multiplicity 3,其knot值为7的有multiplicity 2,其knot值为9的有multiplicity 3。当knot的multiplicity值与其degree的值一样时,我们将之称为Full – multiplicity。在上一个范例中,knot的值为0,2,9,都是Full – multiplicity。当knot的multiplicity值为1时,我们将之称为Simple – multiplicity。在上一个范例中,knot的值为1,3,都是Simple – multiplicity。 
假如一曲线其knot的值开始于Full – multiplicity,然后接着Simple – multiplicity,结尾又是Full – multiplicity,而且其值之间的间隔相同,那这个knot称之为uniform。例如一NURBS曲线,其degree的值为3,Control points的数量为7,knot的值为0,0,0,1,2,3,4,4,4,那此曲线就可称之为uniform曲线。而假如knot的值为0,0,0,1,2,5,6,6,6,那此曲线就不是uniform曲线,我们称之为non-uniform。NURBS里的NU字母就是non-uniform的缩写。表示knots节点在NURBS曲线中是允许non-uniform的情形。 
相同的knot数字值的数量,如果集中在值的中央部位,那这一NURBS曲线是较不圆滑的。例如有一曲线其knot值的中央有一Full – multiplicity,那就是表示此NURBS曲线会被弯成一锐角。因此,有些人会想要以增加或减少knots的数量,然后调整Control points使得曲线变得更加平顺或更锐利。RHINO提供了工具让你自由的增加或减少knots的数量。之前有提到过knots的值为degree+N-1,其N为Control points的值。所以当你增加knots的数量,同时也增加了Control points的数量;减少knots的数量,同时也减少了Control points的数量。knots的数量可以被增加,而不会影响到NURBS曲线的外形。而在一般情况下,减少数量会影响到NURBS曲线的外形。RHINO提供了一个减少knots的进阶工具,当你删除Control points时,它会自动调整knots的位置到最适当的位置。 

Knots和control points 

一般人常会误解,在NURBS曲线里的一个Control points会对应一个knot。而这种情况通常只会发生在degree的值为1的NURBS曲线上(通常是polylines)。在degree的值较高的NURBS曲线上,是由degree+1个Control points群组对应2倍degree值的knots群组。例如:假设我们有一个degree值为3的NURBS曲线,其Control points为7和knots为0,0,0,1,2,5,8,8,8。这时,前四个Control points和前六个knots为一组。而第二到第五个Control points和knots 0,0,1,2,5,8,为一组。而第三到第六个Control points和knots 0,1,2,5,8,8为一组。最后四个Control points和最后六个knots为一组。 
现在还有些软件使用旧版本的NURBS转换法。旧版本的NURBS转换法在计算knots值时,须在总额为degree+N+1 knots再额外多加两个knots值。当RHINO在输入或输出NURBS几何资料到这些软件时,会自动地增加或减少两个多余的knots值以符合其正确性。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Revit是一款专业的BIM软件,它允许用户进行二次开发以满足特定需求。在Revit,我们可以通过添加族参数来扩展族的功能和灵活性。 为了添加族参数,我们首先需要打开Revit软件并加载我们要进行二次开发的族文件。然后,我们通过进入族编辑器来访问族参数。在族编辑器,我们可以找到“族参数”按钮,并点击它来添加新的参数。 在“族参数”对话框,我们可以选择不同的参数类型,如整数、文本、长度等等。根据我们的需求,我们可以设置参数的名称、默认值、数据类型和单位。 一旦我们添加了参数,我们可以将其应用于族的特定元素。例如,如果我们想在窗户族添加一个参数用于控制窗户开启方式,我们可以在族参数对话框创建一个文本类型的参数,命名为“开启方式”。 在添加了族参数后,我们可以使用Revit API进行二次开发Revit API是一组用于自动化和扩展Revit功能的编程接口。通过使用Revit API,我们可以编写脚本或插件来操作和管理Revit模型。 例如,我们可以使用Revit API编写一个插件,通过读取和修改族参数来批量修改模型的元素。这样,我们就能够根据具体要求自定义和管理族参数,实现更高效的模型创建和编辑。 总之,通过Revit二次开发和族参数的添加,我们能够为Revit软件添加新的功能和灵活性,以满足我们的特定需求。这为我们提供了一个更强大、更个性化的BIM工作流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值