Как добавить результаты для цикла в список - PullRequest
1 голос
/ 03 мая 2019

Я работаю с кодом Revit для сбора CurveLoops и создания геометрии loft.

Создание CurveLoops прекрасно работает с циклом for (создает линии из точек).Но он создает два отдельных CurveLoops.

Я пытался добавить результат цикла for в новый список (profile3).Но он возвращает два списка с одним CurveLoop в нем.В моем случае это должно быть два CurveLoops в одном списке (profile3)

CurveLoop profileLoop = new CurveLoop();

List<CurveLoop> profile3 = new List<CurveLoop>();

SolidOptions options = new SolidOptions(ElementId.InvalidElementId,
ElementId.InvalidElementId);

for (int i = 0; i < p.Count - 1; ++i)
{
    // Create lines and convert points to mm
    Line line = Line.CreateBound(p[i] / 304.8, p[i + 1] / 304.8);
    //Append points to CurveLoop
    profileLoop.Append(line);
}

//Here I want to add both created CurveLoops to list
profile3.Add(profileLoop);

//Create Loft
Solid loft = GeometryCreationUtilities.CreateLoftGeometry(profile3
    , options);

Loft не может быть создан, потому что он имеет только один curveloop в списке, и он должен быть создан как из цикла for

Первый CurveLoop и Второй CurveLoop, которые должны быть в одном списке First CurveLoop and Second CurveLoop that should be connected

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Похоже, вам нужно добавить один и тот же CurveLoop в список дважды.Таким образом, вы получите один список с двумя соответствующими элементами.

Я бы предложил сделать секунду profile3.Add(profileLoop);

Вы на самом деле не создаете два разных CurveLoops для итератора, только один.Таким образом, вам нужно будет добавить его дважды в список, чтобы ваш результат работал.

0 голосов
/ 03 мая 2019

Проблема

То, что вы делаете здесь, - это передача одного и того же объекта несколько раз в список, а затем задаетесь вопросом, почему все объекты в списке одинаковы.

Решение

Возможно, вы захотите взглянуть на концепцию передачи по ссылке и разницу между ссылочными типами и типами значений .

...