VBScript

このリファレンスでは、Altium Designer でスクリプトを作成するために使用される VisualBasic Scripting 言語について説明します。スクリプトシステムでサポートされている VisualBasic Scripting のステートメント、関数、拡張機能の詳細を提供します。

このリファレンスの内容:

VBScript 言語

Visual Basic Scripting(略して VBScript)は、Altium Designer のオブジェクトモデルおよびビジュアルコンポーネントを扱うスクリプトを作成するために使用できます。このリファレンスでは、基本的なプログラミング概念と Altium Designer の基本操作に精通していることを前提としています。

Altium Designer のスクリプトシステムは、Microsoft ActiveX Scripting システムから派生した VBScript 言語(および他のスクリプト言語)をサポートしています。したがって、たとえば Altium Designer で使用されているのと同じ ActiveX スクリプトエンジンに基づく CScripts や WScripts を使用できるはずです。

Altium Designer でサポートされるすべてのスクリプト言語は型なし(typeless / untyped)であり、これはスクリプトでレコードやクラスを定義したり、ポインタを関数のパラメータとして渡したりできないことを意味します。

VBScript script example

Sub DisplayName (sName)
  MsgBox "My Name is " & sName
End Sub
VBScript とそのキーワード、演算子、ステートメントの詳細については、Microsoft Developers Network VBScript セクションを参照してください。

Altium Designer と Delphi RTL

スクリプトシステムは、Embarcadero Delphi Run Time Library(RTL)のサブセットと、Altium Designer API をサポートします。

VBScript スクリプトは、Altium Designer 内の複数のオブジェクトモデルにアクセスできます。たとえば、PCB オブジェクトモデルを VBScript から使用して PCB ドキュメント上の PCB オブジェクトを扱ったり、Workspace Manager オブジェクトモデルを使用してプロジェクトとそのドキュメントを操作し、 ネットリストデータを抽出したりできます。

スクリプティングリファレンスには、Altium Designer のオブジェクトモデル、コンポーネント、グローバルルーチン、型、変数など、このスクリプト言語を構成する要素に関するインターフェース情報が含まれています。VBScript 関数の詳細については Microsoft Visual Basic のドキュメントを参照してください。

サーバープロセス

スクリプトはサーバープロセスを実行するために使用でき、サーバープロセスは Altium Designer 内のコマンドを表します。

VBScript ソースファイル

VBScript プロジェクトは、スクリプトドキュメント(スクリプトユニットおよびスクリプトフォーム)を格納するように構成されています。スクリプトは、メニュー項目、ツールバーボタン、またはシステムメニューの Run Script ダイアログから実行できます。

PRJSCR、VBS、DFM ファイル

スクリプトは、*.PRJSCR 拡張子を持つプロジェクトとして整理されます。各 VBScript プロジェクトは、*.vbs 拡張子を持つファイルで構成されます。ファイルはスクリプトユニットまたはスクリプトフォームのいずれかで、各フォームには *.vbs 拡張子の VBScript スクリプトファイルと、それに対応する *.dfm 拡張子のフォームが含まれます)。スクリプトフォームは、Altium Designer 上で動作するさまざまなコントロールをホストするグラフィカルウィンドウ(ダイアログ)です。

スクリプトを異なるプロジェクトに関連付けることも可能であり、スクリプト数やそのプロシージャ/関数を管理するために、スクリプトを複数のプロジェクトに分けて整理することを強く推奨します。スクリプト(スクリプトユニットおよびスクリプトフォーム)は、Altium Designer 内から呼び出せる関数/プロシージャで構成されます。

VBScript の例

このリファレンスに含まれる簡単な例は、Altium Designer における VBScript プログラミングの基本機能を示しています。

さらに VBScript の例については、ダウンロード可能な Altium Designer 用 example scripts コレクション内の ..\VBScripts フォルダを参照してください。

VBScript は、スクリプトフォーム、スクリプトユニット、関数、Altium Designer スクリプティング API のオブジェクト、およびスクリプトシステムで公開されている Embarcadero Delphi RTL の関数/オブジェクトのサブセットを使用できます。

VBScript スクリプトの作成

このセクションでは、Altium Designer で VBScript を作成するための基本概念を扱います。

VBScript の命名規則

VBScript の変数は大文字/小文字を区別しません。つまり、大文字と小文字の変数は同じ意味になります:

