Esempio n. 1
0
        public CompareResult Compare(Mate refMate, Mate modMate)
        {
            CompareResultStatus status = CompareResultStatus.Identical;
            string details             = "";
            List <SldWorks.IMateEntity2> refMateEntities = GetMateEntities(refMate);
            List <SldWorks.IMateEntity2> modMateEntities = GetMateEntities(modMate);

            bool isDifferent = refMate.SwMate.Type != modMate.SwMate.Type ||
                               refMate.SwMate.Alignment != modMate.SwMate.Alignment ||
                               refMate.SwMate.CanBeFlipped != modMate.SwMate.CanBeFlipped ||
                               refMate.SwMate.Flipped != modMate.SwMate.Flipped;

            /*
             * System.Console.WriteLine("++++++++++" + refMate.SwMate.Type + " ++ " + modMate.SwMate.Type);
             * System.Console.WriteLine("++++++++++" + refMate.SwMate.Alignment + " ++ " + modMate.SwMate.Alignment);
             * System.Console.WriteLine("++++++++++" + refMate.SwMate.CanBeFlipped + " ++ " + modMate.SwMate.CanBeFlipped);
             * System.Console.WriteLine("++++++++++" + refMate.SwMate.Flipped + " ++ " + modMate.SwMate.Flipped);
             */
            CompareResultStatus mateEntitiesStatus = CompareMateEntities(refMateEntities, modMateEntities);

            if (isDifferent || CompareResultStatus.Different == mateEntitiesStatus)
            {
                status  = CompareResultStatus.Different;
                details = "Mate Type properties and/or Mate Entities Changed";
            }

            return(new CompareResult(refMate.GetID(), status)
            {
                Details = details
            });
        }
Esempio n. 2
0
        // Ameliorations : Creer une entite MateEntity pour utiliser le ListComparator
        private CompareResultStatus CompareMateEntities(List <SldWorks.IMateEntity2> refMateEntities, List <SldWorks.IMateEntity2> modMateEntities)
        {
            CompareResultStatus result           = CompareResultStatus.Identical;
            bool isDifferent                     = false;
            List <SldWorks.IMateEntity2> removed = new List <SldWorks.IMateEntity2>(refMateEntities);
            List <SldWorks.IMateEntity2> added   = new List <SldWorks.IMateEntity2>(modMateEntities);

            foreach (SldWorks.IMateEntity2 refMateEntity in refMateEntities)
            {
                SldWorks.IMateEntity2 modMateEntity = modMateEntities.Find(x => x.ReferenceComponent.GetID() == refMateEntity.ReferenceComponent.GetID());

                if (null != modMateEntity)
                {
                    isDifferent = refMateEntity.ReferenceComponent.Name2 != modMateEntity.ReferenceComponent.Name2 ||
                                  refMateEntity.ReferenceType2 != modMateEntity.ReferenceType2;

                    // SolidWorks API doesnt provide Name property for all IMateReferences
                    // || refMateEntity.Reference.Name != modMateEntity.Reference.Name;

                    removed.Remove(refMateEntity);
                    added.Remove(modMateEntity);
                }
            }

            if (added.Count > 0 || removed.Count > 0 || isDifferent)
            {
                result = CompareResultStatus.Different;
            }

            return(result);
        }
Esempio n. 3
0
 public CompareResult(List <Object> added, List <Object> removed, List <Object> changed, List <Object> unchanged, CompareResultStatus status)
 {
     this.added     = added;
     this.removed   = removed;
     this.changed   = changed;
     this.unchanged = unchanged;
     this.status    = status;
 }
Esempio n. 4
0
        public CompareResult Merge(CompareResult newResult)
        {
            added.AddRange(newResult.Added);
            changed.AddRange(newResult.Changed);
            removed.AddRange(newResult.Removed);
            unchanged.AddRange(newResult.Unchanged);
            status = (CompareResultStatus)Math.Max((int)status, (int)newResult.Status);

            return(this);
        }
Esempio n. 5
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));
        }
Esempio n. 6
0
        public CompareResult Compare(List <AbstractEntity> referenceList, List <AbstractEntity> modifiedList)
        {
            List <Object>       removed   = new List <AbstractEntity>(referenceList).Cast <Object>().ToList();
            List <Object>       added     = new List <AbstractEntity>(modifiedList).Cast <Object>().ToList();
            List <Object>       changed   = new List <CompareResult>().Cast <Object>().ToList();
            List <Object>       unchanged = new List <CompareResult>().Cast <Object>().ToList();
            CompareResultStatus status    = CompareResultStatus.NotPerformed;

            foreach (AbstractEntity referenceEntityToCompare in referenceList)
            {
                AbstractEntity modifiedEntityToCompare = modifiedList.Find(x => x.GetID() == referenceEntityToCompare.GetID());

                if (null != modifiedEntityToCompare)
                {
                    CompareResult result = referenceEntityToCompare.CompareTo(modifiedEntityToCompare);

                    if (CompareResultStatus.Different == result.Status || CompareResultStatus.Similar == result.Status)
                    {
                        // changed.Add(referenceEntityToCompare);
                        // Add CompareResult with a displayName if changed
                        result.DisplayName = referenceEntityToCompare.GetName();
                        changed.Add(result);
                    }
                    else
                    {
                        unchanged.Add(referenceEntityToCompare);
                    }

                    removed.Remove(referenceEntityToCompare);
                    added.Remove(modifiedEntityToCompare);

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

            if (added.Count > 0 || removed.Count > 0)
            {
                status = CompareResultStatus.Different;
            }

            return(new CompareResult(added, removed, changed, unchanged, status));
        }
Esempio n. 7
0
 public CompareResult(CompareResultStatus status)
 {
     this.status = status;
 }
Esempio n. 8
0
 public CompareResult(int comparedId, CompareResultStatus status)
 {
     this.comparedId = comparedId;
     this.status     = status;
 }