Add Altium Delphi scripts
[eda-utils.git] / scripts / altium / sch-align-refdes-all.pas
diff --git a/scripts/altium/sch-align-refdes-all.pas b/scripts/altium/sch-align-refdes-all.pas
new file mode 100644 (file)
index 0000000..2e79442
--- /dev/null
@@ -0,0 +1,45 @@
+// Alignement des attributs de tous les composants dans un schéma\r
+  \r
+Procedure SCH_ResizeRefDes_All;\r
+Var\r
+    CurrentSheet : ISch_Document;\r
+    Comp :         ISch_Component;\r
+    Iterator :     ISch_Iterator;\r
+              \r
+Begin\r
+    // Check if schematic server exists or not.\r
+    If SchServer = Nil Then Exit;\r
+  \r
+    CurrentSheet := SchServer.GetCurrentSchDocument;\r
+    If CurrentSheet = Nil Then\r
+    Begin\r
+        ShowMessage('The current document is not a schematic document.');\r
+        Exit;\r
+    End;\r
+  \r
+    Try\r
+        SchServer.ProcessControl.PreProcess(CurrentSheet, '');\r
+            \r
+        // Set up iterator to look for Component objects only\r
+        Iterator := CurrentSheet.SchIterator_Create;\r
+        If Iterator = Nil Then Exit;\r
+  \r
+        Iterator.AddFilter_ObjectSet(MkSet(eSchComponent));\r
+        Try\r
+            Comp := Iterator.FirstSchObject;\r
+            While Comp <> Nil Do\r
+            Begin\r
+                SCH_AlignRefDes(Comp);\r
+                Comp := Iterator.NextSchObject;\r
+            End;\r
+  \r
+        Finally\r
+            Currentsheet.SchIterator_Destroy(iterator);\r
+        End;\r
+  \r
+      Finally\r
+        SchServer.ProcessControl.PostProcess(CurrentSheet, '');\r
+    End;\r
+\r
+    CurrentSheet.GraphicallyInvalidate;\r
+End;\r