前言
TD Drafting作为二维工程设计软件,本身已经提供了符合国标的图纸图幅、标题栏明细表处理、各种形式的尺寸和符号标注、强大齐整的国标零件库等功能,完全可以满足要求,然而由于使用习惯和使用的侧重点不用,功能再强大的软件也不可能同时满足各类用户的需求,所以有一整套的二次开发体系尤为重要。
由于TD Drafting是基于ThinkDesign统一的ThinkKernel内核,和TD Engineering、TD Styling、TD Tooling等Extech推出的系列三维设计软件共享同一个底层模型。所以尽管本书主要介绍的是TD Drafting的二次开发,但是在开发过程中所涉及到的概念、模式和思想、开发手段等同样适用于对其他产品系列的二次开发。通过对本书的学习,你可以轻松地做到举一反三,快速掌握所有开发ThinkDesign庞大家族的尖端技术。
本书面向有志于从事TD Drafting二次开发的设计师、程序员,同时,也可作为高校相关专业师生的参考用书。
概述
TD Drafting二次开发主要有三种方法,一种是采用EK API的 C++技术,第二种是采用EK OLE/COM的COM/Automation技术,第三种是采用GPL(Graphics Procedure Language)图形程序语言。
EK API是TD Drafting的一套大部分以EK打头的C++函数库和类库的C++接口,该函数库在TD Drafting运行时加载,用户可在C++编程环境下编写程序,与TD Drafting进行同一地址空间上的相互通信。这种方法可进行最有效率的程序开发,但入门困难,在国内这方面的技术资料比较少见。
TD Drafting的OLE/COM接口是建立在最新技术,即与平台无关、分布式和面向对象的体系架构基础之上的组件化技术,这种技术的好处是程序的二进制兼容和统一的接口类型,还可以采用如VC、VB、Delphi和VBS脚本语言等多种计算机语言进行开发。
通过TD Drafting的OLE/COM接口可以开发的的两种类型的应用程序,一种称为Stand-Alone(Automation) ,另一种称为Add-In(插件) 。
Automation自动化技术是建立在COM基础之上,其核心技术是允许一个应用程序操作另一个应用程序。Automation技术并不是直接获取及处理数据,而是间接的通过暴露的对象和属性,利用对象的方法和属性来获取、设置及处理数据。这种方法功能限制比较大,但入门比较容易。
Add-In(插件)技术也是建立在COM基础之上,与Automation技术的区别是Add-In(插件)必须被应用程序加载,插件和应用程序是在同一个进程当中,插件通过应用程序暴露的对象和属性,通过对象的方法和属性获取、设置及处理数据。由于不需要通过程序间的通讯,所以Add-In执行效率要比Automation高得多。
GPL是一种靠TD Drafting解释执行的脚本语言,是类似Pascal语法,接近人类语言风格,可以直接在TD Drafting的I/O窗口输入执行,非常易于学习和掌握,是非程序员和广大工程师快速扩展功能进行二次开发的入门利器。
基于上述三种开发方法的特点,我们在进行开发的时候,有时并不是单纯地采用一种方式,而是相互配合。比如需要速度和效率、大量和底层图形实体打交道的地方,采用EK API就比较好,而在涉及到用户界面,需要快速开发的地方选用COM方式,而可能需要随时修改源程序,或者需要将EK API和add-in函数和用户界面及操作关联起来的时候,GPL就可以大显身手了。
从EK API、COM、GPL看过去,我们可以发现TD Drafting的二次开发体系和AutoCAD的ARX、VBA、LISP是如此的相似,他们是如此的优雅和深邃,常使人赞叹不已。在接下来的章节中,我们将带领你深入TD Drafting的内部,去探寻未知的秘密。
后记:
在艾克斯特的几年,亲历了与意大利Think3公司的合资合作, 期间任ThinkDesign产品经理。努力整理ThinkDesign的接口,当时有志于撰写一本系统介绍ThinkDesign二次开发技术的专业书籍,与意大利、法国研发部门经理Micro roboli和micro borandoni积极沟通,收集了大量的资料,可惜由于各种原因,Think3退出中国市场,于是后续的章节没有持续下去。任职期间,我陆续在CSDN博客上陆续撰写了一些技术性文章,全面介绍ThinkDesign特点和TD Drafting二次开发技术。直到现在还常怀念起往事,当我无意中发现在网络中有人转载了我的一些文章内容,颇有很多感触,感谢大家的传阅,无论成败,不管怎么样,曾经我们为了中国三维CAD的发展和崛起一起奋斗过、探索过,值得一起回忆。
艾克斯特 TD Drafting是一个非常优秀的产品,有许多其他CAD软件所不具备的特性。为了适应国情,在TD Drafting开发过程中,融合了许多设计之星TeamDesigner的功能特点,在此国际高端合作的过程中,接触到国内外顶尖产品开发思想。在后来我所开发的诺机械中,也是大量吸收了TD Drafting 和 ThinkPLM Configuration的多样式、样式系统库,全参数化、全XML配置的思想,以及艾克斯特设计之星TeamDesigner的多样式配置理念,在此感谢王总、温总、牛总、梅敬成博士、刘明涛、任雷、黄涛以及许多和我一起奋斗过的同事们。