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

어셈블리로 부품을 불러오기

by ToolBOX01 2024. 1. 10.
반응형

□ 기능소개

엑셀에 표시된 파일이름을 어셈블 모드로 불러오는 기능 입니다. IpfcComponentFeat.RedefineThroughUI 매소드를 사용 합니다.  IpfcComponentFeat 함수는 구성요소 기능을 지정합니다. RedefineThroughUI 은Creo Parametric 대화상자를 호출하여 컴포넌트 구속을 재정의합니다.

하드디스크에 있는 라이브러리 파일은 IpfcBaseSession.RetrieveModel 매소드를 이용 합니다. 이것은 Session으로 모델을 불러옵니다.  CCpfcModelDescriptor. CreateFromFileName(CreoFileName) 매소드를 이용하여, Creo 파일 이름을 정의 합니다. 여기서 CreoFileName 은 "파일이름.확장자" 형식 입니다.  Path 또는 "*.prt.100" 버전 번호가 포함 되면 안됩니다.

다른 폴더에 있는 Creo 파일을 Open 하려면 Search_parth를 설정 합니다. 각각 다른 폴더에 있는 라이브러리를 불러오기 위해서는 반드시 Creo 환경 설정을 해야 합니다.

 

구글 드라이버를 라이브러리 공유 하기

구글 드라이버 (클라우드)를 이용하여, 서로 물리적으로 떨어진 설계자와 파일 공유가 가능 합니다. 1. 구글 드라이버 데스크탑 버전을 다운로드 하고 설치 합니다. 구글 드라이버 문자 이름을

tool-2020.tistory.com

 

□ 코드

Cells (6,"E")에 있는 파일 이름을 조립 모드 불러 옵니다.

Option Explicit
Sub intoAssemble()
    On Error GoTo RunError
    
    Application.EnableEvents = False
    
    '// Check if "Program11" worksheet exists
    If Not WorksheetExists("Program11") Then
        MsgBox "Worksheet 'Program11' not found.", vbExclamation, "Error"
        Exit Sub
    End If
    
    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection
    
    '// Check Creo Connect
    Set conn = asynconn.Connect("", "", ".", 5)
    
    If conn Is Nothing Then
        MsgBox "An error occurred while starting a new Creo Parametric Session", vbInformation, "www.idt21c.com"
        Exit Sub
    End If

    Dim BaseSession As pfcls.IpfcBaseSession
    Dim model As pfcls.IpfcModel
    Dim solid As IpfcSolid
    Dim Assembly As IpfcAssembly
    Dim Asmcomp As IpfcComponentFeat
    Dim CreoFileName As String

    Set BaseSession = conn.Session
    Set model = BaseSession.CurrentModel
    
    '// Current Model Information
    Worksheets("Program11").Cells(2, "E") = BaseSession.GetCurrentDirectory
    Worksheets("Program11").Cells(3, "E") = model.filename
    
    '// Cells (6,"E") 파일 이름 불러오기
    Dim CreateModelDescriptor As New CCpfcModelDescriptor
    Dim ModelDescriptor As IpfcModelDescriptor
    
    CreoFileName = Cells(6, "E")
    Set ModelDescriptor = CreateModelDescriptor.CreateFromFileName(CreoFileName)
    Set solid = BaseSession.RetrieveModel(ModelDescriptor)  '// Session으로 모델 불러오기
   
    Set Assembly = model
    Set Asmcomp = Assembly.AssembleComponent(solid, Nothing)
    Asmcomp.RedefineThroughUI
    
    
    conn.Disconnect (2)
    
    ' Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set BaseSession = Nothing
    Set model = Nothing
    
Exit Sub

RunError:
    If Err.Number <> 0 Then
        MsgBox "Process Failed: An error occurred." & vbCrLf & _
               "Error No: " & CStr(Err.Number) & vbCrLf & _
               "Error Description: " & Err.Description & vbCrLf & _
               "Error Source: " & Err.Source, vbCritical, "Error"
        If Not conn Is Nothing Then
            If conn.IsRunning Then
                conn.Disconnect (2)
            End If
        End If
    End If
End Sub

Function WorksheetExists(shtName As String) As Boolean
    On Error Resume Next
    WorksheetExists = Not Worksheets(shtName) Is Nothing
    On Error GoTo 0
End Function

 

참고 자료 . . .

 

라이브러리 관리 프로그램 #1

라이브러리 특성 값을 사용 하여, 어셈블 파일에 적용할 파일을 선택 할 수 있습니다. 관리자는 동일한 Class의 라이브러리 파일들을 특정 폴더에 저장 합니다 >> 관리자 모드 1. List - Creo에서 라이

tool-2020.tistory.com

 


영업문의 : lionkk@idt21c.com
카카오 채널 : http://pf.kakao.com/_fItAxb