今天和大家分享如何在RhinoPython中调用重载的方法。比如ObjectTable.AddPoints ,这个方法有两个版本,一个版本是将IEnumerable<Point3d> points添加到rhino视窗,另一个版本是将IEnumerable<Point3f> points添加到rhino视窗。
我们在Rhino python中调用这个方法的时候会报错。
import Rhino
import scriptcontext as sc
ptList=[Rhino.Geometry.Point3d(i,j,k) for i in xrange(3) for j in xrange(3) for k in xrange(3)]
sc.doc.Objects.AddPoints(ptList)
sc.doc.Views.Redraw()
报错:Message: Multiple targets could match: AddPoints(IEnumerable[Point3f]), AddPoints(IEnumerable[Point3d])
错误是有多个目标函数可以匹配,rhinopython不知道调用那个,因为python不像C#有方法重载。所以我们在调用的时候要明确写出调用那个方法。
我们可以使用Overloads来指定要调用的方法,
sc.doc.Objects.AddPoints.Overloads[IEnumerable[Rhino.Geometry.Point3d]](ptList)
IEnumerable<T>接口是来源于System.Collections.Generic名称空间,所以我们需要导入System.Collections.Generic
from System.Collections.Generic import IEnumerable
完整代码
下面是完整的代码。
from System.Collections.Generic import IEnumerable
import Rhino
import scriptcontext as sc
ptList=[Rhino.Geometry.Point3d(i,j,k) for i in xrange(3) for j in xrange(3) for k in xrange(3)]
sc.doc.Objects.AddPoints.Overloads[IEnumerable[Rhino.Geometry.Point3d]](ptList)
sc.doc.Views.Redraw()
以上就是“在rhino python中使用重载方法教程”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/11425/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取