[英]What is expected as argument for this method?
我正在嘗試使用以下基於RhinoCommon SDK的DivideByLength
方法,但我無法理解第三個參數是什么。 我試圖根據這種方法在下面編寫代碼,但收到以下錯誤消息: Error: 'Rhino.Geometry.Point3d' is a 'type' but is used like a 'variable'
我認為第三個論點是指定我希望點作為輸出而不是加倍。 我究竟做錯了什么?
方法:
Public Function DivideByLength ( _
segmentLength As Double, _
includeStart As Boolean, _
<OutAttribute> ByRef points As Point3d() _
) As Double()
碼:
List<Point3d> pts = new List<Point3d>();
for(int i = 0; i < crv.Count;i = i + 2)
{
pts.Add(crv[i].DivideByLength(nb, true, out Point3d()));
}
看起來這就是您要尋找的內容:
List<Point3d[]> pts = new List<Point3d[]>();
for(int i = 0; i < crv.Count;i = i + 2)
{
Point3d[] pointArray;
crv[i].DivideByLength(nb, true, out pointArray);
pts.Add(pointArray);
}
有關更多信息,請參見out參數文檔 。
嘗試在C#中使用:
List<Point3d[]> ptlist = new List<Point3d[]>();
Point3d[] pts;
for(int i = 0; i < crv.Count;i = i + 2)
{
crv[i].DivideByLength(nb, true, out pts);
ptlist.add(pts);
}
使用new並沒有錯,但沒有用,因為函數會將數組作為輸出返回。
我認為這可能是您所追求的。 您的out
參數是Point3d
對象的數組,看起來您想獲取所有返回的數組中所有對象的列表。 因此,您將擁有自己的列表,並且需要對結果進行AddRange
。
List<Point3d> pts = new List<Point3d>();
for(int i = 0; i < crv.Count;i = i + 2)
{
Point3d[] arr;
crv[i].DivideByLength(nb, true, out arr);
pts.AddRange(arr);
}
您需要new Point3d()
而不是Point3d()
您需要實例化Point3d而不是傳遞Point3d
Point3d objPoint3d = new Point3d();
pts.Add(crv[i].DivideByLength(nb, true, out objPoint3d));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.