年度变更建库软件5.0版本
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

113 lines
3.4 KiB

namespace Kingo.Plugin.NYYP.Tool
{
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Geometry;
using System;
public class EngineSnapAgentClass
{
private EngineEditor m_editEnvironment = new EngineEditorClass();
private static EngineSnapAgentClass m_instance;
private bool m_isHasSnap = false;
private IMarkerSymbol m_snapMarkerSymbool;
private IPoint m_SnapPoint;
private EngineSnapAgentClass()
{
IEngineEditProperties editEnvironment = (IEngineEditProperties)this.m_editEnvironment;
this.m_snapMarkerSymbool = editEnvironment.SnapSymbol;
}
private void DrawSnapPoint(IActiveView activeView, IPoint point)
{
IScreenDisplay screenDisplay = activeView.ScreenDisplay;
screenDisplay.StartDrawing(screenDisplay.hDC, -1);
screenDisplay.SetSymbol((ISymbol)this.m_snapMarkerSymbool);
screenDisplay.DrawPoint(point);
screenDisplay.FinishDrawing();
screenDisplay = null;
}
public void Reset()
{
this.m_isHasSnap = false;
this.m_SnapPoint = null;
}
public void SetSnapTolerance(double pSnapTolerance)
{
((IEngineSnapEnvironment)this.m_editEnvironment).SnapTolerance = pSnapTolerance;
}
public bool SnapPoint(IActiveView activeView, IPoint inPoint)
{
try
{
if (this.m_isHasSnap && (this.m_SnapPoint != null))
{
this.DrawSnapPoint(activeView, this.m_SnapPoint);
}
this.m_isHasSnap = ((IEngineSnapEnvironment)this.m_editEnvironment).SnapPoint(inPoint);
if (this.m_isHasSnap)
{
this.m_SnapPoint = inPoint;
this.DrawSnapPoint(activeView, this.m_SnapPoint);
}
return this.m_isHasSnap;
}
catch (Exception ex)
{
KGIS.Framework.Utils.LogAPI.Debug(ex);
return false;
}
}
public bool HasSnapPoint
{
get
{
return this.m_isHasSnap;
}
}
public static EngineSnapAgentClass Instance
{
get
{
if (m_instance == null)
{
m_instance = new EngineSnapAgentClass();
}
return m_instance;
}
}
public IPoint SnapedPoint
{
get
{
return this.m_SnapPoint;
}
}
public void ClearSnapAgents()
{
((IEngineSnapEnvironment)this.m_editEnvironment).ClearSnapAgents();
}
public void AddSnapAgent(IEngineSnapAgent SnapAgent)
{
IEngineSnapEnvironment snapEnv = (IEngineSnapEnvironment)this.m_editEnvironment;
//for (int i = 0; i < snapEnv.SnapAgentCount; i++)
//{
// IEngineSnapAgent agent = snapEnv.get_SnapAgent(i);
// if (agent == SnapAgent)
// {
// return agent;
// }
//}
snapEnv.AddSnapAgent(SnapAgent);
//return SnapAgent;
}
}
}