《AutoCAD 2000 ARX二次开发实例精粹》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:老大中,赵占强编著
  • 出 版 社:北京:国防工业出版社
  • 出版年份:2001
  • ISBN:7118023671
  • 页数:329 页
图书介绍:本书共有十四个实例,包括ObjectARX编程基础、AutoCAD2000图形数据库结构及操作、数据库对象、实体对象、容器对象、派生自定义的ObjectARX类、使用MFC开发用户界面、响应通知和实现多文档环境(MDI)等。

第一章 最简单的ARX程序——HelloARX 1

1.1目标及结果 1

1.2知识要点及思路分析 1

1.2.1建立ARX程序的基本步骤 1

1.2.2AutoCAD与ARX程序之间的消息传递 2

1.3实现步骤 3

1.4源程序清单 7

1.4.1清单1-1源文件HelloARX.cpp 7

1.4.2清单1-2 HelloARX.def源定义文件 9

1.5补充说明 9

1.5.1ARX应用程序的加载方式 9

1.5.2 ARX应用程序的卸载方式 9

1.6小结 9

第二章AutoCAD数据库概述 11

2.1目标及结果 11

2.2知识要点及思路分析 12

2.2.1 AutoCAD数据库的结构 12

2.2.2对象的ID 13

2.2.3基本数据库对象 14

2.2.4创建对象 14

2.3实现步骤 16

2.3.1创建实体 16

2.3.2创建新层 18

2.3.3打开和关闭ObjectARX对象 19

2.3.4创建新组 20

2.4源程序清单 22

2.4.1清单2-1源文件Entities.cpp 22

2.4.2清单2-2模块定义文件Entities.def 26

2.5补充说明 26

2.5.1清单2-3 加入了容错处理代码的源文件ErrorText.cpp 26

2.5.2清单2-4 模块定义文件ErrorTestdef 31

2.5.3说明 32

2.6小结 32

第三章AutoCAD数据库操作 33

3.1目标及结果 33

3.2知识要点及思路分析 35

3.2.1初始化数据库 35

3.2.2创建数据库 35

3.2.3保存数据库 36

3.2.4创建块操作 37

3.2.5插入块操作 38

3.2.6设置当前数据库属性值 38

3.2.7数据库长事务(LongTransaction)操作 39

3.3实现步骤 40

3.3.1创建数据库 41

3.3.2读取数据库内容 42

3.3.3数据库长事务操作 43

3.4源程序清单 46

3.4.1清单3-1 源文件OperateDb.cpp 46

3.4.2清单3-2 模块定义文件OperateDb.def 51

3.5补充说明 51

3.5.1外部参照 51

3.5.2图形统计信息 52

3.6小结 54

第四章 数据库对象的操作 55

4.1目标及结果 55

4.2知识要点及思路分析 56

4.2.1打开和关闭对象 56

4.2.2删除对象 59

4.2.3数据库对象的从属关系 59

4.2.4对象的特殊附加数据 59

4.2.5删除数据库对象 62

4.3实现步骤 63

4.3.1对象的选择 64

4.3.2结果缓冲区链表内容打印 65

4.3.3对象扩展数据的添加和打印 68

4.3.4对象扩展词典的添加和打印 69

4.4源程序清单 71

4.4.1清单4-1源文件operateObj.cpp 71

4.4.2清单4-2模块定义文件operateObj.def 79

4.5补充说明 79

4.5.1DXF(Drawing Exchange Format)组码模式 79

4.5.2对象归档操作 80

4.6小结 81

第五章 实体对象的操作 82

5.1目标及结果 82

5.2知识要点及思路分析 83

5.2.1实体的定义 83

5.2.2实体的从属关系 83

5.2.3AutoCAD R12版实体 84

5.2.4实体的公用属性 85

5.2.5坐标系统 87

5.2.6曲线函数 89

5.3实现步骤 90

5.3.1创建一个带有属性的块表记录 90

5.3.2创建一个带有属性的块引用 91

5.3.3遍历块表记录 93

5.3.4复杂实体的操作 93

5.3.5曲线函数的使用 94

5.4源程序清单 94

5.4.1清单5-1源文件complexEnt.cpp 94

5.4.2清单5-2模块定义文件complexEnt.def 105

5.5补充说明 105

5.5.1实体名操作函数 106

5.5.2用户输入函数 106

5.5.3系统变量查询和设置函数 108

5.6小结 108

第六章 高亮度显示实体对象 109

6.1目标及结果 109

6.2知识要点及思路分析 110

6.2.1实体的公共函数 110

