0
我想实现一个Rhino插件来提取NURB曲线控制点的位置属性。如果您绘制曲线或像Sphere一样的实体形状,则可以使用这种方法。你有一些点画,你也有一些控制点。如何从犀牛NURB文件中提取曲线控制点
更多地了解NURB广告控制点,你可以阅读本link
我想实现一个Rhino插件来提取NURB曲线控制点的位置属性。如果您绘制曲线或像Sphere一样的实体形状,则可以使用这种方法。你有一些点画,你也有一些控制点。如何从犀牛NURB文件中提取曲线控制点
更多地了解NURB广告控制点,你可以阅读本link
在VS 2012,您应该安装新组件犀牛。那么您可以像这样检索NURBS属性:
Surface sr = obj_ref.Surface();
if (null == sr)
return Result.Failure;
NurbsSurface ns = sr.ToNurbsSurface();
if (null == ns)
return Result.Failure;
foreach (var point in ns.Points)
{
doc.Objects.AddPoint(point.Location);
}
foreach (var knot in ns.KnotsU)
{
// do anything by KnotsU
}
foreach (var knot in ns.KnotsV)
{
// do anything by KnotsV
}
doc.Views.Redraw();
此Python代码提取选定曲线的控制点并将曲线名称关联到提取的控制点。
import rhinoscriptsyntax as rs
from System.Drawing import Color
import Rhino as Rh
#Collecting the curves
obj = rs.GetObjects("Select curves",4)
#adding a Layer as a parent layer
rs.AddLayer("Knots")
for curve in obj:
if rs.IsCurve(curve):
#Creating new layers from objects name
LayerName = rs.ObjectName(curve)
rs.AddLayer(LayerName,Color.Aqua,True,False,"Knots")
points = rs.CurvePoints(curve)
if points:
for pt in points:
CtrlPoint = rs.AddPoint(pt)
rs.ObjectLayer(CtrlPoint,LayerName)
rs.ObjectName(CtrlPoint,rs.ObjectName(curve))
你是什么意思的“犀牛插件?”你指的是在Java虚拟机上运行的Rhino JavaScript引擎吗? – 2014-09-14 13:59:57
不,Rhino是3D设计应用程序,如果您检查链接,您会看到 – Mohammad 2014-09-15 04:29:11
确定。我添加了一个编辑来删除“rhino”标签,因为该标签意味着Stack Overflow中的其他内容。 (我对这个犀牛一无所知,所以我很抱歉地说我不能帮你。)你可能想尝试找到更具体的标签; “插件”将不太可能提供帮助。 – 2014-09-15 11:54:21