□ 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
모델을 변경 하려면 치수 값을 입력한후, 모델 변경 버튼을 클릭 합니다
동영상
영업문의 : 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 |