본문 바로가기
  • 환영 합니다 ! Welcome!
VBA For Creo

VBA Fundamentals #1

by ToolBOX01 2020. 11. 30.
반응형

 VB API를 사용하여 Creo Parametric에 대한 연결을 설정하는 방법에 대해 설명합니다.

Overview

비동기(asynchronous) 모드는 VB API 응용 프로그램과 Creo Parametric에서 동시 작업을 수행 할 수있는 다중 프로세스 모드입니다. VB API는 MicrosoftExcel, Microsoft Word 또는Microsoft Access와 같은 Visual Basic 지원 제품에서Creo Parametric에 액세스하기 위한 지원을 제공합니다. COM 인터페이스는 Creo 파라메트릭을 비동기적으로 제어하고 PFC API를 사용하여 해당 속성에 액세스하기 위해 제공됩니다. Creo 파라메트릭에 포함된 OLE 객체의 데이터에도 액세스할 수 있습니다. OLE 개체에는 개체가 포함된 모델을 구동하는 데 사용할 수 있는 VB 코드가 포함될 수 있습니다.

VB API 응용 프로그램 (자체 main () 메서드 포함)은 Creo Parametric과 독립적으로 시작된 후 Creo Parametric 프로세스를 시작하거나 연결합니다. 비동기식 응용 프로그램이 Creo Parametric의 메시지를 처리하는 방법에 따라 응용 프로그램을 단순 또는 전체로 분류 할 수 있습니다. 

VB API의 제한 사항 - 비동기 COM 서버에는 다음과 같은 제한 사항이 있습니다.

•  Creo Parametric에 대한 API 호출은 단일 스레드에서만 수행해야 합니다. 다른 스레드는 비 Creo 파라메트릭 데이터를 처리하고 Creo파라메트릭스레드에서 볼 데이터를 설정할 수 있지만Creo Parametric과 통신할 수 있는 스레드는 하나뿐입니다.
•  한 번에 하나의Creo Parametric세션에 하나의 활성 연결만 만들 수 있습니다

> Simple Asynchronous Mode <

단순한 비동기식 응용 프로그램은 Creo Parametric의 요청을 처리하는 방법을 구현하지 않습니다. 따라서 VB API는 Creo Parametric에서 이벤트가 발생할 때 알림을 받을 리스너를 심을 수 없습니다. 따라서 Creo Parametric에서는 예를 들어 메뉴 버튼을 Creo Parametric에 추가 할 때 제공해야하는 메서드를 호출 할 수 없습니다.

리스너 (Listener) ?

 

Listener 란???

공부하면서 항상 궁금한게 공통적으로 사용되는 용어의 의미들이다. 그 의미들을 확실히 알아야 머리속에 ...

blog.naver.com

 

이러한 제한에도 불구하고 간단한 비동기 모드 응용 프로그램을 사용하여 Creo Parametric에서 프로세스를 자동화 할 수 있습니다. 응용 프로그램은 기존 Creo Parametric 세션을 시작하거나 연결할 수 있으며 대화식 또는 그래픽이 아닌 비대화 형 모드로 Creo Parametric에 액세스 할 수 있습니다. Creo Parametric이 그래픽과 함께 실행되는 경우 사용자가 사용할 수있는 대화식 프로세스입니다.

단순 비동기 모드에서 실행되도록 VB API 애플리케이션을 디자인 할 때 다음 사항에 유의하십시오.

1. Creo Parametric 프로세스와 응용 프로그램은 동시에 작업을 수행합니다.

2. 응용 프로그램의 리스너 메서드는 Creo Parametric에서 호출 할 수 없습니다.


1. Starting and Stopping Creo Parametric

다음 방법은 VB API 응용 프로그램을 사용할 때 Creo Parametric을 시작하고 중지하는 데 사용됩니다.

사용 하는 Methods

  • CCpfcAsyncConnection.Start()
  • IpfcAsyncConnection.End()

VB 응용 프로그램은 CCpfcAsyncConnection.Start () 메서드를 사용하여 Creo Parametric 프로세스를 생성하고
연결할 수 있습니다. 이 메서드가 비동기 연결 객체를 반환 한 후 VB API 응용 프로그램은 적절한 API를 사용하여
Creo Parametric 프로세스를 호출 할 수 있습니다. 대화 형 모드에서 Creo Parametric 세션이 실행 중일 때에도
액세스 할 수 있습니다.

비동기 응용 프로그램은 Creo Parametric이 종료 될 때 종료되지 않습니다. 이는 응용 프로그램에서 Creo Parametric 작업을 간헐적으로 수행해야하므로 세션 중에 Creo Parametric을 두 번 이상 시작하고 중지해야 할 때 유용합니다. 응용 프로그램은 언제든지 하나의 Creo Parametric 세션에만 연결하거나 시작할 수 있습니다. VB API 애플리케이션이 두 번째 세션을 생성하면 첫 번째 세션에 대한 연결이 끊어집니다.

응용 프로그램이 연결된 Creo Parametric 프로세스를 종료하려면 pfcAsyncConnection.AsyncConnection.End 메서드를 호출합니다.


