Add Altium Delphi scripts
[eda-utils.git] / scripts / altium / pcb-resize-refdes-all.pas
diff --git a/scripts/altium/pcb-resize-refdes-all.pas b/scripts/altium/pcb-resize-refdes-all.pas
new file mode 100644 (file)
index 0000000..6e40326
--- /dev/null
@@ -0,0 +1,71 @@
+// Redimensionnement du texte des références de tous les composants\r
+\r
+Procedure PCB_ResizeRefDes_All;\r
+Var\r
+    Board     : IPCB_Board;\r
+    Comp      : IPCB_Component;\r
+    Iterator  : IPCB_BoardIterator;\r
+\r
+Begin\r
+    Pcbserver.PreProcess;\r
+\r
+    Board := PCBServer.GetCurrentPCBBoard;\r
+    If Not Assigned(Board) Then\r
+    Begin\r
+        ShowMessage('The Current Document is not a Protel PCB Document.');\r
+        Exit;\r
+    End;\r
+    \r
+    // Setup Board iterator\r
+    Iterator        := Board.BoardIterator_Create; \r
+    Iterator.AddFilter_ObjectSet(MkSet(eComponentObject)); \r
+    Iterator.AddFilter_LayerSet(AllLayers); \r
+    Iterator.AddFilter_Method(eProcessAll);\r
+    \r
+    Comp := Iterator.FirstPCBObject;\r
+    While (Comp <> Nil) Do\r
+    Begin\r
+        // On ne modifie pas le numéro du PCB, qui est la référence du logo de compagnie\r
+        If CompareString(Comp.Pattern, 'LOGOCOMPANY', 7) Then\r
+        Begin\r
+           Comp := Iterator.NextPCBObject;\r
+           Continue;\r
+        End;\r
+\r
+        If CompareString(UpperCase(Comp.Pattern), 'MIRE', 4) Then\r
+        Begin\r
+           Comp := Iterator.NextPCBObject;\r
+           Continue;\r
+        End;\r
+\r
+        If CompareString(UpperCase(Comp.Pattern), 'CRACK', 5) Then\r
+        Begin\r
+           Comp := Iterator.NextPCBObject;\r
+           Continue;\r
+        End;\r
+\r
+        // On ne modifie pas les fiducials\r
+        If CompareString(UpperCase(Comp.Pattern), 'FIDG', 4) Then\r
+        Begin\r
+           Comp := Iterator.NextPCBObject;\r
+           Continue;\r
+        End;\r
+\r
+        // On ne modifie pas la légende des couches\r
+        If CompareString(UpperCase(Comp.Pattern), 'LAYERS', 6) Then\r
+        Begin\r
+           Comp := Iterator.NextPCBObject;\r
+           Continue;\r
+        End;\r
+        \r
+        // Call resize function\r
+        ResizeRefDes(Comp);\r
+        \r
+        Comp := Iterator.NextPCBObject;\r
+    End;\r
+    \r
+    Board.BoardIterator_Destroy(Iterator);\r
+    \r
+    Pcbserver.PostProcess;\r
+    Client.SendMessage('PCB:Zoom', 'Action=Redraw', 255, Client.CurrentView);\r
+End;\r