private bool PerformLocate(string locateText)
        {
            Document document = AfaDocData.ActiveDocData.Document;
            Editor   editor   = document.Editor;

            if (string.IsNullOrEmpty(locateText))
            {
                editor.WriteMessage(AfaStrings.InvalidPlaceText);
                return(false);
            }
            AGSGeometryServer sampleServer = AGSGeometryServer.GetSampleServer();

            if (sampleServer == null)
            {
                ErrorReport.ShowErrorMessage(AfaStrings.UnableToConnectGeometryService);
                return(false);
            }
            string text = "PROJCS[\"WGS_1984_Web_Mercator_Auxiliary_Sphere\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Mercator_Auxiliary_Sphere\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Standard_Parallel_1\",0.0],PARAMETER[\"Auxiliary_Sphere_Type\",0.0],UNIT[\"Meter\",1.0],AUTHORITY[\"EPSG\",3857]]".ToString();
            bool   result;

            try
            {
                text = MSCPrj.ReadWKT(document);
                if (string.IsNullOrEmpty(text))
                {
                    text = "PROJCS[\"WGS_1984_Web_Mercator_Auxiliary_Sphere\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Mercator_Auxiliary_Sphere\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Standard_Parallel_1\",0.0],PARAMETER[\"Auxiliary_Sphere_Type\",0.0],UNIT[\"Meter\",1.0],AUTHORITY[\"EPSG\",3857]]".ToString();
                    MSCPrj.AssignWKT(document, "PROJCS[\"WGS_1984_Web_Mercator_Auxiliary_Sphere\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Mercator_Auxiliary_Sphere\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Standard_Parallel_1\",0.0],PARAMETER[\"Auxiliary_Sphere_Type\",0.0],UNIT[\"Meter\",1.0],AUTHORITY[\"EPSG\",3857]]");
                }
            }
            catch
            {
                ErrorReport.ShowErrorMessage(AfaStrings.ErrorCreatingWKT);
                result = false;
                return(result);
            }
            if (!MSCPrj.IsWKID(text))
            {
                try
                {
                    text = sampleServer.GetSpatialReferenceWKID(text);
                    if (string.IsNullOrEmpty(text))
                    {
                        string text2 = sampleServer.ErrorMessage;
                        if (string.IsNullOrEmpty(text2))
                        {
                            text2 = AfaStrings.UnsupportedCoordinateSystemForLocate;
                        }
                        ErrorReport.ShowErrorMessage(text2);
                        result = false;
                        return(result);
                    }
                }
                catch
                {
                    text = "PROJCS[\"WGS_1984_Web_Mercator_Auxiliary_Sphere\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Mercator_Auxiliary_Sphere\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Standard_Parallel_1\",0.0],PARAMETER[\"Auxiliary_Sphere_Type\",0.0],UNIT[\"Meter\",1.0],AUTHORITY[\"EPSG\",3857]]";
                }
            }
            try
            {
                Convert.ToInt32(text);
            }
            catch
            {
                editor.WriteMessage(AfaStrings.UnsupportedCoordinateSystemForLocate);
                result = false;
                return(result);
            }
            Mouse.OverrideCursor = Cursors.Wait;
            AGSLocator aGSLocator = this.cbLocator.SelectedItem as AGSLocator;
            string     uRL        = aGSLocator.URL;
            string     arg        = uRL.TrimEnd(new char[]
            {
                '/',
                '\\'
            });
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append("/findAddressCandidates?SingleLine=");
            stringBuilder.Append(this.tbPlace.Text);
            stringBuilder.AppendFormat("&outSR={0}", text);
            stringBuilder.AppendFormat("&f={0}", "json");
            try
            {
                IDictionary <string, object> dictionary = aGSLocator.ParentConnection.MakeDictionaryRequest(arg + stringBuilder);
                if (dictionary.ContainsKey("error"))
                {
                    editor.WriteMessage(AfaStrings.ErrorConnectingToServer);
                    Mouse.OverrideCursor = null;
                    result = false;
                }
                else
                {
                    CadField cadField = new CadField();
                    cadField.Name     = AfaStrings.SearchString;
                    cadField.Value    = new TypedValue(1, this.tbPlace.Text);
                    cadField.ReadOnly = true;
                    if (dictionary.ContainsKey("candidates"))
                    {
                        DocUtil.FixPDMode();
                        using (document.LockDocument((DocumentLockMode)20, null, null, false))
                        {
                            List <ObjectId> list     = new List <ObjectId>();
                            Database        database = document.Database;
                            try
                            {
                                using (Transaction transaction = document.TransactionManager.StartTransaction())
                                {
                                    BlockTable       blockTable       = (BlockTable)transaction.GetObject(database.BlockTableId, (OpenMode)1, false);
                                    BlockTableRecord blockTableRecord = (BlockTableRecord)transaction.GetObject(blockTable[(BlockTableRecord.ModelSpace)], (OpenMode)1, false);
                                    this.CreateLocationsFeatureClass();
                                    DocUtil.FixPDMode();
                                    string               text3           = "ESRI_Locations";
                                    ObjectId             layer           = DocUtil.GetLayer(database, transaction, ref text3, null);
                                    ObjectId             blockDefinition = DocUtil.GetBlockDefinition(document, transaction, "ESRI_Locations");
                                    IEnumerable <object> enumerable      = dictionary["candidates"] as IEnumerable <object>;
                                    using (IEnumerator <object> enumerator = enumerable.GetEnumerator())
                                    {
                                        while (enumerator.MoveNext())
                                        {
                                            IDictionary <string, object> dictionary2 = (IDictionary <string, object>)enumerator.Current;
                                            CadField cadField2 = null;
                                            CadField cadField3 = null;
                                            if (dictionary2.ContainsKey("address"))
                                            {
                                                string text4 = dictionary2["address"].ToString();
                                                cadField3          = new CadField();
                                                cadField3.Name     = "Address";
                                                cadField3.Value    = new TypedValue(1, text4);
                                                cadField3.ReadOnly = true;
                                            }
                                            if (dictionary2.ContainsKey("score"))
                                            {
                                                try
                                                {
                                                    int num = Convert.ToInt32(dictionary2["score"]);
                                                    cadField2          = new CadField();
                                                    cadField2.Name     = "Score";
                                                    cadField2.Value    = new TypedValue(90, num);
                                                    cadField2.ReadOnly = true;
                                                }
                                                catch
                                                {
                                                }
                                            }
                                            if (dictionary2.ContainsKey("location"))
                                            {
                                                try
                                                {
                                                    IDictionary <string, object> dictionary3 = dictionary2["location"] as IDictionary <string, object>;
                                                    double num2 = Convert.ToDouble(dictionary3["x"]);
                                                    double num3 = Convert.ToDouble(dictionary3["y"]);
                                                    Entity entity;
                                                    if (blockDefinition != ObjectId.Null)
                                                    {
                                                        entity = new BlockReference(new Point3d(num2, num3, 0.0), blockDefinition);
                                                    }
                                                    else
                                                    {
                                                        entity = new DBPoint(new Point3d(num2, num3, 0.0));
                                                    }
                                                    entity.LayerId    = (layer);
                                                    entity.ColorIndex = (256);
                                                    ObjectId item = blockTableRecord.AppendEntity(entity);
                                                    transaction.AddNewlyCreatedDBObject(entity, true);
                                                    list.Add(item);
                                                    if (cadField3 != null)
                                                    {
                                                        CadField.AddCadAttributeToEntity(database, transaction, entity.ObjectId, cadField3);
                                                    }
                                                    if (cadField2 != null)
                                                    {
                                                        CadField.AddCadAttributeToEntity(database, transaction, entity.ObjectId, cadField2);
                                                    }
                                                    CadField.AddCadAttributeToEntity(database, transaction, entity.ObjectId, cadField);
                                                    document.TransactionManager.QueueForGraphicsFlush();
                                                    document.TransactionManager.FlushGraphics();
                                                    document.Editor.UpdateScreen();
                                                }
                                                catch
                                                {
                                                }
                                            }
                                        }
                                    }
                                    transaction.Commit();
                                    if (list.Count > 0)
                                    {
                                        ObjectId[] array = list.ToArray();
                                        DocUtil.ZoomToEntity(array);
                                        AfaDocData.ActiveDocData.DocDataset.UpdateMaps();
                                        AfaDocData.ActiveDocData.Document.Editor.UpdateScreen();
                                        AfaDocData.ActiveDocData.Document.Editor.Regen();
                                        Mouse.OverrideCursor = null;
                                        CmdLine.CancelActiveCommand();
                                        TableView tableView = new TableView(AfaDocData.ActiveDocData.GetActiveFeatureClassOrSubtype(), array);
                                        Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(Autodesk.AutoCAD.ApplicationServices.Application.MainWindow.Handle, tableView, false);
                                        tableView.Uninitialize();
                                        tableView.Dispose();
                                        this.SelectAndDelete();
                                        AfaDocData.ActiveDocData.DocDataset.UpdateMaps();
                                        AfaDocData.ActiveDocData.Document.Editor.UpdateScreen();
                                        AfaDocData.ActiveDocData.Document.Editor.Regen();
                                        result = true;
                                        return(result);
                                    }
                                    Mouse.OverrideCursor = null;
                                    editor.WriteMessage(AfaStrings.NoFeaturesFound + "  (" + this.tbPlace.Text + ")");
                                    result = false;
                                    return(result);
                                }
                            }
                            catch
                            {
                                Mouse.OverrideCursor = null;
                            }
                        }
                    }
                    Mouse.OverrideCursor = null;
                    result = false;
                }
            }
            catch
            {
                Mouse.OverrideCursor = null;
                editor.WriteMessage(AfaStrings.ErrorConnectingToServer);
                result = false;
            }
            return(result);
        }
