AutoCAD二次开发之.net API学习笔…
来源:互联网 发布:淘宝怎么找同款店铺 编辑:程序博客网 时间:2024/04/29 02:47
1、缺省情况下,每个新建的数据库的块表中都包含两条特殊的块表记录:模型空间和图纸空间。其中前者用
于创建图形,后者用于创建最终的布局,新创建的实体通过BlockTableRecord的AppendEntity方法添加,同时
需要通过事务的AddNewlyCreateDBObject方法通知事务,通常可以将添加操作放在Using语句中,在Using定义
的范围内完成对数据库的操作,结束using语句后,事务自动调用Dispose。
2、对象标识
(1)句柄Handle----Autodesk.AutoCAD.DatabaseServices.Handle
说明:实体句柄可以随DWG文件保存,句柄的唯一性只限于其所在的DWG文件,可以通过DBObject的Handle属性
返回数据库对象对应的句柄。
(2)ObjectId----Autodesk.AutoCAD.DatabaseServices.ObjectId
说明:与句柄不同,对象ID仅存在于其所在的数据库从内存中产生到被删除之前,并且如果操作多个数据库,
对象ID在多个数据库之间都是唯一的,可以通过数据库对象DBObject的ObjectId属性返回数据库对象对应的
ObjectId,通过ObjectId可以通过事务的GetObject方法将实体对象打开,以供编辑。
3、实体都是从Entity类派生,例如圆、直线、矩形等,它们都具有一些共同的属性,包括颜色、线型、线型
比例、可见性、图层等,当添加实体到块表记录时,如果没有明确指定这些属性,AutoCAD会自动调用
SetDatabaseDefaults()函数来设置默认值;但不同的实体往往有着不同的属性和方法,所以当打开一个实体
对象时,经常需要判断其类型才能使用相应的属性和方法,System.Type类表示类型声明,是一个抽象类,运
算符typeof返回一个System.Type对象,可以用来判断是否是所指定的对象类型,例如;
myEntity.GetType == typeof(Circle)
完成了对象的类型判断之后,如果需要进行类型转换,通常调用运算符as来进行转换操作,但是如果转换不可
行,as会引发NULL而不是引发异常,也可以通过强制转换实现,例如:
// 使用as进行转换
Line aline = myEntity as Line;
// 强制转换
Circle cir = (Circle)myEntity;
4、块对象在AutoCAD中经常用到,实际平时使用的有块定义和块参照两部分。块定义实际上就是在块表中增加
一个块表记录BlockTableRecord,使用“block”命名创建块实际就是创建了一条块记录,使用“insert”命
名插入块,实际就是向数据库的模型中添加了一个块引用的实体,创建块定义步骤大致如下:
(1)定义块的ID----ObjectId blkObjId = new ObjectId();
(2)获取块表----BlockTable bt =(BlockTable)trans.GetObject(db.BlockTableId,OpenMode.ForWrite)
(3)创建新的块表记录 BlockTableRecord nBtr=newBlockTableRecord();
(4)保存块表记录到块表,返回其ID----blkObjId=bt.Add(nBtr);
(5)保存新创建的实体到块表记录。
- AutoCAD二次开发之.net API学习笔…
- AutoCAD二次开发之.net API学习笔…
- AutoCAD二次开发之.net API学习笔…
- AutoCAD二次开发之.net API学习笔记(2)
- AutoCAD二次开发之.net API学习笔记(1)
- AutoCAD .NET API二次开发学习指南
- AutoCAD .NET API二次开发学习指南
- AutoCAD .NET API二次开发学习指南
- AutoCAD二次开发——AutoCAD.NET API开发环境搭建
- AutoCad .NET(C#) 二次开发
- AutoCAD.NET:第一章 AutoCAD.NET二次开发概述
- .NET AutoCAD二次开发之路(一、基础篇)
- .NET AutoCAD二次开发之路(二、直线篇)
- AutoCAD的.NET二次开发1
- AutoCAD的.NET二次开发2
- AutoCAD的.NET二次开发3
- .NET平台的AutoCAD二次开发
- .net 二次开发AutoCad的调试
- 记录一个IOS开发Bug消除的经历
- ArcEngine调用GP工具传入参数心得
- Google Maps事件
- 看SIFT有感触
- 单向循环链表的应用
- AutoCAD二次开发之.net API学习笔…
- 托管资源与非托管资源
- 引用类型/值类型,引用传递/值传递
- 自己的理论体系
- linux安装gcc编译器
- 仿QQ侧滑效果,DragLayout使用方法
- 冒泡排序、快速排序
- WebService与WebApplication的区别
- 内存泄漏以及常见的解决方法