Пример #1
0
        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 });
                    }
                }
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }