421 lines
19 KiB
ObjectPascal
421 lines
19 KiB
ObjectPascal
Var
|
|
CurrentSCHLib : ISch_Lib;
|
|
CurrentLib : IPCB_Library;
|
|
|
|
Function CreateAComponent(Name: String) : IPCB_LibComponent;
|
|
Var
|
|
PrimitiveList: TInterfaceList;
|
|
PrimitiveIterator: IPCB_GroupIterator;
|
|
PrimitiveHandle: IPCB_Primitive;
|
|
I: Integer;
|
|
|
|
Begin
|
|
// Check if footprint already in library
|
|
Result := CurrentLib.GetComponentByName(Name);
|
|
If Result = Nil Then
|
|
Begin
|
|
// Create New Component
|
|
Result := PCBServer.CreatePCBLibComp;
|
|
Result.Name := Name;
|
|
End
|
|
Else
|
|
Begin
|
|
// Clear existin component
|
|
Try
|
|
// Create List with all primitives on board
|
|
PrimitiveList := TInterfaceList.Create;
|
|
PrimitiveIterator := Result.GroupIterator_Create;
|
|
PrimitiveIterator.AddFilter_ObjectSet(AllObjects);
|
|
PrimitiveHandle := PrimitiveIterator.FirstPCBObject;
|
|
While PrimitiveHandle <> Nil Do
|
|
Begin
|
|
PrimitiveList.Add(PrimitiveHandle);
|
|
PrimitiveHandle := PrimitiveIterator.NextPCBObject;
|
|
End;
|
|
|
|
// Delete all primitives
|
|
For I := 0 To PrimitiveList.Count - 1 Do
|
|
Begin
|
|
PrimitiveHandle := PrimitiveList.items[i];
|
|
Result.RemovePCBObject(PrimitiveHandle);
|
|
Result.GraphicallyInvalidate;
|
|
End;
|
|
|
|
Finally
|
|
Result.GroupIterator_Destroy(PrimitiveIterator);
|
|
PrimitiveList.Free;
|
|
End;
|
|
End;
|
|
End;
|
|
|
|
Procedure CreateTHComponentPad(NewPCBLibComp : IPCB_LibComponent, Name : String, HoleType : TExtendedHoleType,
|
|
HoleSize : Real, HoleLength : Real, Layer : TLayer, X : Real, Y : Real,
|
|
OffsetX : Real, OffsetY : Real, TopShape : TShape, TopXSize : Real, TopYSize : Real,
|
|
InnerShape : TShape, InnerXSize : Real, InnerYSize : Real,
|
|
BottomShape : TShape, BottomXSize : Real, BottomYSize : Real,
|
|
Rotation: Real, CRRatio : Real, PMExpansion : Real, SMExpansion: Real, Plated : Boolean);
|
|
Var
|
|
NewPad : IPCB_Pad2;
|
|
PadCache : TPadCache;
|
|
|
|
Begin
|
|
NewPad := PcbServer.PCBObjectFactory(ePadObject, eNoDimension, eCreate_Default);
|
|
NewPad.Mode := ePadMode_LocalStack;
|
|
NewPad.HoleType := HoleType;
|
|
NewPad.HoleSize := MMsToCoord(HoleSize);
|
|
if HoleLength <> 0 then
|
|
NewPad.HoleWidth := MMsToCoord(HoleLength);
|
|
NewPad.TopShape := TopShape;
|
|
if TopShape = eRoundedRectangular then
|
|
NewPad.SetState_StackCRPctOnLayer(eTopLayer, CRRatio);
|
|
if BottomShape = eRoundedRectangular then
|
|
NewPad.SetState_StackCRPctOnLayer(eBottomLayer, CRRatio);
|
|
NewPad.TopXSize := MMsToCoord(TopXSize);
|
|
NewPad.TopYSize := MMsToCoord(TopYSize);
|
|
NewPad.MidShape := InnerShape;
|
|
NewPad.MidXSize := MMsToCoord(InnerXSize);
|
|
NewPad.MidYSize := MMsToCoord(InnerYSize);
|
|
NewPad.BotShape := BottomShape;
|
|
NewPad.BotXSize := MMsToCoord(BottomXSize);
|
|
NewPad.BotYSize := MMsToCoord(BottomYSize);
|
|
NewPad.SetState_XPadOffsetOnLayer(Layer, MMsToCoord(OffsetX));
|
|
NewPad.SetState_YPadOffsetOnLayer(Layer, MMsToCoord(OffsetY));
|
|
NewPad.RotateBy(Rotation);
|
|
NewPad.MoveToXY(MMsToCoord(X), MMsToCoord(Y));
|
|
NewPad.Plated := Plated;
|
|
NewPad.Name := Name;
|
|
|
|
Padcache := NewPad.GetState_Cache;
|
|
if PMExpansion <> 0 then
|
|
Begin
|
|
Padcache.PasteMaskExpansionValid := eCacheManual;
|
|
Padcache.PasteMaskExpansion := MMsToCoord(PMExpansion);
|
|
End;
|
|
if SMExpansion <> 0 then
|
|
Begin
|
|
Padcache.SolderMaskExpansionValid := eCacheManual;
|
|
Padcache.SolderMaskExpansion := MMsToCoord(SMExpansion);
|
|
End;
|
|
NewPad.SetState_Cache := Padcache;
|
|
|
|
NewPCBLibComp.AddPCBObject(NewPad);
|
|
PCBServer.SendMessageToRobots(NewPCBLibComp.I_ObjectAddress,c_Broadcast,PCBM_BoardRegisteration,NewPad.I_ObjectAddress);
|
|
End;
|
|
|
|
Procedure CreateComponentTrack(NewPCBLibComp : IPCB_LibComponent, X1 : Real, Y1 : Real, X2 : Real, Y2 : Real, Layer : TLayer, LineWidth : Real, IsKeepout : Boolean);
|
|
Var
|
|
NewTrack : IPCB_Track;
|
|
|
|
Begin
|
|
NewTrack := PcbServer.PCBObjectFactory(eTrackObject,eNoDimension,eCreate_Default);
|
|
NewTrack.X1 := MMsToCoord(X1);
|
|
NewTrack.Y1 := MMsToCoord(Y1);
|
|
NewTrack.X2 := MMsToCoord(X2);
|
|
NewTrack.Y2 := MMsToCoord(Y2);
|
|
NewTrack.Layer := Layer;
|
|
NewTrack.Width := MMsToCoord(LineWidth);
|
|
NewTrack.IsKeepout := IsKeepout;
|
|
NewPCBLibComp.AddPCBObject(NewTrack);
|
|
PCBServer.SendMessageToRobots(NewPCBLibComp.I_ObjectAddress,c_Broadcast,PCBM_BoardRegisteration,NewTrack.I_ObjectAddress);
|
|
End;
|
|
|
|
Procedure CreateComponentArc(NewPCBLibComp : IPCB_LibComponent, CenterX : Real, CenterY : Real, Radius : Real, StartAngle : Real, EndAngle : Real, Layer : TLayer, LineWidth : Real, IsKeepout : Boolean);
|
|
Var
|
|
NewArc : IPCB_Arc;
|
|
|
|
Begin
|
|
NewArc := PCBServer.PCBObjectFactory(eArcObject,eNoDimension,eCreate_Default);
|
|
NewArc.XCenter := MMsToCoord(CenterX);
|
|
NewArc.YCenter := MMsToCoord(CenterY);
|
|
NewArc.Radius := MMsToCoord(Radius);
|
|
NewArc.StartAngle := StartAngle;
|
|
NewArc.EndAngle := EndAngle;
|
|
NewArc.Layer := Layer;
|
|
NewArc.LineWidth := MMsToCoord(LineWidth);
|
|
NewArc.IsKeepout := IsKeepout;
|
|
NewPCBLibComp.AddPCBObject(NewArc);
|
|
PCBServer.SendMessageToRobots(NewPCBLibComp.I_ObjectAddress,c_Broadcast,PCBM_BoardRegisteration,NewArc.I_ObjectAddress);
|
|
End;
|
|
|
|
Function ReadStringFromIniFile(Section: String, Name: String, FilePath: String, IfEmpty: String) : String;
|
|
Var
|
|
IniFile : TIniFile;
|
|
|
|
Begin
|
|
result := IfEmpty;
|
|
If FileExists(FilePath) Then
|
|
Begin
|
|
Try
|
|
IniFile := TIniFile.Create(FilePath);
|
|
|
|
Result := IniFile.ReadString(Section, Name, IfEmpty);
|
|
Finally
|
|
Inifile.Free;
|
|
End;
|
|
End;
|
|
End;
|
|
|
|
Procedure EnableMechanicalLayers(Zero : Integer);
|
|
Var
|
|
Board : IPCB_Board;
|
|
MajorADVersion : Integer;
|
|
|
|
Begin
|
|
End;
|
|
|
|
Procedure DeleteFootprint(Name : String);
|
|
var
|
|
CurrentLib : IPCB_Library;
|
|
del_list : TInterfaceList;
|
|
I : Integer;
|
|
S_temp : TString;
|
|
Footprint : IPCB_LibComponent;
|
|
FootprintIterator : Integer;
|
|
|
|
Begin
|
|
// ShowMessage('Script running');
|
|
CurrentLib := PCBServer.GetCurrentPCBLibrary;
|
|
If CurrentLib = Nil Then
|
|
Begin
|
|
ShowMessage('This is not a PCB library document');
|
|
Exit;
|
|
End;
|
|
|
|
// store selected footprints in a TInterfacelist that are to be deleted later...
|
|
del_list := TInterfaceList.Create;
|
|
|
|
// For each page of library Is a footprint
|
|
FootprintIterator := CurrentLib.LibraryIterator_Create;
|
|
FootprintIterator.SetState_FilterAll;
|
|
|
|
// Within each page, fetch primitives of the footprint
|
|
// A footprint Is a IPCB_LibComponent inherited from
|
|
// IPCB_Group which Is a container object storing primitives.
|
|
Footprint := FootprintIterator.FirstPCBObject; // IPCB_LibComponent
|
|
|
|
while (Footprint <> Nil) Do
|
|
begin
|
|
S_temp :=Footprint.Name;
|
|
|
|
// check for specific footprint, to delete them before (0=equal string)
|
|
If Not (CompareText(S_temp, Name)) Then
|
|
begin
|
|
del_list.Add(Footprint);
|
|
//ShowMessage('selected footprint ' + Footprint.Name);
|
|
end;
|
|
Footprint := FootprintIterator.NextPCBObject;
|
|
end;
|
|
|
|
CurrentLib.LibraryIterator_Destroy(FootprintIterator);
|
|
|
|
Try
|
|
PCBServer.PreProcess;
|
|
For I := 0 To del_list.Count - 1 Do
|
|
Begin
|
|
Footprint := del_list.items[i];
|
|
// ShowMessage('deleted footprint ' + Footprint.Name);
|
|
CurrentLib.RemoveComponent(Footprint);
|
|
End;
|
|
Finally
|
|
PCBServer.PostProcess;
|
|
del_list.Free;
|
|
End;
|
|
End;
|
|
|
|
Procedure CreateComponentEC4_12S05P(Zero : integer);
|
|
Var
|
|
NewPCBLibComp : IPCB_LibComponent;
|
|
NewPad : IPCB_Pad2;
|
|
NewRegion : IPCB_Region;
|
|
NewContour : IPCB_Contour;
|
|
STEPmodel : IPCB_ComponentBody;
|
|
Model : IPCB_Model;
|
|
TextObj : IPCB_Text;
|
|
TextObj2 : IPCB_Text;
|
|
|
|
Begin
|
|
Try
|
|
PCBServer.PreProcess;
|
|
|
|
EnableMechanicalLayers(0);
|
|
|
|
NewPcbLibComp := CreateAComponent('EC4-12S05P');
|
|
NewPcbLibComp.Name := 'EC4-12S05P';
|
|
NewPCBLibComp.Description := 'SIP, 2.54 mm pitch; 7 pin, 19.50 mm L X 10.00 mm W X 6.50 mm H body';
|
|
NewPCBLibComp.Height := MMsToCoord(6.5);
|
|
|
|
// Create text object for .Designator
|
|
TextObj := PCBServer.PCBObjectFactory(eTextObject, eNoDimension, eCreate_Default);
|
|
TextObj.UseTTFonts := True;
|
|
TextObj.Layer := eMechanical9;
|
|
TextObj.Text := '.Designator';
|
|
TextObj.Size := MMsToCoord(1.2);
|
|
TextObj.Width := MMsToCoord(0.12);
|
|
NewPCBLibComp.AddPCBObject(TextObj);
|
|
PCBServer.SendMessageToRobots(NewPCBLibComp.I_ObjectAddress,c_Broadcast,PCBM_BoardRegisteration,TextObj.I_ObjectAddress);
|
|
|
|
// Create text object for .Designator
|
|
TextObj2 := PCBServer.PCBObjectFactory(eTextObject, eNoDimension, eCreate_Default);
|
|
TextObj2.UseTTFonts := True;
|
|
TextObj2.Layer := eMechanical3;
|
|
TextObj2.Text := '.Designator';
|
|
TextObj2.Size := MMsToCoord(2);
|
|
TextObj2.Width := MMsToCoord(0.2);
|
|
NewPCBLibComp.AddPCBObject(TextObj2);
|
|
PCBServer.SendMessageToRobots(NewPCBLibComp.I_ObjectAddress,c_Broadcast,PCBM_BoardRegisteration,TextObj2.I_ObjectAddress);
|
|
|
|
CreateTHComponentPad(NewPCBLibComp, '1', eRoundHole, 0.8, 0, eBottomLayer, -7.62, -1.25, 0, 0, eRectangular, 1.2, 1.2, eRounded, 1.2, 1.2, eRectangular, 1.2, 1.2, 270, 0, -1.2, 0, True);
|
|
CreateTHComponentPad(NewPCBLibComp, '2', eRoundHole, 0.8, 0, eBottomLayer, -5.08, -1.25, 0, 0, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, 0, 0, -1.2, 0, True);
|
|
CreateTHComponentPad(NewPCBLibComp, '3', eRoundHole, 0.8, 0, eBottomLayer, -2.54, -1.25, 0, 0, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, 0, 0, -1.2, 0, True);
|
|
CreateTHComponentPad(NewPCBLibComp, '4', eRoundHole, 0.8, 0, eBottomLayer, 0, -1.25, 0, 0, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, 0, 0, -1.2, 0, True);
|
|
CreateTHComponentPad(NewPCBLibComp, '5', eRoundHole, 0.8, 0, eBottomLayer, 2.54, -1.25, 0, 0, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, 0, 0, -1.2, 0, True);
|
|
CreateTHComponentPad(NewPCBLibComp, '6', eRoundHole, 0.8, 0, eBottomLayer, 5.08, -1.25, 0, 0, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, 0, 0, -1.2, 0, True);
|
|
CreateTHComponentPad(NewPCBLibComp, '7', eRoundHole, 0.8, 0, eBottomLayer, 7.62, -1.25, 0, 0, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, eRounded, 1.2, 1.2, 0, 0, -1.2, 0, True);
|
|
|
|
CreateComponentTrack(NewPCBLibComp, -7.895, -1.1, -7.345, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -7.345, -1.1, -7.345, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -7.345, -1.4, -7.895, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -7.895, -1.4, -7.895, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -5.355, -1.1, -4.805, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -4.805, -1.1, -4.805, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -4.805, -1.4, -5.355, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -5.355, -1.4, -5.355, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -2.815, -1.1, -2.265, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -2.265, -1.1, -2.265, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -2.265, -1.4, -2.815, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -2.815, -1.4, -2.815, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -0.275, -1.1, 0.275, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 0.275, -1.1, 0.275, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 0.275, -1.4, -0.275, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -0.275, -1.4, -0.275, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 2.265, -1.1, 2.815, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 2.815, -1.1, 2.815, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 2.815, -1.4, 2.265, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 2.265, -1.4, 2.265, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 4.805, -1.1, 5.355, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 5.355, -1.1, 5.355, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 5.355, -1.4, 4.805, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 4.805, -1.4, 4.805, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 7.345, -1.1, 7.895, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 7.895, -1.1, 7.895, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 7.895, -1.4, 7.345, -1.4, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 7.345, -1.4, 7.345, -1.1, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -9.75, -5, -9.75, 5, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -9.75, 5, 9.75, 5, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 9.75, 5, 9.75, -5, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, 9.75, -5, -9.75, -5, eMechanical5, 0.025, False);
|
|
CreateComponentTrack(NewPCBLibComp, -9.75, -5, -9.75, 5, eMechanical3, 0.12, False);
|
|
CreateComponentTrack(NewPCBLibComp, -9.75, 5, 9.75, 5, eMechanical3, 0.12, False);
|
|
CreateComponentTrack(NewPCBLibComp, 9.75, 5, 9.75, -5, eMechanical3, 0.12, False);
|
|
CreateComponentTrack(NewPCBLibComp, 9.75, -5, -9.75, -5, eMechanical3, 0.12, False);
|
|
CreateComponentArc(NewPCBLibComp, -9.04, -4.29, 0.44, 0, 360, eMechanical3, 0.12, False);
|
|
CreateComponentTrack(NewPCBLibComp, -9.825, -5.075, -9.825, 5.075, eTopOverlay, 0.15, False);
|
|
CreateComponentTrack(NewPCBLibComp, -9.825, 5.075, 9.825, 5.075, eTopOverlay, 0.15, False);
|
|
CreateComponentTrack(NewPCBLibComp, 9.825, 5.075, 9.825, -5.075, eTopOverlay, 0.15, False);
|
|
CreateComponentTrack(NewPCBLibComp, 9.825, -5.075, -9.825, -5.075, eTopOverlay, 0.15, False);
|
|
CreateComponentArc(NewPCBLibComp, -7.62, -5.55, 0.125, 0, 360, eTopOverlay, 0.25, False);
|
|
CreateComponentTrack(NewPCBLibComp, 0, 0.35, 0, -0.35, eMechanical7, 0.05, False);
|
|
CreateComponentTrack(NewPCBLibComp, -0.35, 0, 0.35, 0, eMechanical7, 0.05, False);
|
|
CreateComponentArc(NewPCBLibComp, 0, 0, 0.25, 0, 360, eMechanical7, 0.05, False);
|
|
CreateComponentTrack(NewPCBLibComp, 10.25, -5.5, 10.25, 5.5, eMechanical7, 0.05, False);
|
|
CreateComponentTrack(NewPCBLibComp, 10.25, 5.5, -10.25, 5.5, eMechanical7, 0.05, False);
|
|
CreateComponentTrack(NewPCBLibComp, -10.25, 5.5, -10.25, -5.5, eMechanical7, 0.05, False);
|
|
CreateComponentTrack(NewPCBLibComp, -10.25, -5.5, 10.25, -5.5, eMechanical7, 0.05, False);
|
|
|
|
STEPmodel := PcbServer.PCBObjectFactory(eComponentBodyObject, eNoDimension, eCreate_Default);
|
|
Model := STEPmodel.ModelFactory_FromFilename('C:\Users\korisnik\Downloads\EC4-12S05P\EC4-12S05P.STEP', false);
|
|
STEPModel.Layer := eMechanical1;
|
|
STEPmodel.Model := Model;
|
|
STEPmodel.SetState_Identifier('EC4-12S05P');
|
|
NewPCBLibComp.AddPCBObject(STEPmodel);
|
|
|
|
CurrentLib.RegisterComponent(NewPCBLibComp);
|
|
CurrentLib.CurrentComponent := NewPcbLibComp;
|
|
Finally
|
|
PCBServer.PostProcess;
|
|
End;
|
|
|
|
CurrentLib.Board.ViewManager_UpdateLayerTabs;
|
|
CurrentLib.Board.ViewManager_FullUpdate;
|
|
|
|
// Code By Vincent Himpe
|
|
TextObj.BeginModify; // Let the PCBserver know we are going To modify
|
|
TextObj.AdvanceSnapping := True; // turn On the advanced snapping capabilities
|
|
TextObj.UnderlyingString := '.Designator'; // Not strictly necessary but clean
|
|
TextObj.TTFInvertedTextJustify := eAutoPos_CenterCenter; // allow the text To autoposition inside the container
|
|
TextObj.XLocation := NewpcbLibComp.x; // Set the text inside the container To origin Of he component
|
|
TextObj.yLocation := NewpcbLibComp.y;
|
|
TextObj.Snappointx := NewpcbLibComp.x; // Set the container itself into the origin Of the component
|
|
TextObj.Snappointy := NewpcbLibComp.y;
|
|
TextObj.endModify; // Let PCBserver know we are finished
|
|
Textobj.GraphicallyInvalidate; // force a graphical repaint
|
|
|
|
TextObj2.BeginModify;
|
|
TextObj2.AdvanceSnapping := True;
|
|
TextObj2.UnderlyingString := '.Designator';
|
|
TextObj2.TTFInvertedTextJustify := eAutoPos_CenterCenter;
|
|
TextObj2.XLocation := NewpcbLibComp.x;
|
|
TextObj2.yLocation := NewpcbLibComp.y;
|
|
TextObj2.Snappointx := NewpcbLibComp.x;
|
|
TextObj2.Snappointy := NewpcbLibComp.y;
|
|
TextObj2.endModify; // Let PCBserver know we are finished
|
|
Textobj2.GraphicallyInvalidate;
|
|
//
|
|
|
|
Client.SendMessage('PCB:Zoom', 'Action=All' , 255, Client.CurrentView)
|
|
End;
|
|
|
|
Procedure CreateAPCBLibrary(Zero : integer);
|
|
Var
|
|
View : IServerDocumentView;
|
|
Document : IServerDocument;
|
|
TempPCBLibComp : IPCB_LibComponent;
|
|
|
|
Begin
|
|
If PCBServer = Nil Then
|
|
Begin
|
|
ShowMessage('No PCBServer present. This script inserts a footprint into an existing PCB Library that has the current focus.');
|
|
Exit;
|
|
End;
|
|
|
|
CurrentLib := PcbServer.GetCurrentPCBLibrary;
|
|
If CurrentLib = Nil Then
|
|
Begin
|
|
ShowMessage('You must have focus on a PCB Library in order for this script to run.');
|
|
Exit;
|
|
End;
|
|
|
|
View := Client.GetCurrentView;
|
|
Document := View.OwnerDocument;
|
|
Document.Modified := True;
|
|
|
|
// Create And focus a temporary component While we delete items (BugCrunch #10165)
|
|
TempPCBLibComp := PCBServer.CreatePCBLibComp;
|
|
TempPcbLibComp.Name := '___TemporaryComponent___';
|
|
CurrentLib.RegisterComponent(TempPCBLibComp);
|
|
CurrentLib.CurrentComponent := TempPcbLibComp;
|
|
CurrentLib.Board.ViewManager_FullUpdate;
|
|
|
|
CreateComponentEC4_12S05P(0);
|
|
|
|
// Delete Temporary Footprint And re-focus
|
|
CurrentLib.RemoveComponent(TempPCBLibComp);
|
|
CurrentLib.Board.ViewManager_UpdateLayerTabs;
|
|
CurrentLib.Board.ViewManager_FullUpdate;
|
|
Client.SendMessage('PCB:Zoom', 'Action=All', 255, Client.CurrentView);
|
|
|
|
DeleteFootprint('PCBCOMPONENT_1'); // code by Randy C - Delete PCBCOMPONENT_1
|
|
|
|
End;
|
|
|
|
Procedure CreateALibrary;
|
|
Begin
|
|
Screen.Cursor := crHourGlass;
|
|
|
|
CreateAPCBLibrary(0);
|
|
|
|
Screen.Cursor := crArrow;
|
|
End;
|
|
|
|
End.
|