Altium Designer文档处理,毫秒级加速
自动处理文档工具界面
Altium Designer的脚本开发界面一共有7个大类113个控件,其中前5个大类60个控件属于Delphi软件中的控件,第6大类28个控件是AD中独有的,无继承关系,第7大类控件25个,在AD中为虚拟仪器的控件,其中一个非常重要的功能是和NanoBoard开发板配合使用,和下位机进行通信,对硬件进行控制。
Altium Designer脚本开发界面
在脚本编辑器中,输入VCL控件名称会自动变成灰色,在后面点击小数点,界面上会自动显示该对象中支持的成员函数、属性和事件,每个对象支持的成员函数、属性和事件非常的多,少则几十个,多则上百个,在AD官方提供了一个参考文档《TR0119 Component Reference》。
成员函数、属性和事件
在《TR0119 Component Reference》文档中对部分控件的功能做了一个简要的介绍,文中大部分内容是对控件的成员函数、属性和事件做了一个罗列,也有控件的继承管理,但是文中罗列的并不全面,并且文中的有几个继承关系和Delphi的VCL继承关系不同。
《TR0119 Component Reference》截图
在Delphi软件的VCL继承关系全图中包括软件自带的可以直接使用的对象,在脚本系统中前5大类控件都可以在这张图中找到,其他两大类控件不在这张图中。
Delphi VCL继承关系全图
在Delphi中所有的对象都是直接或间接的从TObject继承的,TObject是所有对象的基类,在子对象和后代对象每个对象都包含TObject对象的全部成员函数、属性。每个子对象都包含父对象的全部成员函数属性和事件。
AD脚本系统支持的控件及继承关系
使用文本对比工具可以非常方面的区分父对象和子对象中的差别,在VCL的自带的对象中,每个子对象都多于或等于父对象的成员函数、属性和事件的总数,父对象中有的成员函数、属性和事件,在子对象中一定可以找到。
对象属性、函数对比
对象的成员函数、属性
将全部控件的图片通过文本识别软件转化成文本每行之间含有大量的空格,手动删除空格非常费时,使用脚本将每行数据前后的空格删除,然后再手动删除function、sub、Event等字符串,删除函数的参数、属性的类型,最后只剩下函数名、属性名和事件名。
文本识别后处理
手动删除只保留函数名、属性名和事件名
手动删除后保留的函数名、属性名和事件名,还会有很多错误,比如在文本识别中会把i识别成I、L识别成I,这个可以根据对象的继承关系识别其中的错误。
1.将通用控件的成员函数和事件分开
通用控件为控件面板中的前5大类60个控件,由于TForm对象也是一个特殊的控件,加上TForm控件一共是61个控件,将有关系父对象及祖先对象中加起来,一共是103个控件,如果采用经典的方式,将每个文本文件的 每行数据添加到一个新的文档中,实现这个功能再分成函数/属性和事件两个文件,一共需要16秒钟,程序优化后只需要125毫秒。
将103个文件的全部成员函数、属性和事件分成成员函数/属性和事件两个文件
程序优化
在硬件上将文件保存在电脑的固态硬盘中可以显著的提高数据处理的效率,在下图中为文件在U盘中进行读写程序未优化的需要花费的时间,下图右为数据放在固态硬盘中,使用程序优化后数据处理消耗的时间。
优化前后的运行时间
2.处理两个对象的继承关系
两个对象的继承关系为手动从VCL继承关系全图中理出来的,包括一些注释性的词,需要在文本文件中将这些词语删除,处理后的文本文档只剩下VCL中的对象,方便用于后续的处理。
除了根对象,其他的对象都是从父对象继承过来的,将上面处理后的文档中的每个对象的继承关系存储在一个文档中,每行只有父对象和子对象,每两个对象的继承关系只保留一行。
两个对象的继承关系
在控件面板上前5大类60个控件,每个控件都是从根对象继承下来的,如果在每个对象中都是把全部成员函数、事件罗列一遍,没有针对性,需要只保留在父对象上增加的成员函数属性和事件,在后面出现的控件就不在本控件中添加。
3.生成继承关系表格里面的内容
前5个大类的60个控件都是从TObject对象中继承而来,为方便查看每个控件的继承关系,将60个控件的继承关系转换成单个文档中,如下图所示。
生成继承关系表格里面的内容
4.生成在父控件上增加的控件的文件
在前5大类60个控件中,每个子控件的成员函数、属性和事件都是从父对象继承而来,并在父对象上增加一些特有成员函数、属性和事件。
5.生成WPS文档中的数据
前5大类的60个控件每个控件都是依据本身的继承关系将<2>中的在父对象上增加的成员函数和事件放在一个文档中。
6.获取记事本中的函数方法和事件
7.将标准类控件的成员函数和事件分开
8.获取记事本中的函数方法和事件
9.处理仪器类控件增加的成员函数
13.全部数据生成
程序优化
14.继承关系表格更新
在113个控件只有前60个控件是Delphi软件中的对象,这60个控件+TForm对象的符合VCL中的继承关系,将61个对象添加到文档中。
需要添加的表格为1行X一列的表格,表格的标识符为"TXXX接口层次结构如下",在对文档中的表格进行遍历时判断表格的前一行的数据是否符合这个规则,如果是就在此表格中添加对象的继承关系数据。
将文本文档添加到表格中
将数据添加到表格中,首先是获取文档中的全部表格数,依次对每个表格进行遍历,判断表格前面一行的数据是否符合继承关系的标识符,如果是的就在相应文件夹下将对应的文档的数据添加到表格中。
继承关系表格更新
15.表格中的数据更新
Altium Designer不仅可以对微软的办公软件(Word、Excel、PPT、Visio)进行控制,也能对WPS软件进行控制,对WPS文档中的数据进行处理。
在WPS文档中的将要添加成员函数、属性和事件表格中设定一个标识字符串“TXXXX方法和属性”或者是“TXXXX事件”(TXXX为对象名称),这个标识字符串放在表格左上角第一行第一列,在程序执行时识别这个单元格中的数据用于判断是否时需要添加数据的表格。
程序执行的过程中,首先是获取整个文档中表格的个数,遍历全部表格对表格的第一行第一列的单元格进行判断,判断此表格是否是需要添加数据的113个控件表中的一个。如果是就到方法和属性或者事件文本文档中获取数据的行数,然后在表格中添加和文本文档相同的行数,用于添加整个文档中的数据。剩余的表格也是作为相同的判断处理。
将数据添加到WPS文档中
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删