protected void AddCheckResultGroup(CheckResultGroup group, bool raiseEvent) { if (group == null) { return; } _checkResultGroups[group.ActionType] = group; if (raiseEvent && CheckResultGroupsAdded != null) { CheckResultGroupsAdded(this, new CheckResultGroupEventArgs() { CheckResultGroups = new CheckResultGroup[] { group } }); } // Index each check result foreach (var checkResult in group.CheckResults) { foreach (var objId in checkResult.SourceIds) { if (_checkResultIndices.ContainsKey(objId)) { _checkResultIndices[objId].Add(checkResult); } else { _checkResultIndices[objId] = new List <CheckResult>(new CheckResult[] { checkResult }); } } } }
private void NewCheckWithPrompt(IEnumerable <ObjectId> selectedIds, string objectName) { Document.Editor.WriteMessage("\n开始检查{0}...", objectName); int count = 0; var agents = _actionAgents.Where(it => _executingActions.Contains(it.Key)).Select(it => it.Value); foreach (var agent in agents) { var checkResults = agent.Action.Check(selectedIds); count += checkResults.Count(); var group = new CheckResultGroup(agent.ActionType, checkResults); AddCheckResultGroup(group, raiseEvent: true); } Document.Editor.WriteMessage("\n检查到{0}处{1}!\n", count, objectName); }
private void Recheck(HashSet <ObjectId> rejectedObjIds, string objectName) { Document.Editor.WriteMessage("\n重新检查{0}...", objectName); // Clear all check results if (PanelViewModel != null) { PanelViewModel.CheckResultsVM.Clear(); } ClearCheckResults(raiseEvent: false); // Recheck IEnumerable <ObjectId> checkedIds = PrepareObjectIdsForCheck(); if (checkedIds == null || !checkedIds.Any()) { return; } int count = 0; var agents = _actionAgents.Where(it => _executingActions.Contains(it.Key)).Select(it => it.Value); foreach (var agent in agents) { var checkResults = agent.Action.Check(checkedIds); count += checkResults.Count(); if (rejectedObjIds != null) { foreach (var checkResult in checkResults) { var ids = checkResult.SourceIds.Intersect(rejectedObjIds); if (ids.Any()) { checkResult.Status = Status.Rejected; } } } var group = new CheckResultGroup(agent.ActionType, checkResults); AddCheckResultGroup(group, raiseEvent: true); } if (DisposeObjectIdsFunc != null) { DisposeObjectIdsFunc(Document, checkedIds); } Document.Editor.WriteMessage("\n检查到{0}处{1}", count, objectName); }