示例“ObjectManipulator”包含一个名为“DrawingHelperSnapping”的类。那里展示了我如何使用捕捉线绘制叠加层。
我在我的代码中实现了这一点,它工作正常。因为当我将选定的框转换为选定的捕捉线时,它不会起作用。
private void FindClosestEdge(Point2D mousePos, IList edges, IList vertices, ref double minDist, ref Segment2D nearestEdge)
{
if (edges == null)
{
return;
}
foreach (IndexLine edge in edges)
{
var pt1 = (Point3D)vertices[edge.V1];
var pt2 = (Point3D)vertices[edge.V2];
var p2d1 = WorldToScreen(pt1);
var p2d2 = WorldToScreen(pt2);
var seg = new Segment2D(p2d1, p2d2);
var t = seg.ClosestPointTo(mousePos);
if (t >= 0 && t <= 1)
{
var dist = Point2D.Distance(mousePos, seg.PointAt(t));
if (dist < minDist)
{
minDist = dist;
nearestEdge = seg;
// when i take pt1
SnapPosition = pt1;
}
}
}
}
当我使用 pt1 时,它可以将框设置在右侧
当我从蓝色盒子中取出上边时,它设置在右上角而不是左上角,所有其他边它也不起作用信息:我只将 3d 显示为 2d 视图,并且只有盒子
任何建议或帮助示例 thx