VBScript

이 문서는 Altium Designer에서 스크립트를 작성하는 데 사용되는 Visual Basic 스크립팅 언어에 대해 설명합니다. 이 문서에서는 스크립팅 시스템에서 지원되는 Visual Basic 스크립팅 문, 함수 및 확장 기능에 대한 자세한 내용을 제공합니다.

또한 이 참조 문서에는 다음 내용이 포함되어 있습니다:

VBScript 언어

Visual Basic Scripting(줄여서 VBScript)을 사용하면 Altium Designer 객체 모델 및 시각적 컴포넌트를 다루는 스크립트를 작성할 수 있습니다. 이 참조 자료에서는 독자가 기본적인 프로그래밍 개념과 Altium Designer의 기본 작동 방식에 익숙하다고 가정합니다.

Altium Designer 스크립팅 시스템은 Microsoft ActiveX 스크립팅 시스템에서 파생된 VBScript 언어(및 기타 스크립팅 언어)를 지원합니다. 따라서 예를 들어, Altium Designer에서 사용되는 것과 동일한 ActiveX 스크립팅 엔진을 기반으로 하는 CScript나 WScript를 사용할 수 있습니다.

Altium Designer에서 지원하는 모든 스크립트 언어는 타입이 없거나 비유형(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 런타임 라이브러리(RTL) 및 Altium Designer API의 하위 집합을 지원합니다.

VBScript 스크립트는 Altium Designer의 여러 객체 모델에 액세스할 수 있습니다. 예를 들어, VBScript에서 PCB 객체 모델을 사용하여 PCB 문서의 PCB 객체를 처리하거나, 워크스페이스 관리자 객체 모델을 사용하여 프로젝트 및 해당 문서를 다루고 넷리스트 데이터를 추출할 수 있습니다.

스크립팅 참조에는 이 스크립팅 언어를 구성하는 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 예제는 ..\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에서 프로시저 선언에는 일반적으로 파라미터 목록이 포함됩니다. 변수는 유형이 없는 것으로 간주되며, 스크립트 시스템이 변수의 유형을 자동으로 판단한다는 점에 유의하십시오. 프로시저 호출 시 파라미터 대신 사용되는 값을 인자라고 합니다.

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 키워드는 선택 사항입니다(이전 버전과의 호환성을 위해 유지됨).

스크립트의 Comment

스크립트에서 Comment는 프로그래머를 위해 포함된, 실행되지 않는 코드 줄입니다. Comment는 스크립트의 거의 모든 곳에 포함될 수 있습니다.

VBScript Comment의 경우:

  • 다음 기호 뒤에 오는 모든 텍스트는 ' 뒤에 오는 모든 텍스트는 무시됩니다.
  • 다음에 이어지는 모든 텍스트 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 개체의 인터페이스(Object Interfaces)를 VBScript에서 사용할 수 있다는 점입니다. 예를 들어, Schematic 인터페이스와 PCB 인터페이스를 각각 사용하여 Schematic 및 PCB 문서의 설계 개체를 업데이트할 수 있습니다.

Altium Designer 객체 인터페이스는 모든 스크립트에서 사용할 수 있습니다. 일반적으로 스크립트에서는 인터페이스를 인스턴스화할 필요가 없습니다. 기존 Altium Designer 객체를 나타내는 인터페이스가 추출되며, 이 인터페이스에서 내장 또는 집합 인터페이스 객체를 추출하여 해당 속성 값을 가져오거나 설정할 수 있습니다.

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 객체, 인터페이스 및 함수는 다음 경로를 통해 스크립트에서 액세스할 수 있습니다:

  • 클라이언트 API
  • PCB 서버 API
  • Schematic 서버 API
  • 워크스페이스 매니저 서버 API
  • Nexus API
  • Altium Designer API 함수
  • 파라메트릭 프로세스
스크립트를 사용한 설계 작업 자동화 주요 문서를 참조하여 스크립트 프로젝트 시작 및 구축 방법에 대한 정보를 확인하십시오.

예약어 및 함수

이 스크립팅 시스템은 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 Teams, Altium Agile Enterprise, 또는 Altium Designer(활성 기간 중))에 따라 달라집니다.

실제 소프트웨어에서 문서화된 기능이 보이지 않는 경우, Altium 영업팀에 문의하여 자세한 내용을 확인하세요.

구버전 문서

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

콘텐츠