ObjectARX二次开发CAD二开笔记 您所在的位置:网站首页 c语言cad二次开发 ObjectARX二次开发CAD二开笔记

ObjectARX二次开发CAD二开笔记

2023-06-29 21:11| 来源: 网络整理| 查看: 265

1.将当前文档中的图纸截图输出:

        ///         /// 图纸输出图片         ///         [CommandMethod("SCPRINT")]         static public void CreatePreviewImage()         {             var doc = Application.DocumentManager.MdiActiveDocument;             if (doc == null) return;             var ed = doc.Editor;             // Select the filename and type for our output image             var pofo = new PromptSaveFileOptions("\nSelect image location");             pofo.Filter =               "Bitmap (*.bmp)|*.bmp|GIF (*.gif)|*.gif|JPEG (*.jpg)|*.jpg|" +               "PNG (*.png)|*.png|TIFF (*.tif)|*.tif";             // Set the default save location to be that of the current drawing             string fn = doc.Database.Filename;             if (fn.Contains("."))             {                 int extIdx = fn.LastIndexOf(".");                 if (fn.Substring(extIdx + 1) != "dwt" && fn.Contains("\\"))                 {                     pofo.InitialDirectory = Path.GetDirectoryName(doc.Database.Filename);                 }             }             var pfnr = ed.GetFileNameForSave(pofo);             if (pfnr.Status != PromptStatus.OK)                 return;             var outFile = pfnr.StringResult;             // Get the size of the document and capture the preview at that size             var size = doc.Window.DeviceIndependentSize;//.DeviceIndependentSize;             using (var bmp =doc.CapturePreviewImage(Convert.ToUInt32(size.Width), Convert.ToUInt32(size.Height)))             {                 // Save the file with the format derived from the filename                 bmp.Save(outFile, outFile.GetFormat());             }         }

2.自动打开本地dwg文档

       ///         /// 打开本地的dwg文件,实测有效         ///         [CommandMethod("DwgFileOpen")]         public void ReadEntitiesFromDWG()         {             //Application.DocumentManager.AppContextOpenDocument(@"C:\Users\c-yuanp01\Documents\Drawdding1.dwg");             string fileName = @"C:\Users\yuanp\Documents\Drawdding1.dwg";             try             {                 //Document doc = Application.DocumentManager.MdiActiveDocument;                 //doc.CloseAndDiscard();                 Document ndoc = Application.DocumentManager.Open(fileName, true, "");                 Application.DocumentManager.MdiActiveDocument = ndoc;             }             catch (System.Exception ex)             {                 Console.WriteLine("Error opening file: " + ex.Message);             }

        }

3.画一个圆

       ///         /// 画一个圆         ///         [CommandMethod("DrawCircle")]         public void createCircle()         {             //首先声明我们要使用的对象             Circle circle; //这个是我们要加入到模型空间的圆             BlockTableRecord btr;//要加入圆,我们必须打开模型空间             BlockTable bt; //要打开模型空间,我们必须通过块表(BlockTable)来访问它

            //我们使用一个名为‘Transaction’的对象,把函数中有关数据库的操作封装起来             Transaction trans;             //使用 TransactionManager 的 StartTransaction()成员来开始事务处理             trans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction();             //现在创建圆……请仔细看这些参数——注意创建 Point3d 对象的‘New’和 Vector3d 的静态成员 ZAxis             circle = new Circle(new Point3d(10, 10, 0), Vector3d.ZAxis, 2);             bt = (BlockTable)trans.GetObject(HostApplicationServices.WorkingDatabase.BlockTableId, OpenMode.ForRead);             //使用当前的空间 Id 来获取块表记录——注意我们是打开它用来写入             btr = (BlockTableRecord)trans.GetObject(HostApplicationServices.WorkingDatabase.CurrentSpaceId, OpenMode.ForWrite);             //现在使用 btr 对象来加入圆             btr.AppendEntity(circle);             trans.AddNewlyCreatedDBObject(circle, true); //并确定事务处理知道要加入圆!                                                          //一旦完成以上操作,我们就提交事务处理,这样以上所做的改变就被保存了……             trans.Commit();             //…然后销毁事务处理,因为我们已经完成了相关的操作(事务处理不是数据库驻留对象,可以销毁)             trans.Dispose();         }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有