예제 #1
0
        private bool UpdateRasterImage(Document doc, ObjectId rasterId, string url, Point3d basePoint, Vector3d v1, Vector3d v2)
        {
            bool result;

            try
            {
                if (doc == null)
                {
                    result = false;
                }
                else
                {
                    if (doc.IsDisposed)
                    {
                        result = false;
                    }
                    else
                    {
                        if (rasterId.IsEffectivelyErased)
                        {
                            result = false;
                        }
                        else
                        {
                            if (rasterId == ObjectId.Null)
                            {
                                result = false;
                            }
                            else
                            {
                                Database arg_4D_0 = doc.Database;
                                try
                                {
                                    Editor arg_54_0 = doc.Editor;
                                    ;
                                    using (doc.LockDocument(DocumentLockMode.Write, null, null, false))
                                    {
                                        doc.TransactionManager.EnableGraphicsFlush(true);
                                        Autodesk.AutoCAD.ApplicationServices.TransactionManager transactionManager = doc.TransactionManager;
                                        using (Transaction transaction = transactionManager.StartTransaction())
                                        {
                                            RasterImage rasterImage = (RasterImage)transaction.GetObject(rasterId, OpenMode.ForWrite);
                                            rasterImage.DisableUndoRecording(true);
                                            ObjectId       imageDefId     = rasterImage.ImageDefId;
                                            RasterImageDef rasterImageDef = (RasterImageDef)transaction.GetObject(imageDefId, OpenMode.ForWrite);
                                            rasterImageDef.DisableUndoRecording(true);
                                            string sourceFileName = rasterImageDef.SourceFileName;
                                            try
                                            {
                                                rasterImageDef.Unload(true);
                                                rasterImageDef.SourceFileName = url;
                                                rasterImageDef.Load();
                                                if (rasterImageDef.IsLoaded)
                                                {
                                                    try
                                                    {
                                                        if (!string.IsNullOrEmpty(sourceFileName))
                                                        {
                                                            System.IO.File.Delete(sourceFileName);
                                                        }
                                                    }
                                                    catch
                                                    {
                                                    }
                                                }
                                                //rasterImage.Orientation = new CoordinateSystem3d(basePoint, v1, v2);
                                                rasterImage.Draw();
                                            }
                                            catch (System.Exception ex)
                                            {
                                                System.Windows.Forms.MessageBox.Show(ex.ToString());
                                            }
                                            try
                                            {
                                                rasterImageDef.UpdateEntities();
                                                doc.TransactionManager.QueueForGraphicsFlush();
                                                doc.TransactionManager.FlushGraphics();
                                                doc.Editor.UpdateScreen();
                                            }
                                            catch
                                            {
                                            }
                                            transaction.Commit();
                                        }
                                    }
                                    result = true;
                                }
                                catch (System.Exception)
                                {
                                    result = false;
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
                result = false;
            }
            return(result);
        }
예제 #2
0
        public bool DeleteService()
        {
            try
            {
                base.StopReactors();
                base.StopReactors();
            }
            catch
            {
            }
            Database database       = base.ParentDataset.ParentDocument.Database;
            Document parentDocument = base.ParentDataset.ParentDocument;
            Editor   editor         = base.ParentDataset.ParentDocument.Editor;
            bool     result;

            try
            {
                using (base.ParentDataset.ParentDocument.LockDocument((DocumentLockMode)20, null, null, false))
                {
                    using (Transaction transaction = parentDocument.TransactionManager.StartTransaction())
                    {
                        RasterImage rasterImage = (RasterImage)transaction.GetObject(base.RasterObjectId, (OpenMode)1);
                        rasterImage.DisableUndoRecording(true);
                        ObjectId       imageDefId     = rasterImage.ImageDefId;
                        RasterImageDef rasterImageDef = (RasterImageDef)transaction.GetObject(imageDefId, (OpenMode)1);
                        rasterImageDef.DisableUndoRecording(true);
                        if (rasterImageDef.IsLoaded)
                        {
                            rasterImageDef.Unload(true);
                        }
                        try
                        {
                            File.Delete(rasterImageDef.SourceFileName);
                            if (App.TempFiles.Contains(rasterImageDef.SourceFileName))
                            {
                                App.TempFiles.Remove(rasterImageDef.SourceFileName);
                            }
                        }
                        catch
                        {
                        }
                        if (!rasterImageDef.IsErased)
                        {
                            rasterImageDef.Erase();
                        }
                        ObjectId     imageDictionary = RasterImageDef.GetImageDictionary(database);
                        DBDictionary dBDictionary    = (DBDictionary)transaction.GetObject(imageDictionary, (OpenMode)1);
                        dBDictionary.Remove(imageDefId);
                        dBDictionary.Contains(imageDefId);
                        if (!rasterImage.IsErased)
                        {
                            rasterImage.Erase(false);
                        }
                        this.RemoveDictionary(database, transaction);
                        parentDocument.TransactionManager.QueueForGraphicsFlush();
                        parentDocument.TransactionManager.FlushGraphics();
                        parentDocument.Editor.UpdateScreen();
                        transaction.Commit();
                        base.ParentDataset.ImageServices.Remove(base.Name);
                        editor.Regen();
                        MSCDataset.SetDefaultActiveRasterServices();
                        result = true;
                    }
                }
            }
            catch
            {
                MessageBox.Show("DEBUG:  Catch in MSCMapService.DeleteService");
                result = false;
            }
            return(result);
        }