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

Creo Template 프로그램 #2

by ToolBOX01 2023. 9. 12.
반응형

□ Parameter와 Dimension 변경 하기

Gear 모델을 변경 하기 위해, 엑셀의 Cell 값으로  모델을 업데이트 하는 코드 입니다. Parameter의 경우 실수와 정수를 구분 해야 합니다. Dimension은 실수 이며, 음수와 "0"을 입력 하면 안됩니다. Creo VBA의 코드와 모델의 Parameter 타입(정수, 실수, 스트링)이 다르면 프로그램은 오류가 납니다. 반드시 타입을 동일하게 맞추십시요

▷전체 코드

Option Explicit
Sub SPUR_IM()

On Error GoTo RunError

    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection
    Dim Session As pfcls.IpfcBaseSession
    Dim model As IpfcModel
    Dim solid As IpfcSolid
    Dim CMModelItem As New CMpfcModelItem
    
    Set conn = asynconn.Connect("", "", ".", 5)
    Set Session = conn.Session
    Set model = Session.CurrentModel
    
    Dim ParameterOwner As IpfcParameterOwner
    Dim BaseParameter As IpfcBaseParameter
    Dim Parameter As IpfcParameter
    Dim ParamValue As IpfcParamValue
        
    '// Module Parameter Modify
    Set ParameterOwner = model
    Set Parameter = ParameterOwner.GetParam("M")
    Set BaseParameter = Parameter
    Set ParamValue = CMModelItem.CreateDoubleParamValue(Cells(6, "D"))
    
    BaseParameter.Value = ParamValue

    '// Teeth Parameter Modify
    Set Parameter = ParameterOwner.GetParam("ZN")
    Set BaseParameter = Parameter
    Set ParamValue = CMModelItem.CreateIntParamValue(Cells(7, "D"))
    
    BaseParameter.Value = ParamValue
    
    '// "Thicknees of Teeth" Dimension Modify
    Dim ModelItemOwner As IpfcModelItemOwner
    Dim DimValue As IpfcBaseDimension
    
    Set ModelItemOwner = model
    Set DimValue = ModelItemOwner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, "THICK")

    DimValue.DimValue = Cells(8, "D")
    
    
    '// PCD Modify
    Cells(9, "D") = Cells(6, "D") * Cells(7, "D")
    
    '// SET Regenerate
    Dim RegenInstructions As New CCpfcRegenInstructions
    Dim oInstrs As IpfcRegenInstructions
    Set oInstrs = RegenInstructions.Create(False, False, Nothing)
    
    '// Regenerate 실행
    Set solid = model
    Call solid.Regenerate(oInstrs)
    
    '// Window Repaint
    Dim Window As pfcls.IpfcWindow
    Set Window = Session.CurrentWindow
     
    Window.Repaint
     
    MsgBox "모델을 변경 하였습니다.!", vbInformation, "www.idt21c.com"
    
    conn.Disconnect (2)
    
    '// Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set Session = Nothing
    Set model = Nothing
    
RunError:
    
        If Err.Number <> 0 Then
            MsgBox "Process Failed : Unknown error occurred." + Chr(13) + _
                    "Error No: " + CStr(Err.Number) + Chr(13) + _
                    "Error: " + Err.Description, vbCritical, "Error"

            If Not conn Is Nothing Then
                If conn.IsRunning Then
                    conn.Disconnect (2)
                End If
            End If
        End If
    
End Sub

 

5. Parameter 값 변경

엑셀의 Cell "D6"의 값을 Parameter "M"에 입력 하는 코드 입니다. 반드시 실수 타입을 선택 해야 합니다.
이유는 모델의  Parameter 타입이 실수 이기 때문 입니다

 Dim ParameterOwner As IpfcParameterOwner
 Dim BaseParameter As IpfcBaseParameter
 Dim Parameter As IpfcParameter
 Dim ParamValue As IpfcParamValue
        
 '// Module Parameter Modify
 Set ParameterOwner = model
 Set Parameter = ParameterOwner.GetParam("M")
 Set BaseParameter = Parameter
 Set ParamValue = CMModelItem.CreateDoubleParamValue(Cells(6, "D"))
    
 BaseParameter.Value = ParamValue

 

이 코드는 Creo Parametric의 VBA 환경에서 파라미터를 수정하는 코드 입니다. 이 코드에서 사용된 주요 객체 및 메서드에 대한 설명은 다음과 같습니다:

1). `IpfcParameterOwner`: 이 변수는 파라미터를 소유하는 객체를 나타냅니다. `model` 변수에 설정되어 모델 자체를 나타내고 있습니다.

2). `IpfcBaseParameter`: 이 변수는 기본 파라미터를 나타냅니다. 기본 파라미터는 일반적으로 파라미터의 기본 속성을 관리하는 데 사용됩니다.

3). `IpfcParameter`: 이 변수는 실제 파라미터 객체를 나타냅니다. `ParameterOwner.GetParam("M")`를 사용하여 "M"이라는 이름의 파라미터를 가져옵니다.

4). `IpfcParamValue`: 이 변수는 파라미터의 값을 나타내는 객체입니다. `CMModelItem.CreateDoubleParamValue(Cells(6, "D"))`를 사용하여 새로운 double 타입의 파라미터 값을 생성합니다.

5). `BaseParameter.Value`: 이 코드는 `BaseParameter` 객체의 값을 변경합니다. `ParamValue` 객체를 `BaseParameter`에 할당하여 파라미터 값을 설정합니다.

