예제 #1
0
        public static void WcsToUcs(List <Triangle> trs)
        {
            CoordinateSystem ceometricUcs = Conversions.GetCeometricUcs();

            if (Conversions.IsWCS(ceometricUcs))
            {
                return;
            }
            Triangle.TransformCoordinates(trs, CoordinateSystem.Global(), ceometricUcs);
        }
예제 #2
0
        public static void WcsToUcs(PointSet ps)
        {
            CoordinateSystem ceometricUcs = Conversions.GetCeometricUcs();

            if (Conversions.IsWCS(ceometricUcs))
            {
                return;
            }
            ps.TransformCoordinates(CoordinateSystem.Global(), ceometricUcs);
        }
예제 #3
0
        public static void WcsToUcs(List <Edge> edges)
        {
            CoordinateSystem ceometricUcs = Conversions.GetCeometricUcs();

            if (Conversions.IsWCS(ceometricUcs))
            {
                return;
            }
            Edge.TransformCoordinates(edges, CoordinateSystem.Global(), ceometricUcs);
        }
예제 #4
0
        public static void EraseDublicates2d(ObjectId[] pointIDs, double epsilon, string keepMultiple, ref int numberOfPointsErased)
        {
            Database      workingDatabase = HostApplicationServices.WorkingDatabase;
            ProgressMeter progressMeter   = new ProgressMeter();
            MessageFilter messageFilter   = new MessageFilter();

            System.Windows.Forms.Application.AddMessageFilter(messageFilter);
            IComparer <IdPoint> comparer = new Class2();
            double num = epsilon * epsilon;

            try
            {
                using (Transaction transaction = workingDatabase.TransactionManager.StartTransaction())
                {
                    CoordinateSystem        ceometricUcs            = Conversions.GetCeometricUcs();
                    CoordinateSystem        actualCS                = CoordinateSystem.Global();
                    CoordinateTransformator coordinateTransformator = new CoordinateTransformator(actualCS, ceometricUcs);
                    List <IdPoint>          list = new List <IdPoint>();
                    for (int i = 0; i < pointIDs.Length; i++)
                    {
                        DBPoint dbPoint = (DBPoint)transaction.GetObject(pointIDs[i], (OpenMode)1, true);
                        IdPoint idPoint = new IdPoint(dbPoint);
                        coordinateTransformator.Transform(idPoint.Point);
                        list.Add(idPoint);
                    }
                    list.Sort(comparer);
                    List <IdPoint> list2 = new List <IdPoint>();
                    for (int j = 0; j < list.Count; j++)
                    {
                        list2.Add(list[j]);
                    }
                    if (keepMultiple == "H")
                    {
                        list.Reverse();
                    }
                    progressMeter.SetLimit(list.Count);
                    if ((double)list.Count > 10000.0)
                    {
                        progressMeter.Start("Eliminating points");
                    }
                    for (int k = 0; k < list.Count; k++)
                    {
                        progressMeter.MeterProgress();
                        messageFilter.CheckMessageFilter((long)k, 1000);
                        IdPoint idPoint2 = list[k];
                        if (!idPoint2.IsErased)
                        {
                            Point   point  = new Point(idPoint2.Point.X - epsilon, -1.7976931348623157E+308, -1.7976931348623157E+308);
                            Point   point2 = new Point(idPoint2.Point.X + epsilon, 1.7976931348623157E+308, 1.7976931348623157E+308);
                            IdPoint item   = new IdPoint(point, ObjectId.Null);
                            IdPoint item2  = new IdPoint(point2, ObjectId.Null);
                            int     num2   = list2.BinarySearch(item, comparer);
                            int     num3   = list2.BinarySearch(item2, comparer);
                            if (num2 < 0)
                            {
                                num2 = Math.Abs(num2) - 2;
                            }
                            if (num2 < 0)
                            {
                                num2 = 0;
                            }
                            if (num2 >= list.Count)
                            {
                                num2 = list.Count - 1;
                            }
                            if (num3 < 0)
                            {
                                num3 = Math.Abs(num3) - 1;
                            }
                            if (num3 < 0)
                            {
                                num3 = 0;
                            }
                            if (num3 >= list.Count)
                            {
                                num3 = list.Count - 1;
                            }
                            for (int l = num2; l <= num3; l++)
                            {
                                if (!list2[l].IsErased && list2[l] != idPoint2 && IdPoint.smethod_0(idPoint2.Point, list2[l].Point) < num)
                                {
                                    list2[l].IsErased = true;
                                    list2[l].DBPoint.Erase();
                                    numberOfPointsErased++;
                                }
                            }
                        }
                    }
                    transaction.Commit();
                }
                progressMeter.Stop();
            }
            catch
            {
                progressMeter.Stop();
                throw;
            }
        }