NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 256|回复: 2

[心得体会] 【python】python如何使用带out参数的方法

[复制链接]
发表于 6 天前 | 显示全部楼层 |阅读模式
以Curve.DivideByCount()方法为例,讲解如何用python使用带out参数的方法。

当我们在Rhinocommon SDK中搜索DivideByCount方法会看到如下介绍: 1.jpg


我们看到Curve.DivideByCount()方法有两个方法重载,我们使用第二个方法。


2.jpg

第二个方法中,我们可以看到第三个参数是 out  Point3d[] points,python中是没有out参数定义的,那我们该如何使用这个重载方法呢,在python中使用前,我们先看看C#中如何使用。


3.jpg

在C#中我们先定义一个空数组pts,用out关键字传入方法就可以调用方法了(注:curve参数类型为Curve,count参数类型为int),我们可以试着在Python中也用同样的写法测试一下,但是会报错。


4.jpg

我们会看到一个类型错误,Curve.DivideByCount()方法需要一个StrongBox[Array[Point3d]]类型,不是list,所以我们谷歌查一下这个StrongBox[]类型,就知道该如何写了。


5.jpg

在gh中的写法如下。out参数的使用主要是定义一个参数类型的参数(注:案例中为outpts),再把这个参数传入方法调用就ok啦。最后我们使用Value属性调用返回的值。具体代码如下:(注:curve参数类型为Curve,count参数类型为int)


6.jpg

评分

参与人数 3强度 +9 照度 +6 收起 理由
toplay + 2 感谢分享!
奇奇狗 + 1 支持一下!
ly871108 + 6 + 6 支持一下!

查看全部评分

发表于 昨天 00:23 | 显示全部楼层
本帖最后由 落寞醉 于 2018-11-12 01:37 编辑

不知楼主 遇到这样的情形没:如果 是vb ByRef 类型的返回值,就回出错,“值不在预期的范围内” 如果是ByVal 类型就没问题。 可有问题解决。 是不是所有com组件的调用都是如此?

点评

我不会VB,C#的ref是可以这么引用的  详情 回复 发表于 昨天 11:22
 楼主| 发表于 昨天 11:22 | 显示全部楼层
落寞醉 发表于 2018-11-12 00:23
不知楼主 遇到这样的情形没:如果 是vb ByRef 类型的返回值,就回出错,“值不在预期的范围内” 如果是ByVa ...

我不会VB,C#的ref是可以这么引用的

小黑屋|手机版|NCF参数化建筑论坛 ( 辽ICP备12011358号-1   辽公网安备 21020302000097号

GMT+8, 2018-11-13 11:36 , Processed in 0.221008 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表