<连载>Protel二次开发从入门到精通
--正文篇——第七章第10节
2.Create和Destroy
在RunNetListGenerate过程调用了TNetFormatter的Create和Destroy方法,定义如下:
//创建一个TNetFormatter实例。
Constructor TNetFormatter.Create;
Begin
GlobalNetListOptions := Nil; //网络连线表设置为nil。
Design := TDesign.Create;
//建立两个原理图列表,分别用于存放以当前原理图为容器的,无父子关系的一般原理图和有父子关系的原理图。
GeneratedFileNames := TStringList.Create; //创建一个用于存储产生的输出文件名称列表。
UseXRef := False;
UseNodeNames := True;
MaximumNetNameLength := 0;
MaximumPinNumberLength := 0;
MaximumPinNameLength := 0;
MaximumDesignatorLength := 0;
MaximumPartTypeLength := 0;
MaximumFootPrintLength := 0;
NetCount := 0;
UnConnectedNetCount := 0;
AppendSheetNoToNets := False;
ShouldRemoveRedundentParts := True;
ShouldRemoveRedundentNetNames := True;
ShouldRemoveRedundentSheetSymbols:= True;
PinListStyle := ePinListByComponentSortedByPinNumber; //排序类型为按组件引脚号码排序。
SetState_ProcessComponentsFirst; //设置处理次序,先处理组件,即ProcessOrder为eComponentsFirst。
SetState_UseNetFile;//设定允许使用网络文件。
SetState_AllowSingleNode;//设定允许单节点。
SetState_DontAllowZeroNode;//设定不允许零节点。
SetState_ProcessByNet;//设置按网络处理。
End;
{....................................................................................}
//TNetFormatter类的析构方法。
Destructor TNetFormatter.Destroy;
Begin
Design.Free;
GeneratedFileNames.Free;
End;
在Create方法中,创建了TDesign类的实例对象和一个用来存储已产生的文件名称的列表。上面说过,TDesign类中定义了两个用来存储原理图对象的列表,下面看一看TDesign类。
A.TDesign类定义和Create方法
//存放原理图图表的对象,此类从TConnective类继承。
TDesign = Class(TConnective)
Sheets : TListOptions;//存放原理图对象的列表。
UnFlattenedSheets : TListOptions;//存放原理图对象的列表。
Constructor Create;
DestructorDestroy;Override;
Function GetState_DesignFileName : TString;//得到设计文件名称。
Procedure AddSheet (ADataHandle : HData);
//对一个TDesign类的实例对象,把原理图对象增加到存储原理图对象的Sheets列表中。
Procedure AddUnFlattenedSheet(ADataHandle : HData);
//对一个TDesign类的实例对象,把UnFlattened类型的原理图对象增加到UnFlattenedSheets列表中。
Procedure ImportFrom_APIDataStructure;Override;
//对所有原理图进行处理,把各个原理图中的图表符号、元件、端口、网络、BUS对象属性读出来,构建出实际的对象并增加到不同的存储对象的列表中。
End; {………………………………………………………………………………………………………………}
Create方法定义如下:
Constructor TDesign.Create;
Begin
Inherited Create;
Sheets := TListOptions.Create;
//建立一个用于存放原理图对象的列表类TListOptions的实例。
UnFlattenedSheets := TListOptions.Create;
//建立一个用于存放原理图对象的列表类TListOptions的实例。
End;
在Create方法中,创建了两个TListOptions类的实例。下面来看一看TListOptions类。
1)TListOptions类定义和Create方法
//用于存放引脚对象的列表对象。
TListOptions = Class(TList)//从一个TList继承。
SortBy : TSortBy;//排序方式。
Constructor Create;
DestructorDestroy; Override;
Procedure AddPin (SpatialPin : TPin);
//增加一个引脚到TListOptions类实例的列表中。
Procedure SetState_PerformSortByPinName;
//按引脚名称对TListOptions对象实例对象中的引脚进行排序。
Procedure SetState_PerformSortByPinNumber;
//按引脚号码对TListOptions对象实例对象中的引脚进行排序。
Procedure SetState_PerformSort;
//按引脚名称对TListOptions对象实例对象中的引脚进行排序。
Procedure ImportFrom_APIDataStructure;
//对一个TListOptions的实例列表中每一个项目来调用TConnective类定义的ImportFrom_APIDataStructure方法。
Procedure AddData(ADataHandle : HData);
//对TListOptions类的一个实例列表增加对象。
Procedure ForEach(Proc : Pointer);
//对列表中的每一个对象按其地址进行遍历,来调用某一个过程进行处理。
End; {………………………………………………………………………………………………………………}
Create方法定义如下:
//创建TListOptions类的实例并设置排序方式。
Constructor TListOptions.Create;
Begin
SortBy := eSortByPinNumber;//按元件的引脚号码排序。
Inherited Create;
End;
在Create方法中,定义了一种排序方式。
到目前为止,我们仅分析了TNetFormatter.Create方法中相关的类及其方法。下面再回到上面“
……
NetFormatter.Run(NetListOptions,Parameters);//建立网络列表。
……
再来学习NetFormatter的Run过程。
本文为e-works原创投稿文章,未经e-works书面许可,任何人不得复制、转载、摘编等任何方式进行使用。如已是e-works授权合作伙伴,应在授权范围内使用。e-works内容合作伙伴申请热线:editor@e-works.net.cn tel:027-87592219/20/21。
- 上一篇文章:<连载>Protel二次开发从入门到精通
- 下一篇文章:EDA工具最好理念:端到端流程优化
