необходимо найти координаты курсора в произвольной плоскости во время jig.
Действовать задумал так:
1) определить точку курсора на дравинге
2) определить вектор view
3) найти точку пересечения получившейся линии с моей плоскостью.
Проблема в 1 пункте.
Необходимо узнать позицию курсора в 3d во время работы jig. Например если ECS=WCS и смотрим со стороны Right. Хотел воспользоваться отслеживание через PointMonitor, но во время работы jig координата Z точки всегда равна 0. Аналогичный результат возвращает так же AcquirePoint.
[Autodesk.AutoCAD.Runtime.CommandMethod("PointMonitorOn", Autodesk.AutoCAD.Runtime.CommandFlags.Modal)]
public void PointMonitorOn()
{
currentDocument.Editor.PointMonitor += Editor_PointMonitor;
}
[Autodesk.AutoCAD.Runtime.CommandMethod("TestJig", Autodesk.AutoCAD.Runtime.CommandFlags.Modal)]
public void TestJig()
{
var jigRes = currentDocument.Editor.Drag(new TestJigClass());
if (jigRes.Status == PromptStatus.OK)
{
//
}
//
}
private void Editor_PointMonitor(object sender, PointMonitorEventArgs e)
{
var ed = sender as Editor;
if (ed == null)
return;
ed.WriteMessage($"{e.Context.ComputedPoint:F4}\n");
}
public class TestJigClass : DrawJig
{
private Point3d _previousPos;
protected override bool WorldDraw(WorldDraw wd)
{
return true;
}
protected override SamplerStatus Sampler(JigPrompts prompts)
{
var prResult = prompts.AcquirePoint();
if (prResult.Status == PromptStatus.OK)
{
if (System.Math.Round(_previousPos.DistanceTo(prResult.Value), ECGeometry.Epsilon.Eps) == 0)
return SamplerStatus.NoChange;
else
{
_previousPos = prResult.Value;
return SamplerStatus.OK;
}
}
return SamplerStatus.Cancel;
}
}