c#CAD开发中列表如何同时存入Line和Polygon属性元素,再在此列表的基础上如何让判断列表内任意属性的两元素是否存在重合点,如果有则删除此两个元素输出新列表
时间: 2024-10-24 14:16:18 浏览: 17
在C# CAD开发中,要创建一个列表同时存储`MapXLib.StyleClass`类型的Line(如`StylePolyLine`)和Polygon元素,你可以这样做:
```csharp
// 创建一个List来存储线和多边形
List<MapXLib.StyleClass> geometryList = new List<MapXLib.StyleClass>();
// 添加Line和Polygon实例到列表
MapXLib.Style stylePolyLine = new MapXLib.StyleClass(); // 假设stylePolyLine有一个独特的ID或坐标信息作为标识
geometryList.Add(stylePolyLine);
// 类似地,添加Polygon实例
// MapXLib.Polygon polygon = new MapXLib.Polygon(); // 同样的逻辑,可能需要polygon的独特标识
// geometryList.Add(polygon);
// 判断并删除重叠元素(假设我们有一个方法用于比较几何形状的重叠)
// 注意这通常涉及到复杂的几何操作,比如计算交集
bool hasOverlap;
while (geometryList.Count > 0)
{
MapXLib.StyleClass firstElement = geometryList[0];
for (int i = 1; i < geometryList.Count; i++)
{
MapXLib.StyleClass secondElement = geometryList[i];
hasOverlap = CheckForIntersection(firstElement, secondElement);
if (hasOverlap)
{
geometryList.RemoveAt(i); // 删除重叠的第二个元素
i--; // 因为已移除,所以需要回退索引
}
else
{
break; // 如果没有重叠,跳出内部循环
}
}
}
// 新列表中不包含重叠的元素
// 输出新列表
foreach (var item in geometryList)
{
Console.WriteLine($"Non-overlapping element: {item.GetType().Name}");
}
```
阅读全文