6.2.2实体分解函数 114

6.2.3GS标志和子实体路径 115

6.2.4高亮度显示子实体的步骤 116

6.3实现步骤 118

6.3.1高亮度显示长方体的子实体 119

6.3.2高亮度显示嵌套块中的实体 119

6.4源程序清单 120

6.4.1清单6-1源文件entHilight.cpp 120

6.4.2清单6-2模块定义文件entHilight.def 130

6.5补充说明 130

6.5.1选择集的操作函数 130

6.6小结 136

第七章 容器对象的操作 137

7.1目标及结果 137

7.2知识要点及思路分析 137

7.2.1符号表 138

7.2.2符号表迭代器 141

7.2.3词典 141

7.2.4符号表与词典的区别 143

7.2.5扩展实体记录(Xrecord) 144

7.3实现步骤 145

7.3.1添加一个层表记录 146

7.3.2遍历层表 146

7.3.3创建组并添加到组词典中 146

7.3.4创建词典和扩展实体记录 146

7.3.5浏览词典条目 147

7.4源程序清单 147

7.4.1清单7-1主源文件containerObi.cpp 147

7.4.2清单7-2源文件layer.cpp 148

7.4.3清单7-3头文件layer.h 150

7.4.4清单7-4源文件group.cpp 150

7.4.5清单7-5头文件group.h 152

7.4.6清单7-6源文件xrecord.cpp 152

7.4.7清单7-7头文件xrecord.h 157

7.4.8清单7-8模块定义文件containerObj.def 157

7.5小结 158

第八章 派生AcDbObject自定义类 159

8.1目标及结果 159

8.2知识要点及思路分析 159

8.2.1使用ObjectARX宏 159

8.2.2重载基类AcDbObject的虚函数 161

8.2.3实现成员函数 163

8.2.4文件操作函数 164

8.2.5重载DWG文件操作函数 165

8.2.6重载DXF文件操作函数 166

8.2.7对象的引用 167

8.2.8撤销和重做 168

8.2.9 subErase、subOpen、subClose和subCancel函数 170

8.3实现步骤 171

8.3.1从基类AcDbObject中派生自定义类 171

8.3.2创建所有关系(ownership)体系 172

8.3.3重载基类AcDbObject的文件操作函数 173

8.3.4自定义类的初始化和卸载 173

8.3.5编写命令调用函数 174

8.4源程序清单 174

8.4.1清单8-1源文件customObject.cpp 174

8.4.2清单8-2模块定义文件customObject.def 182

8.5补充说明 182

8.5.1派生自定义ARX类的其它说明 182

8.5.2清除操作(Purge) 183

8.5.3自定义对象的版本信息 183

8.6小结 184

第九章 派生AcDbEntity自定义类 185

9.1目标及结果 185

9.2知识要点及思路分析 185

9.2.1重载类AcDbEntity的函数 186

9.2.2重载实体类公用函数 187

9.2.3扩展实体功能 192

9.3实现步骤 192

9.3.1派生自定义实体类 192

9.3.2重载基类AcDbEntity的成员函数 193

9.3.3重载基类AcDbObject的成员函数 194

9.3.4编写命令执行函数 194

9.4源程序清单 194

9.4.1清单9-1头文件customEntity.h 194

9.4.2清单9-2源文件customEntity.cpp 198

9.4.3清单9-3模块定义文件customEntity.def 222

9.5补充说明 222

9.5.1图形界面类库(AcGi)简介 222

9.5.2协议扩展机制 224

9.6小结 225

第十章 使用AcEdJig基类 226

10.1目标及结果 226

10.2知识要点及思路分析 226

10.2.1从基类AcEdJig中派生新类 226

10.2.2使用类AcEdJig的一般步骤 227

10.2.3拖动循环 227

10.2.4函数sampler()、update()和entity()的实现方法 228

10.2.5添加实体到数据库中 231

10.3实现步骤 231

10.3.1定义类CRectItfo 231

10.3.2由基类AcEdJig派生自定义类 232

10.3.3实现拖动循环 232

10.3.4实现命令“RECT”的执行函数createRect() 233

10.4源程序清单 234

10.4.1清单10-1源文件rectJig.cpp 234

10.4.2清单10-2模块定义文件rectJig.def: 245

10.5小结 245

第十一章 在ObjectARX中使用MFC类库 246

11.1目标及结果 246

11.2知识要点及思路分析 247

11.2.1在ObjectARX应用程序中使用MFC 247

11.2.2在ObjectARX应用程序中使用动态链接的MFC库 247

