下面UL_Import.pas是个什么文件,在protel dxp中有一句出错?
本帖最后由 german010 于 2013-3-11 15:08 编辑_Import.pas是个什么文件,哪里有相关资料,在protel dxp2004中有一句出错?如何修改,请教大家
Procedure FP_AddPad(fp: IPCB_Component, Data: String, InFile: TextFile);
Var
s1, s2, inp, tag, lay : String;
pad : IPCB_Pad;
padsh : TShape;
cache : TPadCache;
Begin
pad := PcbServer.PCBObjectFactory(ePadObject, eNoDimension, eCreate_Default);
pad.Name := GetBetween(Data, '(Name "', '")');
// pad.Layer := LayerFromString(GetBetween(Data, '(Layer ', ')'));
StrChop(GetBetween(Data, '(Location ', ')'), ',', s1, s2);
pad.X := MilsToCoord(Evaluate(s1));
pad.Y := MilsToCoord(Evaluate(s2));
pad.Rotation := Evaluate(GetBetween(Data, '(Rotation ', ')')); // 2010-07-06 gbn
// pad.Mode := ePadMode_LocalStack; // ePadMode_Simple, ePadMode_ExternalStack
s1 := GetBetween(Data, '(ExpandPaste ', ')');
s2 := GetBetween(Data, '(ExpandMask ', ')');
If s1 <> '' || s2 <> '' Then Begin
cache := pad.Cache;
If s1 <> '' Then Begin
cache.PasteMaskExpansionValid := eCacheManual;
cache.PasteMaskExpansion := MilsToCoord(Evaluate(s1));
End;
If s2 <> '' Then Begin
cache.SolderMaskExpansionValid := eCacheManual;
cache.SolderMaskExpansion := MilsToCoord(Evaluate(s2));
End;
pad.Cache := cache;
End;
If GetBetween(Data, '(Surface ', ')') = 'True' Then Begin
pad.Mode := ePadMode_Simple;
pad.Layer := eTopLayer;
End Else Begin
pad.Mode := ePadMode_LocalStack;
End;
pad.HoleType := eRoundHole; // eSquareHole, eSlotHole
pad.HoleSize := MilsToCoord(Evaluate(GetBetween(Data, '(HoleSize ', ')')));
While Not EOF(InFile) Do Begin
ReadLn(InFile, inp);
If VarIsNull(inp) Then Continue;
inp := Trim(inp);
StrChop(inp, ' ', tag, inp);
tag := Trim(tag);
Case tag Of
'PadShape': Begin
padsh := eNoShape;
StrChop(GetBetween(inp, '(Size ', ')'), ',', s1, s2);
Case GetBetween(inp, '(Shape ', ')') Of
'NoShape': padsh := eNoShape;
'Rounded': padsh := eRounded;
'Rectangular': padsh := eRectangular;
'Octagonal': padsh := eOctagonal;
'CircleShape': padsh := eCircleShape;
'ArcShape': padsh := eArcShape;
'Terminator': padsh := eTerminator;
'RoundedRectangle': padsh := eRoundRectShape;
'RotatedRectangle': padsh := eRotatedRectShape;
Else padsh := eNoShape;
End;
lay := GetBetween(inp, '(Layer ', ')');
If CheckLeft(lay, 'Top') Then Begin
pad.TopShape := padsh;
pad.TopXSize := MilsToCoord(Evaluate(s1));
pad.TopYSize := MilsToCoord(Evaluate(s2));
End Else If CheckLeft(lay, 'Mid') Then Begin
pad.MidShape := padsh;
pad.MidXSize := MilsToCoord(Evaluate(s1));
pad.MidYSize := MilsToCoord(Evaluate(s2));
End Else If CheckLeft(lay, 'Bot') Then Begin
pad.BotShape := padsh;
pad.BotXSize := MilsToCoord(Evaluate(s1));
pad.BotYSize := MilsToCoord(Evaluate(s2));
End;
End;
'EndPad': Begin
Break;
End;
Else Begin
ShowMessage('Keyword Error: ' + tag);
End;
End;
End;
fp.AddPCBObject(pad);
PCBServer.SendMessageToRobots(fp.I_ObjectAddress, c_Broadcast, PCBM_BoardRegisteration, pad.I_ObjectAddress);
End;
找了个现成的库,以后有空再研究吧
页:
[1]