在一个点中找到两个匹配点
你好我们如何在点集合中找到两个匹配点?
以下代码工作不正常。
Point2dCollection colPt=new Point2dCollection();
字符串sDoubleVertex=“”;
对于(int nCnt1=0;nCnt1
{
对于(int nCnt2=0;nCnt2
{
//进入下一个迭代。
如果(nCnt1==nCnt2)继续;
if((colPt.X.ToString()==colPt。十、 ToString())&&
(colPt.Y.ToString()==colPt。Y、 ToString()))
{
sDoubleVertex=nCnt2。ToString()+“,”+sDoubleVertex;
}
}
}
非常感谢。
莫森
我使用VBA,所以我只是猜测你的问题可能是什么样子。
可能是因为使用了字符串值之间的比较,而不是双值之间的比较。
然而,根据我的经验,即使使用双值比较,我也总是发现自己被迫对数字进行四舍五入,以获得符合我需要的匹配。
例如,在VBA中,我使用如下表达式
if (Round(minExt(0), 5) = Round(maxExt(0), 5)) and (Round(minExt(1), 5) = Round(maxExt(1), 5)) then
因此声明我对逗号后最多5位数字的匹配感到满意。
您可以要求更精确的匹配,但首先检查每个数字变量类型的内部精度,以避免寻找不可能的匹配。 Linq可以提供一种更方便的方法来执行所需的比较,但从线性角度考虑,可以简单地迭代集合,并将点2D及其索引与集合中的其他索引进行比较。
这也可以用于:
http://through-the-interface.typepad.com/through_the_interface/2011/01/sorting-an-autocad-point2dcollection-or-point3dcollection-using-net.html
干杯
页:
[1]