许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  【连载】.NET CAD二次开发教程(三)

【连载】.NET CAD二次开发教程(三)

阅读数 5
点赞 0
article_banner

接着来看cad相关的具体操作: 文档 操作、实体操作、表、事物。

一、文档的基本操作

1.当前文档基本操作


  // 当前文档            Document docCur = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;              // 设置文档位置            docCur.Window.Location = pt;             // 最小化            docCur.Window.WindowState = Autodesk.AutoCAD.Windows.Window.State.Minimized;             docCur.Window.WindowState = Autodesk.AutoCAD.Windows.Window.State.Maximized;            // 最大化             // 其他不再赘述

    2.新建文档



// 新建文档        public static void NewDoc()        {            string strTemp = "acad.dwt"; // cad基本模板            Autodesk.AutoCAD.ApplicationServices.Document docNew =                 Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Add(strTemp);             Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument = docNew; // 设置为当前文档        }



   3.打开文件



// 打开文件        public static void OpenDwgFile(string strDwg)        {            DocumentCollection acDcoMag = Application.DocumentManager;             if (System.IO.File.Exists(strDwg))            {                acDcoMag.Open(strDwg);            }            else            {                CAppLication.ShowWarning(strDwg + "不存在");            }        }



   二、数据库基本操作


认清一点即可,一个文档对应一个dwg文件,一个dwg文件就是一个数据库,cad的整个操作都是在数据库中进行的。

1.数据库结构介绍

主要有:符号表、命名对象 字典 、数据库对象等。

2.获取当前数据库


// 当前数据库        Autodesk.AutoCAD.DatabaseServices.Database dbCur             = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;         // 或者        Autodesk.AutoCAD.DatabaseServices.Database dbCur1            = HostApplicationServices.WorkingDatabase;



   3.数据库基本操作:打开、删除、copy


     // 打开实体        public static DBObject GetObject(ObjectId id, OpenMode mode, Database db = null)        {            DBObject obj = null;             // 必须在一个事物中打开            using (Transaction tr = db.TransactionManager.StartTransaction()) // using内自动调用 tr.Dispose()            {                obj = tr.GetObject(id, mode) as DBObject;                tr.Commit(); // 提交事物, 事物内操作全部执行,否则在全部回滚。
             }                        return obj;        }          public static void Remove(DBObject obj)        {            Database db = obj.Database;            using (Transaction tr = db.TransactionManager.StartTransaction())            {                obj.Erase(); // 删除一个实体                tr.Commit();            }        }          // 删除一组实体        public static void Remove(ObjectIdCollection ids)        {            if (ids.Count == 0)                return;             // 获取实体所在数据            ObjectId id = ids[0];            Database db = id.Database;            using (Transaction tr = db.TransactionManager.StartTransaction())            {                // obj.Erase(); // 删除一个实体                Entity ent;                foreach (ObjectId idTemp in ids)                {                    ent = tr.GetObject(idTemp, OpenMode.ForWrite) as Entity;                    if (null != ent)                        ent.Erase();                }                                tr.Commit();            }        }                 // clone实体        public static void CloneEnt(ObjectIdCollection ids, ObjectId idOwn)        {            if (ids.Count == 0)                return;             Database dbSource = ids[0].Database;            IdMapping idMap = new IdMapping();             dbSource.WblockCloneObjects(ids, idOwn, idMap, DuplicateRecordCloning.Replace, false);        }





4.事物简介


简单一点就是:类似于cad的智能指针操作。事物结束后关闭cad相关数据,避免下次打开失败。【可嵌套使用】

5. 实体类  简介【本内容和arx操作类似,不再赘述】

6.各种表介绍

符号表【存储符号表记录】 均可以通过 [名称] 访问。

cad数据库中有各种表:

最重要的块表【存储块表记录(块定义/匿名块)】,其中块表记录存放所有可以看见(不特殊化)的所有实体,模型空间和图纸空间都是特殊化(名字独特)的块表记录,自动显示集合形状。


// 模型            ObjectId idModeSpace = SymbolUtilityServices.GetBlockModelSpaceId(HostApplicationServices.WorkingDatabase);            // BlockTable[BlockTableRecord.ModelSpace]; // 也可获取空间id            // BlockTable["*Model_Space*"]; // 也可获取空间id ,其实名称就是名称是 *Model_Space*的块表             // 图纸            ObjectId idPaper = SymbolUtilityServices.GetBlockPaperSpaceId(HostApplicationServices.WorkingDatabase);            // BlockTable["*Paper Space*"]; // 也可获取空间id ,其实名称就是名称是 *Paper Space*的块表



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空