Dim asynconn As New pfcls.CCpfcAsyncConnection
Dim conn As pfcls.IpfcAsyncConnection
Set conn = asynconn.Connect("", "", ".", 5)

위 코드는 지정된 디스플레이를 사용하여 호스트에서 실행 중인 기존 Creo Parametric 프로세스에 VBA 응용 프로그램을 연결합니다. 단순하고 완전한 비동기 모드에서 사용하기 위한 것입니다. 메서드가 적절한 특성을 가진 둘 이상의 Creo Parametric 세션을 찾는 경우 IpfcXToolkitAmbiguous 예외가 발생합니다. 특정 Creo Parametric 세션에 연결하거나 다시 연결하려면 IpfcAsyncConnection.ConnectById() 메서드를 사용합니다. VBA 응용 프로그램은 한 번에 하나의 Creo Parametric 세션에만 연결할 수 있습니다. 사용자 실수로 2개의 Creo Parametric 프로그램을 실행하지 마십시요

2. Setting Up a Noninteractive Session

비대화 형 및 비 그래픽 인 Creo Parametric 세션을 생성 할 수 있습니다. 비동기 모드에서 Creo Parametric 시작 또는 CCpfcAsyncConnection.Start ()에 대한 연결 호출에 다음 문자열을 포함합니다.

-g:no_graphics     -> Turn off the graphics display.
-i:rpc_input         ->  Creo Parametric에서 비동기 응용 프로그램의 입력 만 예상하도록합니다.

이 두 인수는 모두 필수이지만 순서는 중요하지 않습니다. 비대화 형 비 그래픽 세션에 대한 호출 구문은 다음과 같습니다.
**********************************************************************************

Dim ccAC as New CcpfcAsyncConnection
Dim aC as IpfcAsyncConnection
aC = ccAC.Start ("pro -g:no_graphics -i:rpc_input",<text_dir>)

여기서 pro는 Creo Parametric을 시작하는 명령입니다.

***********************************************************************************

■ VB 프로그램 예제

<creo_vbapi_loadpoint> / vbapi_examples에있는 pfcAsynchronousModeExamples.vb 파일의 샘플 코드는 VB API를 사용하여 Creo Parametric을 비동기 적으로 시작하고 세션을 검색하며 Creo Parametric에서 모델을 여는 방법을 보여줍니다.

이 예제는 Visual Basic for Applications로 작성된 매크로의 VB API 구문을 보여줍니다. 예를 들어 Microsoft Word 문서 또는 Microsoft Excel 스프레드 시트의 단추로 실행됩니다. 이 예제는 구문을 제외하고 이전 예제와 동일합니다.

VBA 프로그램 시작 과 끝의 코드

SUB VbaStart()

	Dim asynconn As New pfcls.CCpfcAsyncConnection
	Dim conn As pfcls.IpfcAsyncConnection
	Set conn = asynconn.Connect("", "", ".", 5)





        conn.Disconnect (2)
    
End Sub

VBA 프로그램은  Sub  ~ End Sub로 끝납니다.

VBA 프로그램을 CREO와 연결을 위해 "IpfcAsyncConnection" 함수를 사용합니다. 이 클래스는 Creo Parametric에 대한 비동기 연결을 나타냅니다. 변수 "asynconn" 를  "CCpfcAsyncConnection" 체로 정의 합니다. 변수 "conn" 를  "IpfcAsyncConnection" 객체로 정의 합니다.  "CCpfcAsyncConnection" 개체는 지정된 디스플레이를 사용하여 호스트에서 실행 중인 기존 Creo Parametric 프로세스에 응용 프로그램을 연결합니다. 단순하고 완전한 비동기 모드에서 사용하기 위한 것입니다.

Set conn = asynconn.Connect("", "", ".", 5)를 사용 하여 VBA  프로그램과 CREO를 연결 합니다. 

conn.Disconnect (2)를 사용 하여 VBA  프로그램과 CREO를 연결을 단절 합니다.  

연결된 CREO ID 정보 코드

Option Explicit
Sub VbaStart()

    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection
    Set conn = asynconn.CONNECT("", "", ".", 5)
    
    Dim oConnectionId As IpfcConnectionId
    Set oConnectionId = conn.GetConnectionId
    
    MsgBox oConnectionId.ExternalRep
    
    conn.Disconnect (2)
    
End Sub

 

[프로그램 실행 결과 ]

 

IpfcAsyncConnection 개체 
Function IsRunning () as Boolean

현재 능동적으로 응답하는 Creo Parametric 세션에 연결되어 있는지 확인합니다. "True"이면 연결되어 있습니다.

Option Explicit
Sub VbaStart()

    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection
    Set conn = asynconn.CONNECT("", "", ".", 5)
        
    MsgBox conn.IsRunning
    
    conn.Disconnect (2)
    
End Sub

[프로그램 실행 결과 ]

 

 

VBA Fundamentals #2

VBA는 계층적 구조의 개체를 사용하여 프로그램을 개발 합니다. Creo의 "부모 /자식" 관계로 이해 하십시요 Option Explicit Sub CreoExecution() Dim asynconn As New pfcls.CCpfcAsyncConnection Dim conn As pfcls.IpfcAsyncConnect

tool-2020.tistory.com