Example

The variables b and B are the same.
b = 60
B = 60

ローカル変数とグローバル変数

すべてのスクリプトにはローカル変数とグローバル変数があるため、スクリプトプロジェクト内では変数名が一意になるようにすることが重要です。変数が outside サブルーチンや関数の外側で定義されている場合、それらはグローバルであり、同一プロジェクト内の任意のユニットからアクセスできます。

変数が inside ルーチンの内側で定義されている場合、それらのローカル変数はそのルーチンの外部からアクセスできません。スクリプトは型なしであるため、変数は型を伴って初期化されません。

プロシージャ内のローカル変数は自動的に初期化されます。

Variable Initialization

Sub Example
  Dim X
  Dim s
  ' x set to 0
  x =  0
  ' s set to empty
  s = ""
End Sub

サブルーチンと関数

VBScript では 2 種類のプロシージャ(サブルーチンと関数)を使用できます。関数のみが値を返します。スクリプト内でサブルーチンまたは関数を呼び出す構文は次のとおりです:

Call SubRoutineA(parameters)
...または
SubRoutine parameters

Subroutine example

Sub SetTheHeight AHeight
  Set Component.Height = AHeight
End Sub

Function example

Function Addone(value)
  AddOne = Value + 1
End Function

Another Function example

Function Test(s)
 Test = S + " rules.."
End Function
 
Sub DisplayName (sName)
 MsgBox sName
End Sub
 
Sub Main
Dim S
 S = "Altium Designer"
 DisplayName Test(s)
End Sub

パラメータと引数

VBScript では、プロシージャ宣言には通常パラメータのリストがあります。変数は型なしと見なされ、スクリプトシステムが変数型を自動的に判断する点に注意してください。プロシージャ呼び出し時にパラメータの代わりに渡す値を引数と呼びます。

Example of a subroutine with a parameter

Sub DisplayName (sName)
  MsgBox "My Name is " & sName
End Sub

Example of calling a subroutine

Sub Main
  DisplayName "Altium Designer  Rules"
End Sub

サブルーチンまたは関数を呼び出す際に Call キーワードを使用するかどうかは任意です(後方互換性のために維持されています)。

スクリプト内のコメント

スクリプトにおけるコメントは、プログラマのために含める実行されないコード行です。コメントはスクリプト内のほぼどこにでも含めることができます。

VBScript のコメント:

  • ' 以降のテキストはすべて無視されます。
  • Rem 以降のテキストはすべて無視されます。

Example

' This whole line is a comment
REM this whole line is also a comment
DocName = Document.Name ' Get name of active document

スクリプト行の分割

VBScript では、各コードステートメントは行末(CR/LF の組み合わせ)で終了し、ステートメントの終わりを示します。VBScript では、アンダースコア文字(_)を使用して、1 つのステートメントを複数行に分割し、長い命令を 2 行以上に分けて記述できます。

VBScript は、スクリプト内の 1 行のコード長に実用上の制限を設けていません。ただし、可読性とデバッグのしやすさの観点から、画面上や印刷物で容易に読めるようにコード行の長さを制限するのが良い習慣です。コード行が非常に長い場合は複数行に分割でき、VB インタプリタはそれを 1 行で書かれたかのように扱います。

Unformatted code example

If Not (PcbApi_ChooseRectangleByCorners(BoardHandle,"Choose first corner","Choose final corner",x1,y1,x2,y2)) Then EndIf

Formatted code example

If Not (PcbApi_ChooseRectangleByCorners(BoardHandle,_ 
                                        “Choose first corner”,_ 
                                        “Choose final corner”,_ 
                                        x1,y1,x2,y2)) Then EndIf

Altium Designer オブジェクトモデルの使用

スクリプトシステムの最大の特長は、Altium Designer オブジェクトのインターフェース(Object Interfaces)を VBScript で使用できることです。たとえば、回路図インターフェースおよび PCB インターフェースをそれぞれ使用することで、回路図ドキュメントや PCB ドキュメント上の設計オブジェクトを更新できます。

Altium Designer のオブジェクトインターフェースは、任意のスクリプトで使用できます。通常、スクリプト内でインターフェースをインスタンス化する必要はありません。既存の Altium Designer オブジェクトを表すインターフェースを取得し、そのインターフェースから埋め込み(embedded)または集約(aggregate)されたインターフェースオブジェクトを取り出して、プロパティ値の取得/設定を行います。

