|
本帖最后由 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;
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|