예제 #2
0
 private void DoTask()
 {
     try
     {
         IDictionary <string, object> dictionary = this.Parent.MakeDictionaryRequest(this.RequestURL);
         if (dictionary == null)
         {
             string text = this.Parent.ErrorMessage;
             if (string.IsNullOrEmpty(text))
             {
                 text = AfaStrings.AnUnexpectedErrorOccured;
             }
             ErrorReport.ShowErrorMessage(text);
         }
         this.UpdateForm.SetReady(false);
         SpatialReference spatialReference = null;
         if (dictionary != null)
         {
             object obj;
             if (!dictionary.TryGetValue("href", out obj))
             {
                 string text2 = AfaStrings.Error;
                 if (dictionary.ContainsKey("error"))
                 {
                     IDictionary <string, object> dictionary2 = dictionary["error"] as IDictionary <string, object>;
                     object obj2;
                     if (dictionary2.ContainsKey("details") && dictionary2.TryGetValue("details", out obj2))
                     {
                         object[] array = obj2 as object[];
                         if (array != null)
                         {
                             text2 = text2 + " - " + array[0].ToString();
                         }
                     }
                 }
                 Mouse.OverrideCursor = null;
                 ErrorReport.ShowErrorMessage(text2);
             }
             else
             {
                 string text3 = obj as string;
                 if (text3.Length > 0)
                 {
                     decimal value  = 0m;
                     decimal value2 = 0m;
                     decimal value3 = 0m;
                     decimal value4 = 0m;
                     if (dictionary.TryGetValue("extent", out obj))
                     {
                         IDictionary <string, object> dictionary3 = obj as IDictionary <string, object>;
                         object obj3;
                         if (dictionary3.TryGetValue("spatialReference", out obj3))
                         {
                             IDictionary <string, object> dictionary4 = obj3 as IDictionary <string, object>;
                             object obj4;
                             if (dictionary4.TryGetValue("wkid", out obj4))
                             {
                                 int num = int.Parse(obj4.ToString());
                                 spatialReference = AGSSpatialReference.SpRefFromWKID(ref num);
                             }
                             else if (dictionary4.TryGetValue("wkt", out obj4))
                             {
                                 string text4 = obj4.ToString();
                                 spatialReference = AGSSpatialReference.SpRefFromWKT(ref text4);
                             }
                         }
                         if (dictionary3.TryGetValue("xmin", out obj3))
                         {
                             value = (decimal)obj3;
                         }
                         if (dictionary3.TryGetValue("xmax", out obj3))
                         {
                             value3 = (decimal)obj3;
                         }
                         if (dictionary3.TryGetValue("ymax", out obj3))
                         {
                             value4 = (decimal)obj3;
                         }
                         if (dictionary3.TryGetValue("ymin", out obj3))
                         {
                             value2 = (decimal)obj3;
                         }
                         PointN pointN = new PointN();
                         if (spatialReference != null)
                         {
                             pointN.SpatialReference = spatialReference;
                         }
                         pointN.X = (double)value;
                         pointN.Y = (double)value2;
                         pointN.Z = 0.0;
                         PointN[] array2 = new PointN[]
                         {
                             pointN,
                             new PointN
                             {
                                 SpatialReference = spatialReference,
                                 X = (double)value3,
                                 Y = (double)value2,
                                 Z = 0.0
                             },
                             new PointN
                             {
                                 SpatialReference = spatialReference,
                                 X = (double)value,
                                 Y = (double)value4,
                                 Z = 0.0
                             }
                         };
                         try
                         {
                             if (File.Exists(this.OutputFile))
                             {
                                 File.Delete(this.OutputFile);
                                 if (App.TempFiles.Contains(this.OutputFile))
                                 {
                                     App.TempFiles.Remove(this.OutputFile);
                                 }
                             }
                             if (!this.Parent.DownloadFile(text3, this.OutputFile))
                             {
                                 this.OutputFile = text3;
                                 if (string.IsNullOrEmpty(this.OutputFile))
                                 {
                                     ErrorReport.ShowErrorMessage(AfaStrings.ErrorCreatingOutputFile);
                                     return;
                                 }
                             }
                         }
                         catch
                         {
                             this.OutputFile = text3;
                             if (string.IsNullOrEmpty(this.OutputFile))
                             {
                                 ErrorReport.ShowErrorMessage(AfaStrings.ErrorCreatingOutputFile);
                                 return;
                             }
                         }
                         this.UpdateForm.SetReady(false);
                         Point3d point3d  = new Point3d(pointN.X, array2[0].Y, 0.0);
                         Point3d point3d2 = new Point3d(array2[1].X, array2[1].Y, 0.0);
                         Point3d point3d3 = new Point3d(array2[2].X, array2[2].Y, 0.0);
                         this.UpdateForm.V1        = point3d2 - point3d;
                         this.UpdateForm.V2        = point3d3 - point3d;
                         this.UpdateForm.BasePoint = point3d;
                         this.UpdateForm.ImageURL  = this.OutputFile;
                         this.UpdateForm.SetReady(true);
                     }
                 }
             }
         }
     }
     catch (SystemException ex)
     {
         this.UpdateForm.SetReady(false);
         this._errMsg.Append(ex.Message);
     }
 }
        public static string MakeWebRequest(string origRequestURI)
        {
            string text = null;
            string result;

            try
            {
                ServicePointManager.ServerCertificateValidationCallback = ((object obj, X509Certificate x509Certificate, X509Chain x509Chain, SslPolicyErrors sslPolicyErrors) => true);
                bool flag = false;
                while (!flag)
                {
                    WebClient webClient = new WebClient();
                    webClient.Headers.Add("user-agent", "ArcGIS for AutoCAD");
                    webClient.Encoding = Encoding.UTF8;
                    if (AGS_ESRIMaps.IsProxyPresent(origRequestURI))
                    {
                        Uri proxy = WebRequest.DefaultWebProxy.GetProxy(new Uri(origRequestURI));
                        webClient.Proxy = new WebProxy(proxy)
                        {
                            Credentials = WebRequest.DefaultWebProxy.Credentials
                        };
                    }
                    if (AGS_ESRIMaps.Credentials == null)
                    {
                        webClient.Credentials           = CredentialCache.DefaultCredentials;
                        webClient.UseDefaultCredentials = true;
                    }
                    try
                    {
                        text = webClient.DownloadString(new Uri(origRequestURI));
                        flag = true;
                    }
                    catch (WebException ex)
                    {
                        HttpWebResponse httpWebResponse = (HttpWebResponse)ex.Response;
                        string          userName        = "";
                        if (httpWebResponse != null && httpWebResponse.StatusCode == HttpStatusCode.ProxyAuthenticationRequired)
                        {
                            NetworkCredential credentials;
                            if (!PromptForCredentials.GetCredentials("Proxy Authentication", "To connect to the internet, you need to provide credentials", userName, out credentials))
                            {
                                ErrorReport.ShowErrorMessage(httpWebResponse.StatusDescription);
                                AGS_ESRIMaps.ConnectionFailed = true;
                                result = "";
                                return(result);
                            }
                            if (WebRequest.DefaultWebProxy == null)
                            {
                                WebRequest.DefaultWebProxy = new WebProxy();
                            }
                            WebRequest.DefaultWebProxy.Credentials = credentials;
                        }
                        else if (httpWebResponse != null && httpWebResponse.StatusCode == HttpStatusCode.Unauthorized)
                        {
                            NetworkCredential credentials2;
                            if (!PromptForCredentials.GetCredentials("Network Authentication", "Message Text", userName, out credentials2))
                            {
                                ErrorReport.ShowErrorMessage(httpWebResponse.StatusDescription);
                                AGS_ESRIMaps.ConnectionFailed = true;
                                result = "";
                                return(result);
                            }
                            AGS_ESRIMaps.Credentials = credentials2;
                        }
                        else
                        {
                            AGS_ESRIMaps.ConnectionFailed = true;
                            ErrorReport.ShowErrorMessage(httpWebResponse.StatusDescription);
                        }
                    }
                }
                AGS_ESRIMaps.ConnectionFailed = false;
                result = text;
            }
            catch
            {
                AGS_ESRIMaps.ConnectionFailed = true;
                result = "";
            }
            return(result);
        }