105040 Update 将线材两头连接的元器件加入选中项中,同时设置选中效果

This commit is contained in:
lihanbo 2025-01-20 17:07:41 +08:00
parent f6ca75223a
commit 373e23ba08
1 changed files with 44 additions and 9 deletions

View File

@ -262,15 +262,16 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel
var oriOcc = SelfControler<BaseOccurrence>.FindInstance(occ.ID);
var parent = oriOcc.Parents?.FirstOrDefault();
var grandparent = parent.Parents?.FirstOrDefault();
scanCableModel.S_partObj = grandparent;
scanCableModel.S_part = grandparent.Name;
S_part = scanCableModel.S_part;
}
if (occ.ID.Equals(scanCableModel.E_pinID))
{
var oriOcc = SelfControler<BaseOccurrence>.FindInstance(occ.ID);
var parent = oriOcc.Parents?.FirstOrDefault();
var grandparent = parent.Parents?.FirstOrDefault();
scanCableModel.E_partObj = grandparent;
scanCableModel.E_part = grandparent.Name;
E_part = scanCableModel.E_part;
}
@ -342,18 +343,14 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel
// 扫描即装配
if (ScanAndAssembled)
{
//cable.IsChecked = true;
ScanCableModel scanCableModel = new ScanCableModel();
scanCableModel = cable;
cable.IsChecked = true;
_ScanCableModels.Remove(cable);
_ScanCableModels.Insert(0, scanCableModel);
_ScanCableModels.FirstOrDefault().IsChecked = true;
ToMotorSource(scanCableModel);
_ScanCableModels.Insert(0, cable);
}
GetWireConnectPart(cable);
ScanedIndex = 0;//Math.Max(cable.Index - 1, 0);
ToSourceById(cable.Id);
ToSourceById(cable);
}
else
@ -426,6 +423,44 @@ namespace Sinvo.EplanHpD.Plugin.WPFUI.ViewModel
*/
}
}
/// <summary>
/// 将设计器聚焦到对应的线
/// </summary>
/// <param name="occId"></param>
private void ToSourceById(ScanCableModel scanedWire)
{
var occId = scanedWire.Id;
// 从设计器中获取线实例
var occWire = _currentFlexDesigner.GetOccurrenceByID(occId);
if (occWire != null)
{
// 设置线显示
occWire.SetVisibility(true, null);
// 清空已选择项并加入当前线
_currentFlexDesigner.SelectSet.Clear();
_currentFlexDesigner.SelectSet.Add(scanedWire.S_partObj.Children.Where(it => it.Type == OCC_TYPE.wPART));
_currentFlexDesigner.SelectSet.Add(scanedWire.E_partObj.Children.Where(it => it.Type == OCC_TYPE.wPART));
_currentFlexDesigner.SelectSet.Add(occWire);
// 缩放设计器且触发选中事件
_currentFlexDesigner.FitToSelectSet();
_currentFlexDesigner.SelectSet.OnSelectionChanged();
//_currentFlexDesigner.Camera.GraphicControl._HighlightNode()
/*
List<DatTreeNodeEx<BaseOccurrence>> nodeByEntity = this._occTreeView.GetNodeByEntity(baseOccurrence);
if (nodeByEntity != null)
{
foreach (DatTreeNodeEx<BaseOccurrence> datTreeNodeEx in nodeByEntity)
{
if (!this._occTreeView.SelectedNodes.Contains(datTreeNodeEx))
{
this._occTreeView.SelectedNodes.Add(datTreeNodeEx);
}
}
}
*/
}
}