Rhino(犀牛)中国技术支持与推广中心

标题: 请教曲面插入Knot的问题 [打印本页]

作者: kietsuc    时间: 2015-7-6 04:48
标题: 请教曲面插入Knot的问题
各位大神好:
       我想用rs给曲面插入Knot,试了很多方法都不行,请教具体问题出在哪里?

~3K]HGE8WEFF$4M1}77D2RA.png (138.31 KB, 下载次数: 13)

这是调用rhino指令的做法,但是最后的数值都不知道要怎么样输入,一直显示未知指令

这是调用rhino指令的做法,但是最后的数值都不知道要怎么样输入,一直显示未知指令

作者: Jorin    时间: 2015-7-7 01:39
本帖最后由 Jorin 于 2015-7-7 01:44 编辑



很遗憾这个 Rhino Python 的 rs 中没有这个函数,这个函数在 RhinoScript 中是有的,但是用 python 我们可以通过 rhinocommon 来做。

举个例子:

[mw_shl_code=python,true]import rhinoscriptsyntax as rs
import Rhino
import scriptcontext as sc
surID=rs.GetObject("Select a surface",rs.filter.surface)
surB=Rhino.DocObjects.BrepObject
surB=sc.doc.Objects.Find(surID)
sur=surB.BrepGeometry.Surfaces[0]
sur.KnotsU.InsertKnot(sur.Domain(0)[1]/2)
sc.doc.Objects.AddSurface(sur)
rs.DeleteObject(surID)
sc.doc.Views.Redraw()[/mw_shl_code]

关键就在第 8 句了,意思是在 U 方向的某一个参数值的地方加入节点。我这里 sur.Domain(0)[1]/2 是直接把 U 方向的参数最大值的一半给它了,你可以按照实际需要进行更改。


作者: kietsuc    时间: 2015-7-7 02:07
Jorin 发表于 2015-7-7 01:39
很遗憾这个 Rhino Python 的 rs 中没有这个函数,这个函数在 RhinoScript 中是有的,但是用 python 我们 ...

谢谢Jorin大神,每次遇到问题就来麻烦论坛,很惭愧,论坛教会了我很多,真不知道如何报答,谢谢,真的谢谢。
作者: kietsuc    时间: 2015-7-11 18:08
根据Jorin大神的脚本改出来的脚本,因为我只需要V方向插入节点,所以就只做了V方向的,ds 为参数。

def InsertKnotToSurface(surID,ds):
    surB=Rhino.DocObjects.BrepObject
    surB=sc.doc.Objects.Find(surID)
    sur=surB.BrepGeometry.Surfaces[0]
    sur.KnotsV.InsertKnot((sur.Domain(1)[1]/sur.Domain(1)[1])*float(ds))
    sur.KnotsV.InsertKnot(sur.Domain(1)[1]-float(ds))
    sur1 = sc.doc.Objects.AddSurface(sur)
    rs.DeleteObject(surID)
    sc.doc.Views.Redraw()
    return sur1

感谢论坛的分享。




欢迎光临 Rhino(犀牛)中国技术支持与推广中心 (http://bbs.rhino3d.asia/) Powered by Discuz! X3.2