您所在的位置:e-works首页 > 产品创新数字化(PLM) > EDA

<连载>Protel二次开发从入门到精通

--正文篇——第七章第10节

发表时间:2007-9-9  特约撰稿人: 张浩 白二平 来源:e-works
本服务器根据用户在定制进程菜单时所输入的参数来产生一个不同格式的网络连线表。此服务器是本章中难度最大的一个服务器,如果您没有读第9小节,建议您先搞清楚第9小节后再来读本小节。作者邮箱:bullzhanghao@yahoo.com.cn 如有疑问,可直接与作者联系!

10.2.5Protel单元

此单元中定义了三个类,并为每一个类实现了一些方法。

TProtel2 = Class(TNetFormatter)

TProtel = Class(TProtel2)

TProtel_H = Class(TProtel2)

我们可以看出,TProtel2是TProtel和TProte_H的父类,TProtel2是从TNetFormatter继承。TProtel是用于创建flat格式的网络连线表, TProtel_H类创建一个Hierachical格式的网络连线表。

让我们先来分析TProtel_H类

1.TProtel_H

TProtel_H类定义:

//TProtel_H类创建一个hierachical格式的网络连线表。TProtel_H从TProtel2继承,TProtel2从TNetFormatter继承。

PProtel_H = ^TProtel_H;

TProtel_H = Class(TProtel2)

Function IsHierarchical : TBoolean;Override ;//对Hierachical格式,设置IsHierarchical字段为true。

Procedure WriteFileHeader;Override ;//对Hierachical格式,写文件的标题。

Procedure WriteFileTrailer;Override ;//对Hierachical格式,写文件的结尾。

Procedure WriteAllNets;Override ;//对Hierachical格式,写所有的网络属性到文件中。

Procedure WriteNet(Net : TNet);Override ;//对Hierachical格式,写网络属性到文件中。

Procedure WriteSheetHeader(IndentLevel : TShortInt);Override ;//对Hierachical格式,写图表的标题到文件。

Procedure WriteSheetSymbol(SpatialSheetSymbol : TSheetSymbol);Override ; //对Hierachical格式,写图表的符号到文件。

Procedure WriteSheetTrailer(IndentLevel : TShortInt);Override ;//对Hierachical格式,写图表的结尾。

End;

类方法说明:

此类和其父类相比,重载了WriteFileHeader(输出文件中写标题)和WriteNet(写一个网络到文件)过程,也就是说,如果用户选择的输出格式是Hierachical,就会调用这两个方法,而不是其基类中实现的方法。另外,还定义了其它的一些方法和函数,如IsHierarchical函数,对Hierachical格式,设置IsHierarchical字段为true。过程WriteSheetSymbol(SpatialSheetSymbol : TSheetSymbol)写图表的符号到文件等等。

请注意,TProtel_H类和TProtel类及其父类TProtel2都没有重载Create方法,也就是说,在NetForms单元中创建TProtel_H类或TProtel类实例时,实际上是执行其父类TNetFormatter的Create方法。

2.TProtel

类定义:

PProtel = ^TProtel;

TProtel = Class(TProtel2)

Procedure WriteFileHeader;Override ;//对flat格式,写文件的标题,没有实现。

Procedure PreProcess;//定义各类字符串长度。

Procedure WriteComponent(SpatialPart : TPart);Override ;//对flat格式,写元件的属性到文件。

Procedure WritePin(SpatialPin : TPin);Override ;//对flat格式,写引脚属性到文件

End;

类方法说明:

此类和其父类TProtel2相比,重载了WriteFileHeader(写文件标题)过程,WriteComponent(写文件属性)过程,WritePin(写元件的引脚到文件)过程。

3.TProtel2

类定义:

//TProtel2是TProtel和TProte_H的父类,TProtel2是从TNetformatter继承。

PProtel2 = ^TProtel2;

TProtel2 = Class(TNetFormatter)

Procedure WriteFileHeader;Override ; //在输出文件中写标题"PROTEL NETLIST 2.0"。

Procedure WriteComponent(SpatialPart : TPart); Override ;//把元件对象的属性写出文件。

Procedure WriteNet(Net : TNet);Override ; //写一个网络到文件。

Procedure WriteStartNet(Net : TNet);Override;//写把一个左括号和网络名称写到到文件中。

Procedure WriteEndNet(Net : TNet);Override ; //写一个右括号到文件中。

Procedure WritePin(SpatialPin : TPin);Override ;//写一个引脚到文件。

End;

类方法说明:

重载了以下几个过程,这些过程在父类TNetFormatter中此方法未实现。

WriteFileHeader来写文件标题。WriteComponent写元件属性内容到文件。WriteNet写一个网络到文件。WriteStartNet写一个网络前输出内容。WriteEndNet写一个网络后输出内容。WritePin写一个引脚到文件。

这些过程在具体使用时,我们再分析之。

本文为e-works原创投稿文章,未经e-works书面许可,任何人不得复制、转载、摘编等任何方式进行使用。如已是e-works授权合作伙伴,应在授权范围内使用。e-works内容合作伙伴申请热线:editor@e-works.net.cn tel:027-87592219/20/21。

责任编辑:王阳
3