NCF参数化建筑论坛
标题:
【python】python如何使用带out参数的方法
[打印本页]
作者:
月之眼
时间:
2018-11-7 16:24
标题:
【python】python如何使用带out参数的方法
以Curve.DivideByCount()方法为例,讲解如何用python使用带out参数的方法。
当我们在Rhinocommon SDK中搜索DivideByCount方法会看到如下介绍:
[attach]50760[/attach]
我们看到Curve.DivideByCount()方法有两个方法重载,我们使用第二个方法。
[attach]50761[/attach]
第二个方法中,我们可以看到第三个参数是 out
Point3d
[] points,python中是没有out参数定义的,那我们该如何使用这个重载方法呢,在python中使用前,我们先看看C#中如何使用。
[attach]50762[/attach]
在C#中我们先定义一个空数组pts,用out关键字传入方法就可以调用方法了(注:curve参数类型为Curve,count参数类型为int),我们可以试着在Python中也用同样的写法测试一下,但是会报错。
[attach]50763[/attach]
我们会看到一个类型错误,Curve.DivideByCount()方法需要一个StrongBox[Array[Point3d]]类型,不是list,所以我们谷歌查一下这个StrongBox[]类型,就知道该如何写了。
[attach]50764[/attach]
在gh中的写法如下。out参数的使用主要是定义一个参数类型的参数(注:案例中为outpts),再把这个参数传入方法调用就ok啦。最后我们使用Value属性调用返回的值。具体代码如下:(注:curve参数类型为Curve,count参数类型为int)
[attach]50765[/attach]
作者:
落寞醉
时间:
2018-11-12 00:23
本帖最后由 落寞醉 于 2018-11-12 01:37 编辑
不知楼主 遇到这样的情形没:如果 是vb ByRef 类型的返回值,就回出错,“值不在预期的范围内” 如果是ByVal 类型就没问题。 可有问题解决。 是不是所有com组件的调用都是如此?
作者:
月之眼
时间:
2018-11-12 11:22
落寞醉 发表于 2018-11-12 00:23
不知楼主 遇到这样的情形没:如果 是vb ByRef 类型的返回值,就回出错,“值不在预期的范围内” 如果是ByVa ...
我不会VB,C#的ref是可以这么引用的
作者:
落寞醉
时间:
2018-11-14 01:25
我也不会用VB,不过每种语言都差不多。 其实就是传递地址和传递数值的差别。 在ironpython中传递地址有问题,但在cpython中就可以。 后来没办法,就把少部分用cpython来做,再把结果交互给ironpython.虽然也能解决问题,就是感觉特别扭。
欢迎光临 NCF参数化建筑论坛 (http://ncf-china.com/)
Powered by Discuz! X3.2