반응형
□ 기능소개
엑셀에 표시된 파일이름을 어셈블 모드로 불러오는 기능 입니다. IpfcComponentFeat.RedefineThroughUI 매소드를 사용 합니다. IpfcComponentFeat 함수는 구성요소 기능을 지정합니다. RedefineThroughUI 은Creo Parametric 대화상자를 호출하여 컴포넌트 구속을 재정의합니다.
하드디스크에 있는 라이브러리 파일은 IpfcBaseSession.RetrieveModel 매소드를 이용 합니다. 이것은 Session으로 모델을 불러옵니다. CCpfcModelDescriptor. CreateFromFileName(CreoFileName) 매소드를 이용하여, Creo 파일 이름을 정의 합니다. 여기서 CreoFileName 은 "파일이름.확장자" 형식 입니다. Path 또는 "*.prt.100" 버전 번호가 포함 되면 안됩니다.
다른 폴더에 있는 Creo 파일을 Open 하려면 Search_parth를 설정 합니다. 각각 다른 폴더에 있는 라이브러리를 불러오기 위해서는 반드시 Creo 환경 설정을 해야 합니다.
□ 코드
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
참고 자료 . . .
영업문의 : lionkk@idt21c.com
카카오 채널 : http://pf.kakao.com/_fItAxb
'VBA For Creo' 카테고리의 다른 글
VBA : Start Template Code - 두번째 (0) | 2024.01.15 |
---|---|
UI를 사용 하여 어셈블리로 부품을 불러오기 (0) | 2024.01.10 |
VBA에서 Session 개요 (0) | 2024.01.01 |
A program that displays the status of all features in a Creo Part file (0) | 2023.12.31 |
PTC VB 코드를 VBA로 변환 (0) | 2023.12.31 |