본문 바로가기
  • Welcome!
VBA For Creo

함께 VBA 만들기 #2 - Creo 3D 모델 정보 보기

by ToolBOX01 2023. 2. 2.
반응형

■ Template 코드 

엑셀 VBA를 시작 할때 사용 하는 코드 입니다. 아래 코드를 기반으로 코딩을 합니다

Option Explicit
Public asynconn As New pfcls.CCpfcAsyncConnection
Public conn As pfcls.IpfcAsyncConnection
Public oSession As pfcls.IpfcBaseSession
Public oModel As IpfcModel
Public oSolid As IpfcSolid

Public Sub Creo_Connect()

    Application.EnableEvents = False
    
    '//////////////////////////////////////////////////////////////////////////////////////////////////////
    '// Creo Connect Check
    '//////////////////////////////////////////////////////////////////////////////////////////////////////
    On Error Resume Next
    Set conn = asynconn.Connect("", "", ".", 5)
    
        If conn Is Nothing Then
        
           MsgBox "Error occurred while starting new Creo Parametric Session!", vbInformation, "www.idt21c.com"
           Exit Sub
           
        End If
     '//////////////////////////////////////////////////////////////////////////////////////////////////////
    
    Set oSession = conn.Session


End Sub

 

▶ 전역변수 설정 하기

아래 변수는 전역 변수로 사용 합니다.  SUB () 마다 사용 합니다.

Public asynconn As New pfcls.CCpfcAsyncConnection
Public conn As pfcls.IpfcAsyncConnection
Public oSession As pfcls.IpfcBaseSession
Public oModel As IpfcModel
Public oSolid As IpfcSolid

▶ 전역변수 설정 하기

 현재 실행된 Creo와 Session에 연결 합니다. 2개의 Creo 프로그램 실행 되면 오류가 발생 합니다. 
 VBA 인포메이션 창에 " Error occurred while starting new Creo Parametric Session!" 이 표시됩니다. 

     Set conn = asynconn.Connect("", "", ".", 5)
    
     If conn Is Nothing Then
        
         MsgBox "Error occurred while starting new Creo Parametric Session!", vbInformation, "www.idt21c.com"
         Exit Sub
           
     End If

예기치 않은 스크립트 오류가 발생 할 수 있습니다. 불필요한 서비스를 제거 합니다.

 

 

Run-time error 2147417851 (80010105)

증상 : VBA 메세지 창에 "런타임 오류 2147417851(80010105), 자동화 오류입니다. 서버에서 예외가 발생했습니다." 메세지를 지울 수 있는 유일한 방법은 PC를 다시 시작하는 것입니다. 하지만 몇 번 잘

tool-2020.tistory.com

 


■ 새로고침 기능 코딩

- 현재 작업 공간을 표시 합니다
- 파일 이름을 표시 합니다
- 파일 타입을 표시 합니다

 

Sub New_button()

    Call Creo_Connect
    
    '// Current WorkFolder Name
    Cells(4, "E") = oSession.GetCurrentDirectory
    
    '// Current Model Name
    Set oModel = oSession.CurrentModel
    
    If oModel Is Nothing Then
    
        MsgBox "No models are active!", vbInformation, "www.idt21c.com"

       Else
        
        Cells(5, "E") = oModel.Filename
        Cells(6, "E") = oModel.Type

    End If

End Sub

 

Call Creo_Connect
- 전역 SUB()를 실행 합니다.  Creo Session과 엑셀 vba를 연결 합니다.

Cells(4, "E") = oSession.GetCurrentDirectory|
- 엑셀 Cells(4, "E") 이곳에  현재 연결된 Creo Session의 작업 공간 이름을 표시 합니다.

Set oModel = oSession.CurrentModel
- 현재 활성화된 모델 객체를 변수 "oModel"에 가져 옵니다.

Cells(5, "E") = oModel.Filename
Cells(6, "E") = oModel.Type
- 현재 활성화된 모델의 이름을 표시 합니다
- 현재 활성화된 3D 모델 타입을 표시 합니다

 

Creo 화면 엑셀 VBA 실행 - NEW 버튼 클릭

 

프로그램 다운로드

- new 버튼을 클릭하면 모델 이름 및 타입 등을 표시 합니다

ToolBOX VBA 01.xlsm
0.03MB