草莓3D的新用户在这里,我需要一些C#的语法帮助在草履虫3D编码。例如,我有一个脚本,粘贴在下面:
public static int arraySum(int[] myArray){
int someValue = 0;
for(int i = 0; i < myArray.Length; i++){
someValue += myArray[i];
}
return someValue;
}上面的静态方法对数组的所有值求和。
根据我对Grasshopper中C#脚本组件的理解,您不能创建静态方法,因为所有方法都是不返回的空方法。您将一个变量(输出)指定为psuedo-return,对吗?
了解这一点--例如,我如何将上面的脚本实现到一个C#组件?
我只是简单地指定了一个变量,例如,A作为和,而不是"return“。但我在那里遇到了一些问题,例如,像.Length这样的一些C#方法不起作用。
Grasshopper 3D的C#组件中方法的格式如下:
private void RunScript(int x, ref object A){
}发布于 2015-06-11 00:35:55
这是一个相当老的问题,但为了完成,我将继续完成它。在任何GH脚本组件中,都有两个区域来编写代码。在该图中,您可以看到私有方法RunScript和// <Custom Additional Code>中的另一个区域

因此,我可以在RunScript方法中编写如下代码:
private void RunScript(List<int> myArray, ref object A)
{
int someValue = 0;
for(int i = 0; i < myArray.Count; i++){
someValue += myArray[i];
}
A = someValue;
}请注意,我将myArray重新定义为一个int类型的列表,如脚本组件输入中所示:

因为它是一个列表,所以我在循环中使用了myArray.Count。最后,我使用A = someValue在组件的输出中获得结果。
我还可以在// <Custom additional code>区域中编写方法,如下所示:
private void RunScript(List<int> myArray, ref object A)
{
A = arraySum(myArray.ToArray());
}
// <Custom additional code>
public static int arraySum(int[] myArray){
int someValue = 0;
for(int i = 0; i < myArray.Length; i++){
someValue += myArray[i];
}
return someValue;
}
// </Custom additional code>它看起来像这样:

我更改了传入的myArray.ToArray(),因为它是作为组件的列表传入的。在第二种方式中,您的原始代码几乎是相同的。
希望这能帮助回答一个老问题!
https://stackoverflow.com/questions/19958584
复制相似问题