즉, 이 코드 스니펫은 모델에서 이름이 "M"인 파라미터의 값을 새로운 double 값으로 변경하는 예제입니다. Parameter 를 찾고, Parameter 의 값을 변경하려는 경우에 유용한 코드입니다.

6. Dimension 값 변경

모델의 치수 이름 "THICK"에 Cell "D8"의 값을 대입 하는 코드 입니다. "0" 또는 "음수"값을 입력 하면 안됩니다.

'// "Thicknees of Teeth" Dimension Modify
Dim ModelItemOwner As IpfcModelItemOwner
Dim DimValue As IpfcBaseDimension
    
Set ModelItemOwner = model
Set DimValue = ModelItemOwner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, "THICK")

DimValue.DimValue = Cells(8, "D")

이 코드는 기어 Teeth 두께(Dimension)를 수정하는 예제입니다. 코드에서 사용된 주요 객체 및 메서드에 대한 설명은 다음과 같습니다:

1). `IpfcModelItemOwner`: 이 변수는 모델 항목을 소유하는 객체를 나타냅니다. `model` 변수에 설정되어 모델 자체를 나타내고 있습니다.

2). `IpfcBaseDimension`: 이 변수는 기본 치수(Dimension)을 나타냅니다.

3). `ModelItemOwner.GetItemByName`: 이 메서드는 모델에서 특정 이름의 항목을 가져옵니다. 여기서는 "THICK"이라는 이름의 치수를 가져옵니다.

4). `DimValue.DimValue`: 이 코드는 `DimValue` 객체의 치수 값을 변경합니다. `Cells(8, "D")`를 사용하여 특정 셀의 값을 새로운 치수 값으로 설정합니다.

따라서 이 코드는 모델에서 이름이 "THICK"인 치수의 값을 새로운 값으로 변경하는 예제입니다. 치수를 찾고, 치수의 값을 변경하려는 경우에 유용한 코드입니다. 

7. Regenerate 하기

Dimension과 Parameter를 변경 하였으면 모델을 업데이트 해야 합니다

'// SET Regenerate
Dim RegenInstructions As New CCpfcRegenInstructions
Dim oInstrs As IpfcRegenInstructions
Set oInstrs = RegenInstructions.Create(False, False, Nothing)
    
'// Regenerate 실행
Set solid = model
Call solid.Regenerate(oInstrs)

이 코드는 Creo Parametric의 VBA 환경에서 모델을 재생성하는 과정을 나타냅니다. 코드에서 사용된 주요 객체 및 메서드에 대한 설명은 다음과 같습니다:

1). `CCpfcRegenInstructions`: 이 변수는 재생성 지침을 생성하기 위한 클래스입니다. 재생성 지침을 사용하여 모델을 특정 방식으로 재생성할 수 있습니다.

2). `IpfcRegenInstructions`: 이 변수는 재생성 지침을 나타냅니다. `RegenInstructions.Create` 메서드를 사용하여 재생성 지침을 생성합니다. `False` 매개변수는 표준 재생성을 수행하도록 설정하고, `Nothing` 매개변수는 기본 재생성 옵션을 사용하도록 설정합니다.

3). `solid`: 이 변수는 모델을 나타냅니다. `model` 변수에 설정되어 모델 자체를 나타내고 있습니다.

4). `solid.Regenerate`: 이 코드는 `solid` 모델 객체를 사용하여 모델을 재생성합니다. `oInstrs` 변수에 설정된 재생성 지침을 사용하여 재생성이 수행됩니다.

즉, 이 코드는 모델을 재생성하는 프로세스를 자동화하는 예제입니다. 모델을 변경한 후 모델을 재생성해야 하는 경우에 사용할 수 있습니다.

8. 모델을 Repaint 하여 변경 내용을 업데이트 하기

'// Window Repaint
Dim Window As pfcls.IpfcWindow
Set Window = Session.CurrentWindow
     
Window.Repaint
     
MsgBox "모델을 변경 하였습니다.!", vbInformation, "www.idt21c.com"

이 코드는 Creo Parametric VBA 환경에서 창(Window)을 다시 그리고 메시지 상자를 표시하는 간단한 예제입니다. 코드에서 사용된 주요 객체 및 메서드에 대한 설명은 다음과 같습니다:

1). `pfcls.IpfcWindow`: 이 변수는 Creo Parametric의 창을 나타냅니다. `Session.CurrentWindow`를 사용하여 현재 열려 있는 창을 가져옵니다.

2). `Window.Repaint`: 이 코드는 창을 다시 그리도록 요청합니다. 이것은 주로 창이 화면에 새로운 내용이 표시되었을 때 호출됩니다.

3). `MsgBox`: 이 함수는 메시지 상자를 표시합니다. 여기에서는 "모델을 변경하였습니다.!"라는 메시지를 표시하고 있습니다. `vbInformation`은 메시지 상자의 아이콘 유형을 지정하고 있으며, "www.idt21c.com"은 메시지 상자의 제목입니다.

이 코드는 모델을 변경한 후 사용자에게 변경 사항을 알리고 창을 다시 그리는 데 사용될 수 있습니다. 

Gear Template VBA Download

VBA 교육 V1.xlsm
0.23MB

 

모델을 변경 하려면 치수 값을 입력한후, 모델 변경 버튼을 클릭 합니다

 

동영상

 


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

 

'VBA For Creo' 카테고리의 다른 글

Model Information - IpfcModel  (0) 2023.10.09
Model Operations  (0) 2023.10.06
#1 IpfcAssembly  (0) 2023.08.20
IpfcModelItemOwner  (0) 2023.08.18
#1 IpfcModel  (0) 2023.08.18