SpaceClaim.AddIn.Unfold.CopyCurvesButtonCapsule.OnExecute C# (CSharp) Method

OnExecute() protected method

protected OnExecute ( System.Windows.Forms.Command command, SpaceClaim.Api.V10.ExecutionContext context, System buttonRect ) : void
command System.Windows.Forms.Command
context SpaceClaim.Api.V10.ExecutionContext
buttonRect System
return void
        protected override void OnExecute(Command command, ExecutionContext context, System.Drawing.Rectangle buttonRect)
        {
            base.OnExecute(command, context, buttonRect);

            List<ITrimmedCurve> iTrimmedCurves = new List<ITrimmedCurve>(activeWindow.GetAllSelectedITrimmedCurves());
            List<ITrimmedCurve> uniqueCurves = new List<ITrimmedCurve>();
            uniqueCurves.Add(iTrimmedCurves[0]);
            iTrimmedCurves.RemoveAt(0);

            foreach (ITrimmedCurve candidate in iTrimmedCurves) {
                ITrimmedCurve notUnique = null;
                foreach (ITrimmedCurve uniqueCurve in uniqueCurves) {
                    if (candidate.IsCoincident(uniqueCurve))
                        notUnique = uniqueCurve;
                }

                if (notUnique != null) {
                    uniqueCurves.Remove(notUnique);
                    continue;
                }

                uniqueCurves.Add(candidate);
            }

            // Old crappy way
            //Dictionary<ITrimmedCurve, bool> uniqueCurves = new Dictionary<ITrimmedCurve, bool>(new ITrimmedCurveComparer());

            //foreach (ITrimmedCurve iTrimmedCurve in iTrimmedCurves) {
            //    if (!uniqueCurves.ContainsKey(iTrimmedCurve))
            //        uniqueCurves.Add(iTrimmedCurve, false);
            //    else
            //        uniqueCurves[iTrimmedCurve] = !uniqueCurves[iTrimmedCurve];
            //}

            //foreach (ITrimmedCurve iTrimmedCurve in uniqueCurves.Keys) {

            foreach (ITrimmedCurve iTrimmedCurve in uniqueCurves)
                DesignCurve.Create(part, iTrimmedCurve);
        }