簡體   English   中英

此方法的預期參數是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM