我使用revit代码来收集CurveLoop,并创建放样几何体。
使用Curve循环创建CurveLoops可以正常工作(从点创建线)。但是它创建了两个单独的CurveLoops。
我试图将for循环结果添加到新列表(profile3)中。但是它返回两个列表,其中包含一个CurveLoop。在我的情况下,一个列表(profile3)中应该有两个CurveLoops
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);
无法创建放样,因为它在列表中只有一个Curveloop,并且需要从for循环中创建这两个
答案 0 :(得分:1)
您似乎需要两次将相同的CurveLoop
添加到列表中。因此,您最终将获得一个包含两个匹配元素的列表。
我建议再做一次profile3.Add(profileLoop);
您实际上并没有为迭代器创建两个不同的CurveLoops
,而只是创建了一个。因此,您需要将其两次添加到列表中才能使结果生效。
答案 1 :(得分:0)
您在这里所做的是将同一对象多次传递到列表中,然后想知道列表中的所有对象为何都一样。
您可能想看看passing by reference的概念以及reference types and value types之间的区别。