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)); } }
// 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)); }