VI 스크립팅을 사용하여 VI에 객체 추가하기
- 업데이트 날짜:2025-08-27
- 3분 (읽기 시간)
필수: VI 스크립팅
VI 스크립팅을 사용하여 객체를 VI의 프런트패널이나 블록다이어그램에 프로그램적으로 추가할 수 있습니다. 해당되는 객체는 다음과 같습니다:
- 프런트패널 컨트롤, 사용자 정의된 사용자 컨트롤 포함
- 함수, 구조, subVI 호출을 포함한 블록다이어그램 노드
- 클러스터, 배열, 구조의 원소
사용 객체
이러한 VI 스크립팅 태스크에는 다음 객체가 필요합니다:
실행 단계
시작하기 전: 다음 과정을 각 단계별로 보여주는 예제를 확인하려면 labview\examples\Application Control\VI Scripting\Creating Objects 디렉토리에 있는 Adding Objects VI를 엽니다.
- 타겟 VI의 참조를 얻습니다.
- 생성하려는 새 객체의 정의 정보를 결정합니다.
- 소유자 참조―프런트패널 또는 블록다이어그램의 모든 객체에는 소유자가 있습니다. 가장 단순한 경우, 객체의 소유자는 VI의 프런트패널이거나 블록다이어그램입니다. 그러나, 객체가 루프, 케이스 구조, 시퀀스 구조 또는 클러스터와 같은 하위 구조 내에 위치하는 경우, 하위 구조가 객체를 소유합니다. 추가 예제 섹션은 객체를 루프, 배열, 클러스터에 추가하는 예제를 포함합니다.
예제 세부사항
예제의 목적은 타겟 VI의 블록다이어그램에서 새로운 [빼기] 함수를 생성하는 것입니다. 더 엄밀하게 따지면 타겟 VI의 블록다이어그램이 소유자이지만, 스크립팅 VI는 타겟 VI의 참조를 새로운 [빼기] 함수의 소유자로 사용합니다. 그러나 [새 VI 객체] 함수는 [빼기] 함수와 같은 객체가 블록다이어그램에만 나타날 수 있는 때를 인식하여 그에 따라 새 객체를 놓습니다.
- 클래스 이름―VI 스크립팅으로 생성할 수 있는 프런트패널 또는 블록다이어그램 객체는 모두 VI 서버 클래스의 멤버입니다. 생성하려는 객체의 클래스 이름을 결정하려면 VI의 조직을 참조하십시오. 클래스 지정자 상수를 사용하여 [새 VI 객체] 함수의 객체 클래스를 나타냅니다.
예제 세부사항
예제에서, [빼기] 함수는 함수 클래스의 멤버입니다.
- 스타일―모든 LabVIEW 고유 객체에는 스타일이 있어서 객체가 정확히 어떤 종류인지 추가로 정의합니다. 컨트롤:스타일 ID 프로퍼티 또는 노드:스타일 프로퍼티를 사용하여 생성하려는 객체의 스타일을 확인할 수 있습니다. 노트 SubVI나 사용자 정의 컨트롤을 타겟 VI에 추가하는 경우에는 스타일을 지정할 필요가 없습니다.
예제 세부사항
예제에서, 스크립팅 VI는 [빼기] 함수를 생성하며, 따라서 스타일이 빼기입니다. 노드의 스타일은 종종 노드의 클래스와 다릅니다.
- 위치―객체를 생성하면 모두 그 위치를 지정해야 합니다. 이 위치는 객체의 소유자가 어디서 비롯되는지와 관련이 있습니다.
예제 세부사항
예제에서, 스크립팅 VI는 [빼기] 함수의 위치를 (100, 200)으로 지정합니다.
- (옵션) subVI 또는 사용자 정의된 사용자 컨트롤의 경로―subVI 및 사용자 정의된 사용자 컨트롤의 경우 소스 파일의 경로를 [새 VI 객체] 함수의 경로 입력에 연결해야 합니다. subVI의 호출을 생성하는 예제는 추가 예제 섹션을 참조하십시오.
- (옵션) 새 객체의 크기―수동으로 크기를 조정할 수 있는 객체의 경우 모두 그 크기를 지정할 수 있습니다.
예제 세부사항
예제에서, 스크립팅 VI는 [빼기] 함수를 생성하며, 이 함수는 크기 조정이 불가능합니다.
- 소유자 참조―프런트패널 또는 블록다이어그램의 모든 객체에는 소유자가 있습니다. 가장 단순한 경우, 객체의 소유자는 VI의 프런트패널이거나 블록다이어그램입니다. 그러나, 객체가 루프, 케이스 구조, 시퀀스 구조 또는 클러스터와 같은 하위 구조 내에 위치하는 경우, 하위 구조가 객체를 소유합니다. 추가 예제 섹션은 객체를 루프, 배열, 클러스터에 추가하는 예제를 포함합니다.
- [새 VI 객체] 함수를 사용하여 단계 2의 정보를 함수에 연결함으로써 새 객체를 타겟 VI에 추가합니다.
- (옵션) 타겟 VI에서 새로 생성된 객체를 기존 객체에 프로그램적으로 연결합니다.
VI 스크립팅으로 객체를 연결하는 예제는 추가 예제 섹션을 참조하십시오.
- [참조 닫기] 함수를 사용하여 모든 열린 객체 참조를 사용 후 닫습니다.
유의점 및 권장사항
- 가능하면 복잡한 새 VI는 템플릿에서 생성 ― 한 번에 하나씩 각 구성요소 객체를 생성하여 프로그램식으로 새 VI를 생성할 수도 있지만, 템플릿에서 새 VI를 생성한 후 코드의 일부를 약간 수정하는 것이 훨씬 더 용이합니다. 추가 예제 섹션의 Creating New VI From Scratch VI는 간단한 타겟 VI의 경우에도 한 번에 한 객체씩 생성할 때 광범위한 스크립팅 코드가 필요하다는 것을 보여줍니다. 템플릿에서 새 VI를 생성하면 그런 복잡한 스크립팅 코드가 필요 없습니다.
- 가능하면 복잡한 컨트롤은 템플릿에서 생성―한 번에 한 원소씩 복잡한 컨트롤을 프로그램적으로 생성할 수도 있지만, 사용자 컨트롤을 직접 생성하고, 앞의 과정에 따라 컨트롤의 인스턴스를 추가한 후, 필요에 따라 컨트롤의 일부를 개별적으로 수정하는 것이 더 용이합니다. 사용자 컨트롤에 대한 참조가 있는 경우, VI:참조에서 생성 메소드를 사용하여 컨트롤의 복사본을 생성할 수도 있습니다.
- 열어 놓은 참조 모두 닫기―지나치게 많은 수의 참조가 열려 있으면 VI의 성능에 부정적인 영향을 미칩니다. 성능에 대한 세부사항은 VI 및 VI 객체 참조 닫기를 참조하십시오.
추가 예제
배열 컨트롤, 숫자형 인디케이터, SubVI 호출을 타겟 VI에 추가하는 예제는 labview\examples\Application Control\VI Scripting\Creating VIs 디렉토리에 있는 Creating New VI From Scratch VI를 참조하십시오.
[더하기] 함수를 While 루프와 같은 다른 객체의 안에 추가하는 예제는 labview\examples\Application Control\VI Scripting\Creating Objects 디렉토리에 있는 Drop Add Function Inside While Loop VI를 참조하십시오.
객체를 클러스터에 추가하는 예제는 labview\examples\Application Control\VI Scripting\Creating Objects 디렉토리에 있는 Drop Digital Numeric Inside Cluster VI를 참조하십시오.