mohsen62sm 发表于 2022-7-6 22:15:05

在一个点中找到两个匹配点

你好
 
我们如何在点集合中找到两个匹配点?
以下代码工作不正常。
 
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;
}
}
}
 
非常感谢。
莫森

RICVBA 发表于 2022-7-6 22:47:05

 
我使用VBA,所以我只是猜测你的问题可能是什么样子。
可能是因为使用了字符串值之间的比较,而不是双值之间的比较。
 
然而,根据我的经验,即使使用双值比较,我也总是发现自己被迫对数字进行四舍五入,以获得符合我需要的匹配。
例如,在VBA中,我使用如下表达式

if (Round(minExt(0), 5) = Round(maxExt(0), 5)) and (Round(minExt(1), 5) = Round(maxExt(1), 5)) then

因此声明我对逗号后最多5位数字的匹配感到满意。
您可以要求更精确的匹配,但首先检查每个数字变量类型的内部精度,以避免寻找不可能的匹配。

BlackBox 发表于 2022-7-6 23:29:31

Linq可以提供一种更方便的方法来执行所需的比较,但从线性角度考虑,可以简单地迭代集合,并将点2D及其索引与集合中的其他索引进行比较。
 
这也可以用于:
 
http://through-the-interface.typepad.com/through_the_interface/2011/01/sorting-an-autocad-point2dcollection-or-point3dcollection-using-net.html
 
干杯
页: [1]
查看完整版本: 在一个点中找到两个匹配点