예제 #1
0
 /// <summary>
 /// Добавляем ObjectData-атрибуты к примитиву чертежа
 /// </summary>
 /// <param name="wid"> ObjectId примитива </param>
 /// <param name="wr"> Данные атрибутов </param>
 /// <param name="wTbl"> Таблица ObjectData </param>
 public void AddAttr(ObjectId wid, Data.MyRecord wr, Autodesk.Gis.Map.ObjectData.Table wTbl)
 {
     AppServ.Document acDoc = AppServ.Application.DocumentManager.MdiActiveDocument;
     using (AppServ.DocumentLock acLckDoc = acDoc.LockDocument())
     {
         using (Transaction acTrans = acDoc.Database.TransactionManager.StartTransaction())
         {
             using (Record odRecord = Record.Create())
             {
                 wTbl.InitRecord(odRecord);
                 FieldDefinition fdef;
                 Data.FieldValue fval;
                 for (int i = 0; i < wTbl.FieldDefinitions.Count; i++)
                 {
                     fdef = wTbl.FieldDefinitions[i];
                     fval = wr.SearchField(fdef.Name);
                     if (fval != null)
                     {
                         if (!fval.IsGeom)
                         {
                             odRecord[i].Assign(fval.GetString());
                         }
                     }
                 }
                 wTbl.AddRecord(odRecord, wid);
                 acTrans.Commit();
             }
         }
     }
 }
        public static void ShowFrameMenu()
        {
            AdeskAppSvr.Document doc = AdeskAppSvr.Application.DocumentManager.MdiActiveDocument;
            doc.SendStringToExecute("UCS W ", false, false, true);//make current coordinate system to be WCS
            AdeskAppSvr.DocumentLock docLock = doc.LockDocument();
            DigitalSign mDigital             = new DigitalSign();

            AdeskAppSvr.Application.ShowModalDialog(mDigital);
            docLock.Dispose();
        }
        /// <summary>
        /// show form
        /// </summary>
        /// <param name="Sender"></param>
        /// <param name="e"></param>
        public static void ShowFrame(Object Sender, EventArgs e)
        {
            AdeskAppSvr.Document doc = AdeskAppSvr.Application.DocumentManager.MdiActiveDocument;
            doc.SendStringToExecute("UCS W ", false, false, true);//make current coordinate system to be WCS
            AdeskAppSvr.DocumentLock docLock = doc.LockDocument();
            NewForm mDigital = new NewForm();

            AdeskAppSvr.Application.ShowModalDialog(mDigital);
            docLock.Dispose();
        }
예제 #4
0
        public static void CrateExternalBlock()
        {
            Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;

            PromptSelectionOptions optSel    = new PromptSelectionOptions();
            PromptSelectionResult  ProSelRes = ed.GetSelection(optSel);

            switch (ProSelRes.Status)
            {
            case PromptStatus.OK:
                //Set Block

                //Criate blockReference
                ObjectId objBlock = criarDefiniçãoDeBloco(ProSelRes.Value.GetObjectIds());
                Database db       = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
                using (Transaction trans = db.TransactionManager.StartTransaction())
                {
                    try
                    {
                        Database dbAux = new Database(true, false);
                        dbAux.SaveAs("C:\\teste1.dwg", DwgVersion.Current);

                        Autodesk.AutoCAD.ApplicationServices.Document Doc = null;
                        Doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Open("C:\\teste1.dwg", false);

                        ObjectIdCollection ids = new ObjectIdCollection();
                        ids.Add(objBlock);
                        using (DocumentLock dl = Doc.LockDocument())
                        {
                            IdMapping im = new IdMapping();
                            db.WblockCloneObjects(
                                ids,
                                Doc.Database.BlockTableId,
                                im,
                                DuplicateRecordCloning.MangleName,
                                false
                                );
                        }

                        Doc.CloseAndSave("C:\\teste1.dwg");
                    }
                    catch (System.Exception ex)
                    {
                        trans.Abort();

                        return;
                    }
                }
                break;

            case PromptStatus.Cancel:
                //Command Canceled
                break;
            }
        }
