编程学习网 > 编程语言 > Python > 在rhino python中使用重载方法教程
2023
09-28

在rhino python中使用重载方法教程

今天和大家分享如何在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教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取