第1章 Visual C++ 6.0简介 1
1.1 Visual C++ 6.0简介 2
1.1.1 Visual C++开发环境 2
1.1.2 启动Visual C++ 3
1.1.3 工程 4
1.1.4 文本编辑器 6
1.1.5 工程配置 7
1.1.7 改正编译错误 8
1.1.6 工程连编 8
1.1.8 查找 9
1.1.9 系统资源 11
1.1.10 对话框和控件 12
1.1.11 在线帮助 16
1.2 设置ObjectARX开发环境 18
1.3 小结 20
第2章 ObjectARX简介 21
2.1.2 与AutoCAD编辑器交互 22
2.1 ObjectARX环境 22
2.1.1 访问AutoCAD数据库 22
2.1.3 使用MFC创建用户界面 23
2.1.4 支持多文档环境 23
2.1.5 创建用户自定义类 23
2.1.6 建立复杂应用程序 23
2.1.7 与其他编程环境进行交互 23
2.1.8 系统需求 23
2.2 ObjectARX类库 24
2.2.1 AcRx库 24
2.2.2 AcEd库 25
2.2.3 AcDb库 26
2.2.4 AcGi库 28
2.2.5 AcGe库 28
2.3 AutoCAD数据库 31
2.3.1 AutoCAD数据库简介 31
2.3.3 获取对象ID 32
2.3.2 多数据库 32
2.3.4 基本数据库对象 33
2.3.5 在AutoCAD中创建对象 33
2.3.6 在ObjectARX中创建对象 35
2.4 小结 39
第3章 创建第一个ARX应用程序 41
3.1 AutoCAD接口函数介绍 42
3.1.1 acrxEntryPoint()函数的用法 42
3.1.2 AutoCAD发给ARX应用程序的消息 43
3.1.3 ARX应用程序中事件的次序 45
3.2 注册AutoCAD新命令 45
3.2.1 命令堆栈 45
3.2.2 查找次序 47
3.2.3 全局和本地命令 47
3.2.4 透明命令与模式命令 47
3.2.5 调用一个ARX应用程序 48
3.2.6 卸载一个ARX应用程序 49
3.3 创建画直线的ARX程序实例 50
3.4 小结 59
第4章 数据库和数据库对象 61
4.1 数据库操作 62
4.1.1 数据库初始化 62
4.1.2 创建和组织数据库 63
4.1.3 保存数据库 63
4.1.4 插入一个数据库 65
4.1.5 设置当前数据库值 65
4.1.6 数据库操作范例 67
4.2 长事务处理 69
4.2.1 类和函数简介 69
4.2.2 长事务实例 71
4.3 外部引用 80
4.3.1 外部引用的前置和后置处理 81
4.4 数据库对象 82
4.4.1 打开和关闭数据库对象 82
4.3.2 文件锁定和一致性检查 82
4.4.2 删除对象 85
4.4.3 对象的数据库附属关系 85
4.4.4 添加对象指定数据 86
4.45 擦除对象 96
4.5 小结 97
第5章 实体对象 99
5.1 实体简介 100
5.2 实体的共同属性 101
5.2.1 颜色 101
5.2.2 线型 102
5.2.3 线型比例 103
5.2.4 可见性 104
5.2.5 层 104
5.3 实体的共同函数 105
5.4 简单和复杂实体 105
5.5 添加超级链接 122
5.5.1 AcDbHyperlink类 123
5.5.2 AcDbHyperlinkCollection类 123
5.5.3 AcDbEntityHyperlinkPE类 123
5.5.4 范例 123
5.6 小结 131
第6章 容器对象 133
6.1 符号表 134
6.1.1 符号表和字典的异同 134
6.1.2 符号表介绍 136
6.1.3 块表 138
6.1.4 层表 138
6.1.5 创建和修改层表记录 140
6.1.6 遍历器 141
6.2 字典 143
6.2.1 组和组字典 143
6.2.2 MLINE样式字典 150
6.2.3 布局字典 150
6.2.4 创建字典 151
6.2.5 对字典进行遍历 152
6.3 布局 153
6.3.1 Object布局类 153
6.3.2 布局对象 153
6.3.3 布局管理器 154
6.4 扩展记录 154
6.4.1 扩展记录的DXF组码 155
6.4.2 实例 156
6.5 小结 164
第7章 在ObjectARX中使用MFC 165
7.1 在ObjectARX中使用MFC介绍 166
7.1.1 MFC和无模式对话框 166
7.1.2 资源管理 167
7.2 对MFC用户界面的支持 169
7.2.1 AdUi和AcUi库介绍 169
7.2.2 类层次 170
7.2.5 AdUi对话框类 172
7.2.3 AdUi消息 172
7.2.4 AdUi提示窗口 172
7.2.6 AcUi对话框类 173
7.2.7 支持子页扩展的AdUi类 174
7.2.8 AdUi和AcUi控制条类 174
7.2.9 AdUi和AcUi编辑控件 174
7.2.10 AdUi和AcUi组合框控件 175
7.2.11 AcUi的MRC组合框 176
7.2.12 AdUi按钮类 178
7.2.13 AcUi按钮类 178
7.2.14 构造一个自定义的扩展子页对话框 179
7.2.15 扩展AutoCAD内部的子页对话框 180
7.3 使用AdUi和AcUi的范例 182
7.4 小结 204
第8章 从AcDbObject派生新类 205
8.1 几点要求 206
8.1.1 用户类的派生 206
8.1.2 类的实时判别特性 207
8.1.3 声明类的宏 208
8.1.4 用于类派生的宏 209
8.1.5 类初始化函数 210
8.2 重载AcDbObject函数 211
8.2.1 必须进行重载的AcDbObject虚拟函数 211
8.2.2 通常需要重载的AcDbObject虚拟函数 211
8.2.3 有时需要重载的AcDbObject虚拟函数 212
8.2.4 很少需要重载的AcDbObject虚拟函数 212
8.2.5 很少需要重载的AcRXObject虚拟函数 214
8.2.6 成员函数的表现 214
8.3 对象文件操作 215
8.3.1 DWG和DXF文件函数简介 216
8.3.2 错误检查 217
8.3.3 重载DWG文件过滤器功能 217
8.3.4 重载DXF文件过渡器功能 220
8.4 派生类实例 229
8.5 小结 238
第9章 从AcDbEntity派生类 239
9.1 重载AcDbEntity函数 240
9.1.1 需要重载的AcDbEntity类函数 240
9.1.2 通常要重载的AcDbEntity类函数 241
9.1.3 很少需要重载的AcDbEntity类函数 243
9.1.4 实体显示函数的重载 244
9.1.5 重载AcDbEntity::saveAs()函数 246
9.1.6 重载对象捕捉点函数 247
9.1.7 重载夹点函数 250
9.1.8 重载拉伸点函数 253
9.1.9 矩阵转换函数 254
9.1.10 与其他实体相交函数 256
9.1.11 自定义实体之间求交 262
9.1.12 炸开实体 262
9.2 使用AcEdJig类 263
9.2.1 从AcEdJig类中派生新类 263
9.2.2 拖动循环 264
9.2.3 重载sampler()、update()和entity()函数 265
9.2.4 将实体添加到数据库中 267
9.3 范例 267
9.4 小结 275
第10章 反应器 277
10.1 反应器简介 278
10.1.1 反应器类 278
10.1.2 对象反应器的类型 279
10.1.3 使用反应器 279
10.1.4 AcDbOjbect类和数据库通告事件 280
10.1.5 自定义通告 281
10.1.6 使用编辑反应器 281
10.2 数据库反应器 281
10.3 对象反应器 288
10.3.1 获取对象反应器的ID值 288
10.3.2 使用对象反应器创建对象间的联系 291
10.3.3 事件与提交时间关系 301
10.4 小结 302
第11章 多文档界面 303
11.1 多文档介绍 304
11.1.1 文档中的命令执行 304
11.1.2 数据实例 304
11.1.3 文档锁定 304
11.1.4 文档管理类 305
11.1.5 单文档系统变量 305
11.1.6 相容级别 306
11.2 操作多个文档 309
11.2.1 与多个文档进行交互 309
11.2.2 文档事件通告 310
11.2.3 不可重入命令 311
11.2.4 多文档命令 311
11.2.5 使文档切换无效 313
11.2.6 应用程序级别的命令执行 314
11.2.7 数据库undo操作和事务管理工具 315
11.2.8 独立于文档的数据库 316
11.3 多文档范例 317
11.4 小结 329
第12章 COM、ActiveX自动化和OPM技术 331
12.1 使用AutoCAD COM对象 332
12.1.1 从ObjectARX访问AutoCAD 332
12.1.2 使用MFC访问AutoCAD ActiveX自动化 332
12.2 直接访问AutoCAD ActiveX自动化 341
12.3 使用ActiveX自动化 347
12.3.1 AcDbObject对象和自动化对象的关系 347
12.3.2 创建COM对象 351
12.3.3 与AutoCAD交互 353
12.3.4 文档锁定 354
12.4 OPM技术 355
12.4.1 AutoCAD COM函数 356
12.4.2 静态OPM COM接口 356
12.4.4 OPM与动态属性 357
12.4.3 静态OPM接口 357
12.5 小结 359
第13章 使用AcGi库 361
13.1 AcGi库简介 362
13.1.1 setAttributes()函数 364
13.1.2 worldDraw()函数 364
13.1.3 viewportDraw()函数 365
13.1.4 视口重生成类型 365
13.2 设置实体特性 366
13.2.1 子实体特性 366
13.2.2 AcGi常量 367
13.2.3 使用AcGi实例 368
13.3.1 栅格 371
13.3.2 可见性 383
13.3.3 外壳 383
13.3.4 圆弧 385
13.3.6 文本 386
13.3.5 多段线 386
13.3.7 将AcDbTextStyleTableRecord与AcGiTextStyle相关联 388
13.4 坐标变换 390
13.4.1 模型坐标系 390
13.4.2 世界坐标系 391
13.4.3 视点坐标系 391
13.4.4 显示坐标系 391
13.5 使用剪裁 391
13.6 小结 393
第14章 使用AcGe库 395
14.1 AcGe库简介 396
14.2 基本几何类型 400
14.3 线和面类 402
14.4 参数化几何图形 403
14.4.1 曲线 403
14.4.2 退化实体 405
14.4.3 曲面 406
14.5 特殊求值类 407
14.6 永久化AcGe实体 413
14.6 范例 418
14.8 小结 427
第15章 开发AutoCAD设计中心 429
15.1 AutoCAD设计中心函数 430
15.1.1 IAcDcContentBrowser接口 430
15.1.2 IAcDcContentView接口 430
15.1.5 IAcPostDrop接口 431
15.1.6 注册AutoCAD设计中心组件 431
15.1.4 IAcDcContentFinder接口 431
15.1.3 IAcDcContentFinderSite接口 431
15.1.7 应用程序键 432
15.1.8 扩展键 433
15.1.9 CLASSID注册 434
15.2 使用AutoCAD设计中心接口 434
15.3 自定义AutoCAD设计中心 435
15.4 小结 458