예제 #5
0
        public static void PlotRegion()
        {
            Ap.Document doc = cad.DocumentManager.MdiActiveDocument;
            if (doc == null || doc.IsDisposed)
            {
                return;
            }

            Ed.Editor   ed = doc.Editor;
            Db.Database db = doc.Database;

            using (doc.LockDocument())
            {
                Ed.PromptEntityOptions peo = new Ed.PromptEntityOptions(
                    "\nSelect a region"
                    );

                peo.SetRejectMessage("\nIt is not a region."
                                     );
                peo.AddAllowedClass(typeof(Db.Region), false);

                Ed.PromptEntityResult per = ed.GetEntity(peo);

                if (per.Status != Ed.PromptStatus.OK)
                {
                    ed.WriteMessage("\nCommand canceled.\n");
                    return;
                }

                Db.ObjectId regionId = per.ObjectId;

                Microsoft.Win32.SaveFileDialog saveFileDialog = new Microsoft.Win32
                                                                .SaveFileDialog();
                saveFileDialog.Title =
                    "PDF file name";
                saveFileDialog.Filter = "PDF-files|*.pdf";
                bool?result = saveFileDialog.ShowDialog();

                if (!result.HasValue || !result.Value)
                {
                    ed.WriteMessage("\nCommand canceled.");
                    return;
                }

                String pdfFileName = saveFileDialog.FileName;

                PlotRegion(regionId, "DWG To PDF.pc3",
                           "ISO_A4_(210.00_x_297.00_MM)", pdfFileName);

                ed.WriteMessage("\nThe \"{0}\" file created.\n", pdfFileName);
            }
        }
예제 #6
0
        public static ObjectId criarDefiniçãoDeBloco(ObjectId[] objIds)
        {
            string   nomeBloco = "Teste1";
            Database db        = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;

            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                try
                {
                    Autodesk.AutoCAD.ApplicationServices.Document Doc = null;
                    Doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
                    using (DocumentLock dl = Doc.LockDocument())
                    {
                        //abrir tabela de blocos
                        BlockTable bt = trans.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;

                        //verificar se o bloco já existe
                        if (bt.Has(nomeBloco))
                        {
                            return(bt[nomeBloco]);
                        }
                        BlockTableRecord novoBloco = new BlockTableRecord();
                        novoBloco.Name = nomeBloco;

                        bt.UpgradeOpen();
                        bt.Add(novoBloco);

                        trans.AddNewlyCreatedDBObject(novoBloco, true);

                        foreach (ObjectId objId in objIds)
                        {
                            DBObject obj      = trans.GetObject(objId, OpenMode.ForRead);
                            Entity   ent      = (Entity)obj;
                            Entity   entClone = ent.Clone() as Entity;
                            novoBloco.AppendEntity(entClone);
                            trans.AddNewlyCreatedDBObject(entClone, true);
                        }

                        trans.Commit();

                        return(novoBloco.ObjectId);
                    }
                }
                catch (System.Exception ex)
                {
                    trans.Abort();

                    return(ObjectId.Null);
                }
            }
        }
