namespace Yw.WpfUI.Hydro
|
{
|
/// <summary>
|
/// 绘制编辑管理器
|
/// </summary>
|
internal class DrawEditManager : DrawManager
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public DrawEditManager(HelixViewport3D viewport) : base(viewport)
|
{
|
_moudingHelper = new DrawMoudingHelper(viewport, _initialHelper);
|
_addHelper = new DrawAddHelper(viewport, _initialHelper, _workPanelHelper, _highlightHelper, _selectionHelper, _moudingHelper);
|
_addHelper.AddChangedEvent += OnAddChanged;
|
_editHelper = new DrawEditHelper(viewport, _initialHelper, _selectionHelper);
|
_editHelper.EditChangedEvent += OnEditChanged;
|
}
|
|
|
#region 事件集合
|
|
/// <summary>
|
/// 添加改变事件
|
/// </summary>
|
public event Action<VisualL3d> AddChangedEvent;
|
|
/// <summary>
|
/// 编辑改变事件
|
/// </summary>
|
public event Action<List<VisualL3d>> EditChangedEvent;
|
|
#endregion
|
|
protected readonly DrawMoudingHelper _moudingHelper = null;//牟定辅助类
|
protected readonly DrawAddHelper _addHelper = null;//添加辅助类
|
protected readonly DrawEditHelper _editHelper = null;//编辑辅助类
|
|
#region 添加方法
|
|
/// <summary>
|
/// 设置添加模式
|
/// </summary>
|
public virtual void SetAddMode(eDrawAddWay addWay, eDrawAddType addType)
|
{
|
if (!Initialized)
|
{
|
return;
|
}
|
_addHelper.SetAddMode(addWay, addType);
|
}
|
|
/// <summary>
|
/// 设置添加方式
|
/// </summary>
|
public virtual void SetAddWay(eDrawAddWay addWay)
|
{
|
if (!Initialized)
|
{
|
return;
|
}
|
_addHelper.SetAddWay(addWay);
|
}
|
|
/// <summary>
|
/// 设置添加类型
|
/// </summary>
|
public virtual void SetAddType(eDrawAddType addType)
|
{
|
if (!Initialized)
|
{
|
return;
|
}
|
_addHelper.SetAddType(addType);
|
}
|
|
//处理添加改变
|
protected virtual void OnAddChanged(VisualDraw3D visual3d)
|
{
|
if (visual3d == null)
|
{
|
return;
|
}
|
this.AddChangedEvent?.Invoke(visual3d.Visual);
|
}
|
|
|
#endregion
|
|
#region 编辑方法
|
|
/// <summary>
|
/// 开始编辑
|
/// </summary>
|
public virtual void StartEdit()
|
{
|
_editHelper.Start();
|
}
|
|
/// <summary>
|
/// 结束编辑
|
/// </summary>
|
public virtual void EndEdit()
|
{
|
_editHelper.End();
|
}
|
|
//处理编辑改变
|
protected virtual void OnEditChanged(List<VisualDraw3D> visual3ds)
|
{
|
if (visual3ds == null || visual3ds.Count < 1)
|
{
|
return;
|
}
|
var visuals = visual3ds.Select(x => x.Visual).ToList();
|
this.EditChangedEvent?.Invoke(visuals);
|
}
|
|
#endregion
|
|
/// <summary>
|
/// 关闭
|
/// </summary>
|
public override void Close()
|
{
|
_addHelper.AddChangedEvent -= OnAddChanged;
|
_addHelper.Dispose();
|
_editHelper.EditChangedEvent -= OnEditChanged;
|
_editHelper.Dispose();
|
base.Close();
|
}
|
|
|
|
}
|
}
|