具体描述
作者简介
目录信息
第一章 AutoCAD 2000简介
第二章 ObjectARX入门
第三章 了解ObjectARX SDK
第四章 在ObjectARX中使MFC
第五章 ObjectARX类库
第六章 数据库初步
第七章 数据库操作
第八章 数据库对象
第九章 实体
第十章 容器对象
第十一章 派生一个定制的ObjectARX类
第十二章 从AcDbObject派生
第十三章 从AcDbEntity派生
第十四章 代理对象
第十五章 通知(Notification)
· · · · · · (收起)
读后感
用户评价
总的来说,这是一本“硬核”的技术手册,而不是一本轻松的入门读物。它没有花哨的动画效果演示,也没有太多与核心技术无关的闲聊。它的价值在于其内容的深度和对细节的捕捉。如果你只是想写个简单的脚本来画个圆,这本书可能会让你望而却步,因为它从一开始就将你拉入了C++、对象模型和底层API的深水区。但如果你是一位渴望掌控AutoCAD 2000全部潜能的资深用户或工程师,并准备投入时间和精力去学习面向对象的编程思想,那么这本书提供的知识深度是那个年代其他同类书籍难以匹及的。它更像是一份武林秘籍,需要读者具备一定的内功基础,方能领悟其中关于图形数据库操作和系统级接口调用的精髓,是一部值得反复研读的工具书。
这本书的封面设计得相当朴实,一看就知道是面向实战派读者的。我当初选择它,就是冲着“ObjectARX”这几个字去的,毕竟在那个年代,想要让AutoCAD 2000真正听使唤,不自己动手写点程序是不行的。拿到手沉甸甸的,翻开目录,首先映入眼帘的是大量的C++语法基础回顾和面向对象设计的理论讲解。坦白说,对于一个已经工作了一段时间,主要靠CAD出图的工程师来说,这部分内容略显冗长,但细想之下,作者的良苦用心也能体会到——毕竟,很多二次开发的问题都出在对基本功的不扎实上。我记得我花了快一周时间才啃完前三章,主要是Arx的初始化和环境搭建,那会儿的开发环境配置起来真是个体力活,各种路径、编译器的设置,光是解决链接错误就能消磨掉大半热情。不过,一旦成功编译出第一个“Hello World”的弹出框,那种成就感是无可替代的,也为后续更复杂的几何操作打下了坚实的基础。这本书在解释Arx如何与AutoCAD核心数据库交互时,讲解得非常细致,对于数据库对象的访问权限和事务处理流程,有图文并茂的步骤,这在当时市面上其他资料中是比较少见的详尽程度。
这本书的排版风格非常复古,大量使用等宽字体来展示代码片段,这在今天看来或许有些审美疲劳,但在那个没有高清大屏的时代,清晰的代码结构就是最好的界面。我印象最深的是关于“数据导出与自定义命令”那一章。我当时正好负责一个项目,需要将CAD图形中的特定属性信息批量提取出来,生成一份标准的工程报告。市面上很多教程只是教你怎么画线怎么画圆,但这本书却深入到了如何拦截用户的鼠标点击事件,如何在程序内部模拟用户的菜单操作,甚至是如何绕过一些AutoCAD默认的限制,直接修改图形实体的内部属性。记得书里有一个关于自定义“弹出式属性编辑对话框”的实例,作者没有直接使用MFC的标准控件,而是巧妙地利用了Arx提供的图形界面接口,虽然界面看起来比较“原生”,但功能确实强大且稳定。它教会我的不仅仅是如何编程,更重要的是如何“思考”CAD的使用逻辑,将重复性劳动彻底交给机器,这对于提高工作效率的帮助是立竿见影的。
阅读过程中,我发现作者似乎对“性能优化”有着近乎偏执的追求。在讲解图形对象遍历和数据库查询时,书中用好几页篇幅对比了不同的查询策略,比如使用`ssget`的各种变体和直接遍历实体集的效率差异。这对于处理大型、复杂的工程图纸至关重要。我记得在开发一个自动标注系统时,图纸包含了几千个块引用,如果按照书上不推荐的方式去循环读取,程序会在处理第500个块时彻底卡死。是参考了书中的“空间索引查找”那一节,我才意识到,在Arx开发中,必须时刻关注坐标空间的划分和数据结构的合理选择。虽然这本书是针对2000版本的,但其中很多关于内存管理和对象生命周期的讲解,即便移植到后来的版本中,依然是宝贵的经验之谈。它让我明白,二次开发不仅仅是实现功能,更是要保证程序的“健壮性”和“高效性”,这一点在当时缺乏成熟社区支持的环境下,尤为重要。
这本书的作者在处理“错误处理与调试”方面也投入了相当大的篇幅,这几乎是很多初级开发书籍会忽略的部分。书中有一章专门讨论了如何优雅地捕获和报告Arx运行时错误,以及如何利用调试工具定位那些隐藏在AutoCAD主循环深处的崩溃点。对我个人而言,最实用的一个技巧是关于“防止内存泄漏”的讲解。由于AutoCAD的运行环境相对封闭,一旦程序中出现资源未及时释放的情况,轻则导致程序变慢,重则直接导致整个CAD崩溃,所有的工作成果可能付诸东流。书中详细列举了不同对象析构函数的使用时机和注意事项,甚至提供了一套简单的内存监测框架。虽然我当时没有完全实现书中的框架,但至少学习到了那种严谨的编程态度——每一次内存分配和释放都要做到心中有数。这种“防御性编程”的理念,影响了我后续的整个软件开发生涯,远超CAD开发本身的应用范畴。