Exemplo n.º 1
0
        public override CompareResult CompareTo(AbstractEntity target)
        {
            ModelDoc2 refPartDoc = (ModelDoc2)SwPart;
            ModelDoc2 modPartDoc = (ModelDoc2)((Part)target).SwPart;

            CompareResult nomenclatureResult = DocumentPropertyComparator.Instance.Compare(refPartDoc, modPartDoc);
            // Console.WriteLine(" +++++ Part " + targetPartDoc.GetPathName() + " --- " + result);

            // Deep Comparison
            CompareResult geometricResult = new VolumeComparator().Compare(refPartDoc, modPartDoc);

            if (nomenclatureResult.Status == CompareResultStatus.Identical && geometricResult.Status == CompareResultStatus.Identical)
            {
                return(new CompareResult(GetID(), CompareResultStatus.Identical));
            }
            else if (nomenclatureResult.Status == CompareResultStatus.Identical && geometricResult.Status == CompareResultStatus.Different)
            {
                return(new CompareResult(GetID(), CompareResultStatus.Similar));
            }
            else if (nomenclatureResult.Status == CompareResultStatus.Similar && geometricResult.Status == CompareResultStatus.Identical)
            {
                return(new CompareResult(GetID(), CompareResultStatus.Identical));
            }
            else if (nomenclatureResult.Status == CompareResultStatus.Similar && geometricResult.Status == CompareResultStatus.Different)
            {
                return(new CompareResult(GetID(), CompareResultStatus.Different));
            }
            else
            {
                Logger.Warn("Parts Comparison has returned an unexpected value.");
                return(new CompareResult(GetID(), CompareResultStatus.NotPerformed));
            }
        }
Exemplo n.º 2
0
        // Return all parts without suppressed

        /*public List<Object> GetComponents()
         * {
         *  return new List<Object>((Object[])swAssembly.GetComponents(false));
         * }
         */

        public override CompareResult CompareTo(AbstractEntity target)
        {
            List <Object>       added     = new List <Object>();
            List <Object>       removed   = new List <Object>();
            List <Object>       modified  = new List <Object>();
            List <Object>       unchanged = new List <Object>();
            CompareResultStatus status    = CompareResultStatus.NotPerformed;

            CompareResult partsComparison         = ListComparator.Instance.Compare(parts.Cast <AbstractEntity>().ToList(), ((Assembly)target).GetParts().Cast <AbstractEntity>().ToList());
            CompareResult matesComparison         = ListComparator.Instance.Compare(mates.Cast <AbstractEntity>().ToList(), ((Assembly)target).GetMates().Cast <AbstractEntity>().ToList());
            CompareResult bodyFeaturesComparison  = ListComparator.Instance.Compare(bodyFeatures.Cast <AbstractEntity>().ToList(), ((Assembly)target).GetBodyFeatures().Cast <AbstractEntity>().ToList());
            CompareResult subAssembliesComparison = ListComparator.Instance.Compare(subAssemblies.Cast <AbstractEntity>().ToList(), ((Assembly)target).GetSubAssemblies().Cast <AbstractEntity>().ToList());
            CompareResult geometricComparison     = new VolumeComparator().Compare((ModelDoc2)this.swAssembly, (ModelDoc2)((Assembly)target).swAssembly);

            status = (CompareResultStatus)Math.Max((int)status, (int)partsComparison.Status);

            return(partsComparison.Merge(matesComparison).Merge(bodyFeaturesComparison).Merge(subAssembliesComparison).Merge(geometricComparison));
        }