VBScript

이 레퍼런스는 Altium Designer에서 스크립트를 작성하는 데 사용되는 VisualBasic 스크립팅 언어를 설명합니다. 스크립팅 시스템에서 지원되는 VisualBasic 스크립팅의 문장, 함수, 확장 기능에 대한 세부 정보를 제공합니다.

이 레퍼런스의 다른 내용:

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는 두 종류의 프로시저(서브루틴과 함수)를 허용하며, 함수만 값을 반환합니다. 스크립트에서 서브루틴 또는 함수를 호출하는 구문은 다음과 같습니다:

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에서 프로시저 선언은 일반적으로 매개변수 목록을 가집니다. 변수는 무타입으로 간주되며 스크립팅 시스템이 변수 타입을 자동으로 판별합니다. 프로시저를 호출할 때 매개변수 자리에 전달되는 값을 인수(argument)라고 합니다.

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는 밑줄 문자(_)를 사용하여 긴 문장을 두 줄 이상으로 나누어 여러 줄에 걸쳐 작성할 수 있습니다.

VBScript는 스크립트에서 단일 코드 줄의 길이에 실질적인 제한을 두지 않습니다. 그러나 가독성과 디버깅의 용이성을 위해, 화면이나 인쇄물에서 쉽게 읽을 수 있도록 코드 줄 길이를 적절히 제한하는 것이 좋습니다. 코드 줄이 매우 길다면 여러 줄로 나눌 수 있으며, VB 인터프리터는 이를 한 줄로 작성된 것과 동일하게 처리합니다.

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 오브젝트의 인터페이스(오브젝트 인터페이스)를 VBScript에서 사용할 수 있다는 점입니다. 예를 들어, 각각 Schematic 인터페이스와 PCB 인터페이스를 사용하여 Schematic 및 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 함수
  • 파라메트릭 프로세스
스크립트 프로젝트를 시작하고 구성하는 방법에 대한 정보는 메인 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 Develop, Altium Agile의 에디션(Agile Teams 또는 Agile Enterprise), 또는 활성기간 내의 Altium Designer 중 하나입니다.

안내된 기능이 고객님의 소프트웨어에서 보이지 않는 경우, 보다 자세한 내용을 위해 Altium 영업팀 에 문의해 주세요.

구버전 문서

Altium Designer 문서는 더 이상 버전별로 제공되지 않습니다. 이전 버전의 Altium Designer 문서가 필요하신 경우, Other Installers 페이지의 Legacy Documentation 섹션을 방문해 주세요.

콘텐츠