11.2.3使用与AutoCAD相同版本的MFC动态链接库 249

11.3实现步骤 250

11.3.1创建ObjectARX MFC应用程序框架 251

11.3.2创建模式对话框 251

11.3.3创建非模式对话框 252

11.4源程序清单 253

11.4.1清单11-1源文件dialogTest.cpp 253

11.4.2清单11-2类CModalDlg定义文件modalDlg.h 255

11.4.3清单11-3类CmodalDlg实现文件modalDlg.cpp 256

11.4.4清单11-4类CModelessDlg定义文件modelessDlg.h 257

11.4.5清单11-5类CModelessDlg实现文件modelessDlg.cpp 258

11.4.6清单11-6预定义头文件stdafx.h 259

11.4.7清单11-7资源定义头文件Resource.h 260

11.4.8清单11-8模块定义文件dialogTest.def 260

11.5补充说明 260

11.6小结 261

第十二章 使用ObjectARX的MFC用户界面类 262

12.1目标及结果 262

12.2知识要点及思路分析 262

12.2.1类的层次 263

12.2.2AdUi消息 263

12.2.3AdUi提示窗口 263

12.2.4AdUi对话框类 264

12.2.5 AcUi对话框类 265

12.2.6支持可扩充标签的AdUi类 265

12.2.7 AdUi和AcUi的编辑控件 265

12.2.8 AdUi和AcUi组合框控件 266

12.2.9 AcUi和MRU组合框 266

12.2.10 AdUi按钮类 267

12.2.11 AcUi按钮类 267

12.2.12对话框数据驻留 267

12.3实现步骤 268

12.3.1创建ObjectARX MFC应用程序框架 268

12.3.2使用AppStudio创建MFC对话框 268

12.3.3创建对话框类和控件变量 269

12.3.4使用AcUi类库 270

12.3.5创建对话框处理函数 270

12.4源程序清单 271

12.4.1清单12-1源文件AcUiSample.cpp 271

12.4.2清单12-2对话框定义文件AcUiDialogSample.h 273

12.4.3清单12-3对话框实现文件AcUiDialogSample.cpp 274

12.4.4清单12-4资源定义文件Resource.h 280

12.4.5清单12-5模块定义文件AcUiSample.ref 281

12.5补充说明 281

12.5.1使用并扩展AdUi标签对话框系统 281

12.5.2创建可扩展的自定义标签对话框 281

12.5.3扩展AutoCAD内建的标签对话框 282

12.6小结 283

第十三章 通知 284

13.1目标及结果 284

13.2知识要点及思路分析 285

12.5.1通知概述 285

12.5.2反应器类 285

12.5.3使用反应器 287

12.5.4类AcDbObject和数据库通知事件 288

12.5.5通知使用原则 288

13.3实现步骤 288

13.3.1创建数据库反应器 289

13.3.2创建永久对象反应器 290

13.4源程序清单 291

13.4.1清单13-1主源文件NotifySample.cpp 291

13.4.2清单13-2头文件dbreactor.h 292

13.4.3清单13-3源文件dbreactor.cpp 293

13.4.4清单13-4头文件persreactor.h 295

13.4.5清单13-5主源文件persreactor.cpp 296

13.4.6清单13-6模块定义文件NotifySample.def 300

13.5补充说明 300

13.5.1获取对象反应器的ID值 300

13.5.2立即事件和提交时事件 301

13.6小结 303

第十四章 多文档界面 304

14.1目标及结果 304

14.2知识要点及思路分析 304

14.2.1 MDI简介 304

14.2.2专用术语 306

14.2.3兼容级别 308

14.2.4 MDI唤醒级 310

14.2.5与多文档的交互方式 311

14.2.6文档事件通知 313

14.2.7专用文档对象 313

14.2.8非重入命令 313

14.2.9多文档命令 314

14.2.10禁止文档切换 315

14.2.11应用程序执行上下文 316

14.3实现步骤 317

14.3.1创建自定义的数据库反应器类CDbReactor 318

14.3.2创建自定义的文档管理反应器类CDocReactor 318

14.3.3创建自定义的文档信息类CPerDocData 318

14.3.4创建自定义的文档全局数据类CAppDocGlobals 319

14.3.5其它函数 319

14.4源程序清单 319

14.4.1清单14-1主源文件MDISample.cpp 319

14.4.2清单14-2模块定义文件MDISample.def 327

14.5补充说明 327

14.5.1SDI系统变量 327

14.5.2数据库撤销和事务处理功能 328

14.5.3与文档无关的数据库 328

14.6小结 329