每个元素的重复端点

duplicate endpoints for every element

我正在努力导出所有墙的顶点。
我设法输出了结果,但是每面墙都有相同的一组顶点。
我使用了获取元素边缘的方法,但每面墙包含 92 个端点,这在我使用的基本墙上是不正确的。
然后我使用获取面孔并从中获取网格然后通过顶点 属性.
获取顶点的方法 这提供了 28 个顶点,这对于某些墙是正确的,但每个元素的坐标都是相同的。
我该如何以正确的方式处理这个问题?

我的代码:

        FilteredElementCollector wallcollector = new FilteredElementCollector(doc).OfClass(typeof(Wall)).WhereElementIsNotElementType();
    bool isconcrete = false;
    foreach (var element in wallcollector.ToElements())
    {
        foreach (var mat in element.GetMaterialIds(false))
        {
            if (doc.GetElement(mat).Name.Contains("Concrete")) isconcrete = true;
        }
        if (isconcrete)
        {
            GeometryElement geo = element.get_Geometry(new Options());
            if (geo != null)
            {
                foreach (var g in geo)
                {
                    Solid geosolid = g as Solid;
                    if (geosolid != null)
                    {
                        foreach (Face f in geosolid.Faces)
                        {
                            Mesh mesh = f.Triangulate();
                            foreach (var xyz in mesh.Vertices)
                            {
                                FillDictionary(xyz, element);
                            }
                        }
                    }
                }
            }
        }
    }

我不认为我的迭代是错误的,因为我基本上只是 foreach 一切,但也许有一些我看不到的隐藏错误。 我使用字典来存储我的数据。 这是我的填写方式:

public void FillDictionary(XYZ point, Element element) {
    if (element.Id.IntegerValue == formerid)
    {
        cornerByID[element.UniqueId].Add(ttr.OfPoint(point));
    }
    else
    {

        cornerlist.Clear();
        cornerlist.Add(element.Name);
        cornerlist.Add(element);
        cornerlist.Add(element.Id);
        cornerlist.Add(ttr.OfPoint(point));
        cornerByID.Add(element.UniqueId, cornerlist);
        formerid = element.Id.IntegerValue;

    }
}

如果您使用带有 XYZ 个对象键的字典,您需要实现 fuzzy comparison to compare the keys.

这是一个 Geometry Traversal to Retrieve Unique Vertices 的例子。

我在 structural concrete setout point add-in 中使用它。