PCB ドキュメントとそのデータオブジェクトにアクセスするには、まず PCBServer 関数を呼び出します。慣例として、インターフェース名には I 文字が接頭辞として付けられます。たとえば、 IPCB_Board は Altium Designer 内の既存 PCB ドキュメントのインターフェースを表します。

Example

' Checks if the current document is a Schematic document
  If SchServer Is Nothing Then Exit Sub
  Set CurrentSheet = SchServer.GetCurrentSchDocument
  If CurrentSheet Is Nothing Then Exit Sub

PCB ドキュメントにアクセスするには、PCBServer を呼び出します。

Creation of a PCB Object Using the PCB Object Model

Sub ViaCreation
  Dim Board
  Dim Via
  Set Board = PCBServer.GetCurrentPCBBoard
  If Board is Nothing Then Exit Sub
  ' Create a Via object
  Via = PCBServer.PCBObjectFactory(eViaObject, eNoDimension, eCreate_Default)
  Via.X = MilsToCoord(7500)
  Via.Y = MilsToCoord(7500)
  Via.Size   = MilsToCoord(50)
  Via.HoleSize   = MilsToCoord(20)
  Via.LowLayer   = eTopLayer
  Via.HighLayer = eBottomLayer
  ' Put this via in the Board object
  Board.AddPCBObject(Via)
End Sub

オブジェクト、インターフェース、関数

Altium Designer のオブジェクト、インターフェース、関数は、スクリプトから次のものを通じてアクセスできます:

  • Client API
  • PCB Server API
  • Schematic Server API
  • Work Space Manager Server API
  • Nexus API
  • Altium Designer API functions
  • パラメトリックプロセス
スクリプトプロジェクトの開始方法および構築方法については、メインの Automating Design Tasks with Scripting ドキュメントを参照してください。

予約語と関数

スクリプトシステムは、Microsoft Active Scripting 言語技術から派生した VBScript 言語をサポートしています。VBScript の予約語は次のとおりです:

A, B
Abs, Array, Asc, Atn
C
Call, Case, CBool, CByte, CCur, CDate, CDbl, Chr, CInt, Class, CLng, Const, Conversions, Cos, CreateObject, CSng, CStr
D, E
DateAdd, DateDiff, DatePart, DateSerial, DateValue, Day, Derived Math, Dim, Do, Each, Erase, Escape, Empty, Eval, Execute, Exit, Exp
F, G, H
False, Filter, For, FormatCurrency, FormatDateTime, FormatNumber, FormatPercent, Function GetLocale, GetObject, GetRef, Hex, Hour
I, L, M
If, Is, InputBox, Instr, InStrRev, Int, IsArray, IsDate, IsEmpty, IsNull, IsNumeric, IsObject, Join, LBound, LCase, Left, Len, LoadPicture, Log, LTrim, Maths, Mid, MInute, Month, MonthName, MsgBox
N, O
Next, Nothing, Now, Null, Oct, On Error
P, R
Private, Property, Public, Randomize, ReDim, Rem, RTrim, Replace, RGB, Right, Rnd, Round
S, T
ScriptEngine, ScriptEngineBuildVersion, ScriptEngineMajorVersion, ScriptEngineMinorVersion, Second, Select, Set, SetLocale, Sgn, Sin, Space, Split, Sqr, Stop, StrComp, String, StrReverse, Sub, Tan, Then, Time, Timer, Timeserial, TimeValue, Trim, True, TypeName
U, V, W, X, Y
UCase, Unescape, While, Wend, With, VarType, Weekday, WeekdayName, Year

AI-LocalizedAI で翻訳
問題が見つかった場合、文字/画像を選択し、Ctrl + Enter キーを押してフィードバックをお送りください。
機能の可用性

利用できる機能は、所有する Altium ソリューション (Altium DevelopAltium Agile のエディション (Agile Teams、または Agile Enterprise)、または Altium Designer (有効な期間)) によって異なります。

説明されている機能がお使いのソフトウェアに表示されない場合、Altium の営業担当者にお問い合わせください

従来のドキュメント

Altium Designer のドキュメントは、バージョンごとに掲載されなくなりました。Altium Designer の旧バージョンのドキュメントは、Other Installers ページの Legacy Documentation の項目をご覧ください。

Content