| | |
| | | |
| | | private eLogicalEditMode _logicalMode = eLogicalEditMode.None;//编辑模式 |
| | | private LogicalVisual3D _addLogicalVisual;//添加抽象对象 |
| | | private LogicalVisual3D _editLogicalVisual;//编辑抽象对象 |
| | | private LogicalNode3D _editLogicalNode;//编辑抽象节点 |
| | | |
| | | |
| | | #region 添加方法 |
| | |
| | | _logicalMode = eLogicalEditMode.Edit; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 结束编辑 |
| | | /// </summary> |
| | | public void EndEdit() |
| | | { |
| | | _logicalMode = eLogicalEditMode.None; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 重写事件 |
| | |
| | | junction.Catalog = CatalogL3d.Junction; |
| | | junction.Name = _nw.CreateName(CatalogL3d.Junction); |
| | | junction.Position = sp.Value.ToPointL3d(); |
| | | _stateHelper.LoadState(junction, eLogicalState.Adding); |
| | | var logicalJunction = CreateLogicalVisual(junction); |
| | | logicalJunction.UpdateVisual(); |
| | | AddLogicalVisual(logicalJunction); |
| | |
| | | reservoir.Catalog = CatalogL3d.Reservoir; |
| | | reservoir.Name = _nw.CreateName(CatalogL3d.Reservoir); |
| | | reservoir.Position = sp.Value.ToPointL3d(); |
| | | _stateHelper.LoadState(reservoir, eLogicalState.Adding); |
| | | var logicalReservoir = CreateLogicalVisual(reservoir); |
| | | logicalReservoir.UpdateVisual(); |
| | | AddLogicalVisual(logicalReservoir); |
| | |
| | | tank.Catalog = CatalogL3d.Tank; |
| | | tank.Name = _nw.CreateName(CatalogL3d.Tank); |
| | | tank.Position = sp.Value.ToPointL3d(); |
| | | _stateHelper.LoadState(tank, eLogicalState.Adding); |
| | | var logicalTank = CreateLogicalVisual(tank); |
| | | logicalTank.UpdateVisual(); |
| | | AddLogicalVisual(logicalTank); |
| | |
| | | pipe.Catalog = CatalogL3d.Pipe; |
| | | pipe.Name = _nw.CreateName(CatalogL3d.Pipe); |
| | | pipe.StartNode = logicalNode.Vmo; |
| | | _stateHelper.LoadState(pipe, eLogicalState.Adding); |
| | | var logicalPipe = CreateLogicalVisual(pipe) as LogicalPipe3D; |
| | | logicalPipe.EndPosition = logicalNode.Position; |
| | | logicalPipe.UpdateVisual(); |
| | |
| | | pipe.Catalog = CatalogL3d.Pipe; |
| | | pipe.Name = _nw.CreateName(CatalogL3d.Pipe); |
| | | pipe.StartNode = logicalNode.Vmo; |
| | | _stateHelper.LoadState(pipe, eLogicalState.Adding); |
| | | var logicalPipe = CreateLogicalVisual(pipe) as LogicalPipe3D; |
| | | logicalPipe.EndPosition = logicalNode.Position; |
| | | logicalPipe.UpdateVisual(); |
| | |
| | | pipe.Catalog = CatalogL3d.Pipe; |
| | | pipe.Name = _nw.CreateName(CatalogL3d.Pipe); |
| | | pipe.StartNode = logicalNode.Vmo; |
| | | _stateHelper.LoadState(pipe, eLogicalState.Adding); |
| | | var logicalPipe = CreateLogicalVisual(pipe) as LogicalPipe3D; |
| | | logicalPipe.EndPosition = logicalNode.Position; |
| | | logicalPipe.UpdateVisual(); |
| | |
| | | pump.Catalog = CatalogL3d.Pump; |
| | | pump.Name = _nw.CreateName(CatalogL3d.Pump); |
| | | pump.StartNode = logicalNode.Vmo; |
| | | _stateHelper.LoadState(pump, eLogicalState.Adding); |
| | | var logicalPump = CreateLogicalVisual(pump) as LogicalPump3D; |
| | | logicalPump.EndPosition = logicalNode.Position; |
| | | logicalPump.UpdateVisual(); |
| | |
| | | valve.Catalog = CatalogL3d.Valve; |
| | | valve.Name = _nw.CreateName(CatalogL3d.Valve); |
| | | valve.StartNode = logicalNode.Vmo; |
| | | _stateHelper.LoadState(valve, eLogicalState.Adding); |
| | | var logicalValve = CreateLogicalVisual(valve) as LogicalValve3D; |
| | | logicalValve.EndPosition = logicalNode.Position; |
| | | logicalValve.UpdateVisual(); |
| | | AddLogicalVisual(logicalValve); |
| | | _addLogicalVisual = logicalValve; |
| | | } |
| | | } |
| | | break; |
| | | case eLogicalEditMode.Edit: |
| | | { |
| | | var pt = e.GetPosition(_viewport); |
| | | var logicalNode = SnapNearestNode(pt); |
| | | if (logicalNode != null) |
| | | { |
| | | var node = logicalNode.Vmo; |
| | | _stateHelper.LoadState(logicalNode.Vmo, eLogicalState.Editing); |
| | | _editLogicalNode = logicalNode; |
| | | } |
| | | } |
| | | break; |
| | |
| | | } |
| | | } |
| | | break; |
| | | case eLogicalEditMode.Edit: |
| | | { |
| | | base.OnMouseMove(e); |
| | | if (_editLogicalNode != null) |
| | | { |
| | | var pt = e.GetPosition(_viewport); |
| | | var sp = _viewport.Viewport.UnProject(pt); |
| | | if (sp.HasValue) |
| | | { |
| | | var node = _editLogicalNode.Vmo; |
| | | node.Position = sp.Value.ToPointL3d(); |
| | | _editLogicalNode.UpdateVisual(); |
| | | var links = _nw.Links.Where(x => x.StartNode == node || x.EndNode == node).ToList(); |
| | | links?.ForEach(x => _allVisualLogicalDict[x].UpdateVisual()); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | default: |
| | | { |
| | | base.OnMouseMove(e); |
| | |
| | | var logicalJunction = _addLogicalVisual as LogicalJunction3D; |
| | | if (logicalJunction != null) |
| | | { |
| | | _stateHelper.UnloadState(logicalJunction.Vmo, eLogicalState.Adding); |
| | | if (!logicalJunction.Verify()) |
| | | { |
| | | RemoveLogicalVisual(logicalJunction); |
| | |
| | | var logicalReservoir = _addLogicalVisual as LogicalReservoir3D; |
| | | if (logicalReservoir != null) |
| | | { |
| | | _stateHelper.UnloadState(logicalReservoir.Vmo, eLogicalState.Adding); |
| | | if (!logicalReservoir.Verify()) |
| | | { |
| | | RemoveLogicalVisual(logicalReservoir); |
| | |
| | | var logicalTank = _addLogicalVisual as LogicalTank3D; |
| | | if (logicalTank != null) |
| | | { |
| | | _stateHelper.UnloadState(logicalTank.Vmo, eLogicalState.Adding); |
| | | if (!logicalTank.Verify()) |
| | | { |
| | | RemoveLogicalVisual(logicalTank); |
| | |
| | | var logicalPipe = _addLogicalVisual as LogicalPipe3D; |
| | | if (logicalPipe != null) |
| | | { |
| | | _stateHelper.UnloadState(logicalPipe.Vmo, eLogicalState.Adding); |
| | | var pt = e.GetPosition(_viewport); |
| | | var logicalNode = SnapNearestNode(pt); |
| | | if (logicalNode == null) |
| | |
| | | var logicalPipe = _addLogicalVisual as LogicalPipe3D; |
| | | if (logicalPipe != null) |
| | | { |
| | | _stateHelper.UnloadState(logicalPipe.Vmo, eLogicalState.Adding); |
| | | var end = logicalPipe.EndPosition; |
| | | var logicalNode = SnapNearestNode(end); |
| | | if (logicalNode == null) |
| | |
| | | var logicalPipe = _addLogicalVisual as LogicalPipe3D; |
| | | if (logicalPipe != null) |
| | | { |
| | | _stateHelper.UnloadState(logicalPipe.Vmo, eLogicalState.Adding); |
| | | var end = logicalPipe.EndPosition; |
| | | var logicalNode = SnapNearestNode(end); |
| | | if (logicalNode == null) |
| | |
| | | var logicalPump = _addLogicalVisual as LogicalPump3D; |
| | | if (logicalPump != null) |
| | | { |
| | | _stateHelper.UnloadState(logicalPump.Vmo, eLogicalState.Adding); |
| | | var pt = e.GetPosition(_viewport); |
| | | var logicalNode = SnapNearestNode(pt); |
| | | if (logicalNode == null) |
| | |
| | | var logicalValve = _addLogicalVisual as LogicalValve3D; |
| | | if (logicalValve != null) |
| | | { |
| | | _stateHelper.UnloadState(logicalValve.Vmo, eLogicalState.Adding); |
| | | var pt = e.GetPosition(_viewport); |
| | | var logicalNode = SnapNearestNode(pt); |
| | | if (logicalNode == null) |
| | |
| | | } |
| | | } |
| | | break; |
| | | case eLogicalEditMode.Edit: |
| | | { |
| | | if (_editLogicalNode != null) |
| | | { |
| | | _stateHelper.UnloadState(_editLogicalNode.Vmo, eLogicalState.Editing); |
| | | } |
| | | _editLogicalNode = null; |
| | | } |
| | | break; |
| | | default: |
| | | { |
| | | base.OnMouseUp(e); |