예제 #7
0
        // This code based on Kean Walmsley's article:
        // http://through-the-interface.typepad.com/through_the_interface/2007/10/plotting-a-wind.html
        public static void PlotRegion(Db.ObjectId regionId, String pcsFileName,
                                      String mediaName, String outputFileName)
        {
            if (regionId.IsNull)
            {
                throw new ArgumentException("regionId.IsNull == true");
            }
            if (!regionId.IsValid)
            {
                throw new ArgumentException("regionId.IsValid == false");
            }

            if (regionId.ObjectClass.Name != "AcDbRegion")
            {
                throw new ArgumentException("regionId.ObjectClass.Name != AcDbRegion");
            }

            if (pcsFileName == null)
            {
                throw new ArgumentNullException("pcsFileName");
            }
            if (pcsFileName.Trim() == String.Empty)
            {
                throw new ArgumentException("pcsFileName.Trim() == String.Empty");
            }

            if (mediaName == null)
            {
                throw new ArgumentNullException("mediaName");
            }
            if (mediaName.Trim() == String.Empty)
            {
                throw new ArgumentException("mediaName.Trim() == String.Empty");
            }

            if (outputFileName == null)
            {
                throw new ArgumentNullException("outputFileName");
            }
            if (outputFileName.Trim() == String.Empty)
            {
                throw new ArgumentException("outputFileName.Trim() == String.Empty");
            }

            Db.Database previewDb = Hs.WorkingDatabase;
            Db.Database db        = null;
            Ap.Document doc       = cad.DocumentManager.MdiActiveDocument;
            if (doc == null || doc.IsDisposed)
            {
                return;
            }

            Ed.Editor ed = doc.Editor;
            try
            {
                if (regionId.Database != null && !regionId.Database.IsDisposed)
                {
                    Hs.WorkingDatabase = regionId.Database;
                    db = regionId.Database;
                }
                else
                {
                    db = doc.Database;
                }

                using (doc.LockDocument())
                {
                    using (Db.Transaction tr = db.TransactionManager.StartTransaction())
                    {
                        Db.Region region = tr.GetObject(regionId,
                                                        Db.OpenMode.ForRead) as Db.Region;

                        Db.Extents3d        extends = region.GeometricExtents;
                        Db.ObjectId         modelId = Us.GetBlockModelSpaceId(db);
                        Db.BlockTableRecord model   = tr.GetObject(modelId,
                                                                   Db.OpenMode.ForRead) as Db.BlockTableRecord;

                        Db.Layout layout = tr.GetObject(model.LayoutId,
                                                        Db.OpenMode.ForRead) as Db.Layout;

                        using (Pt.PlotInfo pi = new Pt.PlotInfo())
                        {
                            pi.Layout = model.LayoutId;

                            using (Db.PlotSettings ps = new Db.PlotSettings(layout.ModelType)
                                   )
                            {
                                ps.CopyFrom(layout);

                                Db.PlotSettingsValidator psv = Db.PlotSettingsValidator
                                                               .Current;

                                Gm.Point2d bottomLeft = Gm.Point2d.Origin;
                                Gm.Point2d topRight   = Gm.Point2d.Origin;

                                region.GetVisualBoundary(0.1, ref bottomLeft,
                                                         ref topRight);

                                Gm.Point3d bottomLeft_3d = new Gm.Point3d(bottomLeft.X,
                                                                          bottomLeft.Y, 0);
                                Gm.Point3d topRight_3d = new Gm.Point3d(topRight.X, topRight.Y,
                                                                        0);

                                Db.ResultBuffer rbFrom = new Db.ResultBuffer(new Db.TypedValue(
                                                                                 5003, 1));
                                Db.ResultBuffer rbTo = new Db.ResultBuffer(new Db.TypedValue(
                                                                               5003, 2));

                                double[] firres = new double[] { 0, 0, 0 };
                                double[] secres = new double[] { 0, 0, 0 };

                                acedTrans(bottomLeft_3d.ToArray(), rbFrom.UnmanagedObject,
                                          rbTo.UnmanagedObject, 0, firres);
                                acedTrans(topRight_3d.ToArray(), rbFrom.UnmanagedObject,
                                          rbTo.UnmanagedObject, 0, secres);

                                Db.Extents2d extents = new Db.Extents2d(
                                    firres[0],
                                    firres[1],
                                    secres[0],
                                    secres[1]
                                    );

                                psv.SetZoomToPaperOnUpdate(ps, true);

                                psv.SetPlotWindowArea(ps, extents);
                                psv.SetPlotType(ps, Db.PlotType.Window);
                                psv.SetUseStandardScale(ps, true);
                                psv.SetStdScaleType(ps, Db.StdScaleType.ScaleToFit);
                                psv.SetPlotCentered(ps, true);
                                psv.SetPlotRotation(ps, Db.PlotRotation.Degrees000);

                                // We'll use the standard DWF PC3, as
                                // for today we're just plotting to file
                                psv.SetPlotConfigurationName(ps, pcsFileName, mediaName);

                                // We need to link the PlotInfo to the
                                // PlotSettings and then validate it
                                pi.OverrideSettings = ps;
                                Pt.PlotInfoValidator piv = new Pt.PlotInfoValidator();
                                piv.MediaMatchingPolicy = Pt.MatchingPolicy.MatchEnabled;
                                piv.Validate(pi);

                                // A PlotEngine does the actual plotting
                                // (can also create one for Preview)
                                if (Pt.PlotFactory.ProcessPlotState == Pt.ProcessPlotState
                                    .NotPlotting)
                                {
                                    using (Pt.PlotEngine pe = Pt.PlotFactory.CreatePublishEngine()
                                           )
                                    {
                                        // Create a Progress Dialog to provide info
                                        // and allow thej user to cancel

                                        using (Pt.PlotProgressDialog ppd =
                                                   new Pt.PlotProgressDialog(false, 1, true))
                                        {
                                            ppd.set_PlotMsgString(
                                                Pt.PlotMessageIndex.DialogTitle, "Custom Plot Progress");

                                            ppd.set_PlotMsgString(
                                                Pt.PlotMessageIndex.CancelJobButtonMessage,
                                                "Cancel Job");

                                            ppd.set_PlotMsgString(
                                                Pt.PlotMessageIndex.CancelSheetButtonMessage,
                                                "Cancel Sheet");

                                            ppd.set_PlotMsgString(
                                                Pt.PlotMessageIndex.SheetSetProgressCaption,
                                                "Sheet Set Progress");

                                            ppd.set_PlotMsgString(
                                                Pt.PlotMessageIndex.SheetProgressCaption,
                                                "Sheet Progress");

                                            ppd.LowerPlotProgressRange = 0;
                                            ppd.UpperPlotProgressRange = 100;
                                            ppd.PlotProgressPos        = 0;

                                            // Let's start the plot, at last
                                            ppd.OnBeginPlot();
                                            ppd.IsVisible = true;
                                            pe.BeginPlot(ppd, null);

                                            // We'll be plotting a single document
                                            pe.BeginDocument(pi, doc.Name, null, 1, true,
                                                             // Let's plot to file
                                                             outputFileName);
                                            // Which contains a single sheet
                                            ppd.OnBeginSheet();
                                            ppd.LowerSheetProgressRange = 0;
                                            ppd.UpperSheetProgressRange = 100;
                                            ppd.SheetProgressPos        = 0;
                                            Pt.PlotPageInfo ppi = new Pt.PlotPageInfo();
                                            pe.BeginPage(ppi, pi, true, null);
                                            pe.BeginGenerateGraphics(null);
                                            pe.EndGenerateGraphics(null);

                                            // Finish the sheet
                                            pe.EndPage(null);
                                            ppd.SheetProgressPos = 100;
                                            ppd.OnEndSheet();

                                            // Finish the document
                                            pe.EndDocument(null);

                                            // And finish the plot
                                            ppd.PlotProgressPos = 100;
                                            ppd.OnEndPlot();
                                            pe.EndPlot(null);
                                        }
                                    }
                                }
                                else
                                {
                                    ed.WriteMessage("\nAnother plot is in progress.");
                                }
                            }
                        }
                        tr.Commit();
                    }
                }
            }
            finally
            {
                Hs.WorkingDatabase = previewDb;
            }
        }