본문 바로가기
  • Welcome!
VBA, VB.NET For Creo

개발 요청] 이미지 생성 프로그램 #1

by ToolBOX01 2024. 11. 3.
반응형

□ 요청 사항

  • 어셈블 파일을 구성하는 Component 파일들을 List 만들기
  • Component의 유형 및 ID를 순차적으로 표시
  • 맨 처음 Component를 제외한, 모든 Component를 Suppress 하고, Image 저장
  • 순차적으로 Component들을 Resume 하고, Image 저장

 

□  기능 개발

  1. 어셈블 파일을 구성하는 모든 Component 파일 이름을 LIST로 만들기, 중복 파일 이름 허용
  2. Component 파일 유형 및 ID들 LIST로 만들기
  3. Component Suppress 기능
  4. Component Resume 기능
  5. Image 변환 기능

 

□  프로그램 UI


1단계 :  어셈블을 구성 하는 부품들 표시

번호, File 이름,  File 유형 및 Feature ID 표시 합니다. File 이름은 PTC에서 제동 하는 코드를 사용 합니다.

▷ 활성된 어셈블 모델 이름, 메세지로 표시하는 코드

Option Explicit
Public asynconn As New pfcls.CCpfcAsyncConnection
Public conn As pfcls.IpfcAsyncConnection
Public BaseSession As pfcls.IpfcBaseSession
Public model As pfcls.IpfcModel
Public Sub CreoConnt01()
     
     '// connect creo model
     Set conn = asynconn.Connect(Null, Null, Null, Null)
     Set BaseSession = conn.Session
     Set model = BaseSession.CurrentModel
     
    '// creo model connection check
     If model Is Nothing Then
        MsgBox "There are No Active Creo Models", vbInformation, "korealionkk@gmail.com"
        Exit Sub
     End If
               
End Sub

변수 "model"에 현재 활성화된 "어셈블 객체"가 입력 됩니다.

CreoVBAStart.bas
0.00MB

Public Sub CreoConnt01()은 여러 프로그램에서 호출하여 사용 하는 프로그램 입니니다. 이것은 모듈에 저장 합니다.

엑셀 sheet 마다 프로그램을 만듭니다. 공통 모듈은 재사용 합니다.

2단계 :  어셈블 모델 이름을 메세지로 표시

Option Explicit
Public useAsm As IpfcAssembly
Public pathArray As New Collection
Sub Suppress01()
    On Error GoTo RunError
    Application.EnableEvents = False

    '// Module Name : CreoVBAStart
    Call CreoVBAStart.CreoConnt01
    MsgBox model.fileName, vbInformation, "korealionkk@gmail.com"
    
    
    conn.Disconnect (2)
    
    
    '// Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set BaseSession = Nothing
    Set model = Nothing
    
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

 

3단계 :  어셈블 모델의 모든 부품 이름 가지고 오기

PTC가 제공 하는 프로그램을 활용 합니다.

 

 

Part List 프로그램

Creo Part List 프로그램 자동으로 번호, 이미지, 파일 이름, 매개 변수를 표시 하는 프로그램 입니다. 반드시 어셈블 모델을 open 한후에 실행 해야 합니다. Creo와 VBA 연결 Sub Part_List() Dim asynconn As New p

tool-2020.tistory.com

□  IpfcComponentPath

이 클래스는 어셈블리 내의 구성 요소를 식별하고 찾습니다.

Property ComponentIds as Iintseq

이 구성 요소를 포함하는 다양한 하위 어셈블리를 통해 루트 어셈블리에서 구성 요소까지의 경로입니다. 이 시퀀스의 각 요소는 부모 어셈블리의 구성 요소 기능 식별자입니다.

▷ 예제 코드

 Dim eachPath As IpfcComponentPath
 Dim ComponetIDIintseq As Iintseq
 
 Set ComponetIDIintseq = eachPath.ComponentIds
 Worksheets("Suppress").Cells(iCnt + 6, "D") = ComponetIDIintseq.item(ComponetIDIintseq.Count - 1)

 

▷  Download File

Sheet8.cls
0.01MB


simplified representation

the VB API supports simplified representation of assemblies only, not parts.
단순화 표현은 IpfcSimRep 클래스로 식별됩니다. 이 클래스는 IpfcModelItem의 자식이므로 IpfcModelItems를 처리하는 메서드를 사용하여 단순화된 표현을 수집, 검사 및 수정할 수 있습니다.

IpfcModel > IpfcModelItemOwner > IpfcModelItems > IpfcSimRep

 

 

사용한 Feature 유형의 수량을 자동 계산 하기

□ Creo 모델에 사용한 Feature의 수량을 표시 하는 프로그램 입니다.Creo는 매우 다양한 Feature 명령을 제공 합니다. 그러나 대부분의 Feature 타입은 제한된 종류로 사용 됩니다Creo의  Feature Type과 상

tool-2020.tistory.com

 

 IpfcSimpRepInstructions

IpfcSimpRepInstructions 인터페이스는 단순화 표현(Simplified Representation)을 정의하는 데 필요한 데이터를 포함하는 클래스의 기반 클래스입니다. 이 인터페이스를 상속하는 클래스는 단순화 표현을 생성하거나 가져오는 등의 작업을 수행할 수 있습니다.

직접적인 하위 클래스

  1. IpfcRetrieveExistingSimpRepInstructions: 기존의 단순화 표현을 가져오는 데 사용되는 클래스입니다.
  2. IpfcCreateNewSimpRepInstructions: 새로운 단순화 표현을 생성하는 데 사용되는 클래스입니다.

 

Function CCpfcCreateNewSimpRepInstructions.Create (NewSimpName as String) as IpfcCreateNewSimpRepInstructions

위 기능은 새로운 단순화  표현을 만드는 데 사용되는 새 객체를 만듭니다.

▷ 새로운 단순화 표현 이름 만들기

Dim SimpRepInstructions AS IpfcSimpRepInstructions
Dim CreateNewSimpRepInstructions AS New.CCpfcCreateNewSimpRepInstructions
Dim NewSimpRepInstructions AS IpfcCreateNewSimpRepInstructions

Set NewSimpRepInstructions = CreateNewSimpRepInstructions.Create("IDT_DEMO")
Set SimpRepInstructions = NewSimpRepInstructions
SimpRepInstructions.DefaultAction = EpfcSIMPREP_INCLUDE

korealionkk@gmail.com