□ Template 프로그램 필요성
대한민국 출생률은 0.7입니다. 얼마나 사회가 불안 하면 0.7일 까요. 베를린 장벽이 무너졌을 때의 일이 지금 한국에서 벌어지고 있습니다. 2019-0.92/ 2020-0.84/ 2021-0.81/ 2022-0.78/2023-0.7 입니다. 통합된 독일도 1.3정도 복원 하는데 18년 정도의 시간이 필요 했습니다. 우리는 제조 강국 이며, 점점 일할수 있는 사람이 줄어들고 있고, 자동화를 통해 인구가 늘어 날때까지 버터야 합니다. 자동화를 통해 짧은 시간에 현재의 일보다 더많은 일을 해야 합니다. Template 모델 및 프로그램은 더 많은 일을 짧은 시간에 할수 있도록 도움을 줄것 입니다.
□ Spur Gear Template 모델 구성
Spur Gear 템플릿 모델은 모듈 과 잇수로 Spur Gear 모델을 변경 할수 있습니다. 모듈 과 잇수는 Parameter로 정의 할수 있고, 모델의 관계식을 통해 Parameter 값을 변경 하면, 자동으로 Spur Gear 형상이 업데이트 됩니다. 프로그램 개발을 위해 변수 항목을 정의 합니다
항목 | 세부 내용 | 비고 |
temp_spur_gear.prt | 템플릿 파일 이름 | |
MODULE (기호 :M) | 모듈 | 매개변수 타입 - 실수 |
NUM OF THEETH (기호 :ZN) | 잇수 | 매개변수 타입 - 정수 |
Gear thickness (기호 :THICK) | Gear 두께 | 모델의 치수 이름 |
Creo Template 프로그램은 "모델" + "VBA 프로그램"으로 구성 되어 있으며, 모델을 잘만들어야 "VBA 프로그램"을 동작 할수 있습니다. 모델을 만드는 방법은 아래 사이트를 참고 하여 생성 합니다.
▷ Template 모델 생성 방법. . .
Template 모델을 첨부 합니다. Feature 생성 순서를 확인 하면서 Template 모델을 만들어 보십시요
▷ Spur Gear Download
□ Spur Gear Template VBA 프로그램 구성
엑셀 VBA 프로그램을 개발 하기 위해서는 Creo에서 VB 옵션(무료)을 선택하여 설치 해야 합니다. Window 에서 Creo가 제공하는 프로그램 (Creo와 VBA 연결) 위치를 지정 합니다. 엑셀에서 개발자 도구 환경을 설정 합니다
▷ Creo VBA 설치 및 설정은 자세한 한것은 이곳을 참고 하세요
주의) Creo VBA 프로그램 개발을 위해 반드시 VBA 엑셀에 대한 기초 교육을 수강 하십시요
유튜브에서 매우 많은 기초 교육 자료가 있습니다. 전체를 모두 수강 할 필요는 없습니다. 20개정도만 공부하면
됩니다, 엑셀 VBA는 일반적인 업무에 많이 사용 되며, 확장성도 좋습니다. 또한 바유로바로 프로그램 결과를 얻을수
있습니다. ChatGTP를 사용하여, 코드를 만들어 달라고 할수 있습니다.
Creo VBA 메뉴얼은 HTML 현태로 제공 됩니니다. 일반적으로 "C:\PTC\Creo 9.0.4.0\Common Files\vbapi\vbapidoc\index.html" 파일 입니다. 메뉴는 "APWizard"와"Guide"로 구성되어 있습니다. "Guide" 내용은 함수에 대한 기능을 설명 합니다. "APWizard" 사용 방법 (문법)을 설명 합니다. 영문 번역과 chatgtp를 사용하면 코드 작성을 쉽게 할수 있습니다.
◎ 화면 구성 하기
Module, Number of teeth는 "정수" 형 Parameter 입니다. thickness는 치수의 이름 입니다. P.C.D는 간략한 계산식 입니다.
◎ 코드
1.전체 코드
Option Explicit
Sub SPUR_EX()
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
Set conn = asynconn.Connect("", "", ".", 5)
Set Session = conn.Session
Set model = Session.CurrentModel
Cells(4, "B") = model.Filename
Dim ParameterOwner As IpfcParameterOwner
Dim BaseParameter As IpfcBaseParameter
Dim Parameter As IpfcParameter
Dim ParamValue As IpfcParamValue
'// Module Parameter
Set ParameterOwner = model
Set Parameter = ParameterOwner.GetParam("M")
Set BaseParameter = Parameter
Set ParamValue = BaseParameter.Value
Cells(6, "D") = ParamValue.DoubleValue
'// Teeth Parameter
Set Parameter = ParameterOwner.GetParam("ZN")
Set BaseParameter = Parameter
Set ParamValue = BaseParameter.Value
Cells(7, "D") = ParamValue.IntValue
'// "Thicknees of Teeth" Dimension Symbol
Dim ModelItemOwner As IpfcModelItemOwner
Dim DimValue As IpfcBaseDimension
Set ModelItemOwner = model
Set DimValue = ModelItemOwner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, "THICK")
Cells(8, "D") = DimValue.DimValue
'// PCD
Cells(9, "D") = Cells(6, "D") * Cells(7, "D")
MsgBox "Spur Gear 모델을 연결 하였습니다.!", 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
2. Creo와 VBA 연결
Dim asynconn As New pfcls.CCpfcAsyncConnection
Dim conn As pfcls.IpfcAsyncConnection
Dim Session As pfcls.IpfcBaseSession
Dim model As IpfcModel
Set conn = asynconn.Connect("", "", ".", 5)
Set Session = conn.Session
Set model = Session.CurrentModel
Cells(4, "B") = model.Filename
PTC Creo 세션에 연결을 설정하고 현재 모델을 검색한 다음 Excel 워크시트의 셀 값을 모델의 파일 이름을 표시 합니다.
매우 기본적으로 코드 이며, 매번 사용 하는 코드입니다. 이 코드가 하는 일을 살펴보겠습니다.
Dim asynconn As New pfcls.CCpfcAsyncConnection
Dim conn As pfcls.IpfcAsyncConnection
Dim Session As pfcls.IpfcBaseSession
Dim model As IpfcModel
→ 위 코드는 변수들을 선언합니다.
변수 이름 asynconn`: `pfcls.CCpfcAsyncConnection`의 인스턴스입니다.
변수 이름 conn`: 비동기 연결에 대한 인터페이스 (`pfcls.IpfcAsyncConnection`)입니다.
변수 이름 Session`: PTC Creo 세션에 대한 인터페이스 (`pfcls.IpfcBaseSession`)입니다.
변수 이름 model`: 현재 PTC Creo 모델에 대한 인터페이스 (`IpfcModel`)입니다.
Set conn = asynconn.Connect("", "", ".", 5)
→ asynconn.Connect` 메서드를 사용하여 PTC Creo와 연결을 설정하고 사용자 이름과 암호에 빈
문자열을 전달하며 연결 매개변수로 `"."`를 사용하고 타임아웃 값을 `5`로 설정합니다.
연결 결과를 `conn` 변수에 저장합니다.
Set Session = conn.Session
→ 연결에 연결된 세션을 `conn.Session`을 사용하여 검색하고 `Session` 변수에 저장합니다.
Set model = Session.CurrentModel
→ Session.CurrentModel`을 사용하여 PTC Creo 세션의 현재 모델을 가져온 다음 `model`
변수에 저장합니다.
Cells(4, "B") = model.Filename
→ 마지막으로 Excel 워크시트의 셀 `B4`의 값을 PTC Creo 모델의 파일 이름으로 설정합니다.
3. Parameter 값 체크
모델에서 사전 정의된 Parameter의 값을 엑셀 파일로 가져 옵니다, Parameter 이름 및 Type은 코딩에서 정의 합니다. 아래 코드는 모델의 "M", "ZN" Parameter의 값을 엑셀에 표시합니다
Dim ParameterOwner As IpfcParameterOwner
Dim BaseParameter As IpfcBaseParameter
Dim Parameter As IpfcParameter
Dim ParamValue As IpfcParamValue
Dim CMModelItem As New CMpfcModelItem
'// Module Parameter
Set ParameterOwner = model
Set Parameter = ParameterOwner.GetParam("M")
Set BaseParameter = Parameter
Set ParamValue = BaseParameter.Value
Cells(6, "D") = ParamValue.DoubleValue
'// Teeth Parameter
Set Parameter = ParameterOwner.GetParam("ZN")
Set BaseParameter = Parameter
Set ParamValue = BaseParameter.Value
Cells(7, "D") = ParamValue.IntValue
`IpfcParameterOwner` 및 `IpfcBaseParameter`: 이러한 인터페이스는 파라미터를 관리하고 접근하기 위한 Creo Parametric API의 일부입니다. `IpfcParameterOwner`는 파라미터를 소유하는 객체를 나타내며, `IpfcBaseParameter`는 파라미터 자체를 나타냅니다.
1). `Set ParameterOwner = model`: `model`은 Creo 모델을 나타내며, 이 코드에서 `IpfcParameterOwner`로 캐스팅됩니다.
캐스팅 이란 ?
캐스팅(Casting)은 프로그래밍에서 한 데이터 유형을 다른 데이터 유형으로 변환하는 과정을 나타냅니다. 이는 변수 또는 개체의 데이터 유형을 변경하거나 다른 유형의 변수 또는 개체로 사용하기 위해 필요한 작업입니다.
일반적으로 두 가지 유형의 캐스팅이 있습니다.
암시적 캐스팅 (Implicit Casting) 또는 자동 변환: 데이터 유형 간의 변환을 언어나 컴파일러가 자동으로 처리하는 경우입니다. 이는 대개 작은 데이터 유형에서 큰 데이터 유형으로 값이 복사될 때 발생합니다. 예를 들어, 정수를 부동 소수점으로 자동 변환할 때 암시적 캐스팅이 발생합니다.
명시적 캐스팅 (Explicit Casting) 또는 강제 변환: 개발자가 명시적으로 데이터 유형 변환을 지정하는 경우입니다. 이는 데이터 유형 간에 더 큰 제어가 필요할 때 사용됩니다. 예를 들어, 변수를 명시적으로 정수에서 부동 소수점으로 변환하려면 캐스팅 연산자를 사용하여 명시적으로 캐스팅합니다.
캐스팅은 데이터 유형의 호환성과 데이터 손실을 고려해야 하는 중요한 개념입니다. 잘못된 캐스팅은 데이터 손실이나 예기치 않은 결과를 초래할 수 있으므로 주의해서 사용해야 합니다. 다양한 프로그래밍 언어에서는 캐스팅을 위한 다양한 문법 및 연산자를 제공합니다
2). `ParameterOwner.GetParam("M")`: "M"이라는 이름의 파라미터를 가져옵니다. 이 파라미터의 값은 모듈 파라미터로 사용됩니다.
3). `Set BaseParameter = Parameter`: 파라미터를 `IpfcBaseParameter`로 캐스팅합니다.
4). `Set ParamValue = BaseParameter.Value`: `IpfcParamValue`로 캐스팅된 파라미터의 값을 가져옵니다.
5). Cells(6, "D") = ParamValue.IntValue `: 파라미터의 실수 값(`DoubleValue`)을 "D6" 셀에 저장 됩니다.
4. Dimension 값 체크
Dim ModelItemOwner As IpfcModelItemOwner
Dim DimValue As IpfcBaseDimension
'// "Thicknees of Teeth" Dimension Symbol
Set ModelItemOwner = model
Set DimValue = ModelItemOwner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, "THICK")
Cells(8, "D") = DimValue.DimValue
'// PCD
Cells(9, "D") = Cells(6, "D") * Cells(7, "D")
Creo 모델의 치수 값을 검색하고 Excel 워크시트의 셀에 값을 기록하며, 특정 치수를 "THICK"이라는 이름으로 찾아서 사용합니다.
여기서 코드의 주요 기능을 설명하겠습니다:
1). `Dim ModelItemOwner As IpfcModelItemOwner`: `ModelItemOwner`라는 변수를 선언합니다. 이 변수는 Creo 모델의 아이템을 관리하는 데 사용됩니다.
관리 가능한 아이템 . . .
EpfcITEM_FEATURE - Feature
EpfcITEM_SURFACE - Surface
EpfcITEM_EDGE - Edge
EpfcITEM_COORD_SYS - Coordinate system
EpfcITEM_AXIS - Axis
EpfcITEM_POINT - Point
EpfcITEM_QUILT - Quilt
EpfcITEM_CURVE - Curve
EpfcITEM_LAYER - Layer
EpfcITEM_NOTE - A solid model note
EpfcITEM_DIMENSION - Dimension
EpfcITEM_REF_DIMENSION - Reference dimension
EpfcITEM_SIMPREP - Simplified representation
EpfcITEM_SOLID_GEOMETRY - A solid geometry layer item.
EpfcITEM_TABLE - A drawing table
EpfcITEM_DTL_ENTITY - A detail entity
EpfcITEM_DTL_NOTE - A detail note
EpfcITEM_DTL_GROUP - A detail draft group
EpfcITEM_DTL_SYM_DEFINITION - A symbol definition
EpfcITEM_DTL_SYM_INSTANCE - A symbol instance
EpfcITEM_DTL_OLE_OBJECT - A drawing-embedded OLE object
EpfcITEM_EXPLODED_STATE - An exploded state
EpfcITEM_EDGE_START
EpfcITEM_LOG_EDGE
EpfcITEM_EDGE_END
EpfcITEM_XSEC - Cross Section
EpfcITEM_LAYER_STATE - Layer state
EpfcITEM_COMBINED_STATE - Combined state
EpfcITEM_STYLE_STATE - Style state
EpfcITEM_RP_MATERIAL - Material Item
EpfcITEM_VIEW - View
EpfcITEM_SURF_FIN
EpfcITEM_ANNOT_PLANE
EpfcITEM_ANNOTATION_ELEM
EpfcITEM_SET_DATUM_TAG
EpfcITEM_GTOL
EpfcITEM_BODY - Solid body
EpfcITEM_CRV_START - Datum Curve Start
EpfcITEM_CRV_END - Datum Curve End
2). `Dim DimValue As IpfcBaseDimension`: `DimValue`라는 변수를 선언합니다. 이 변수는 Creo 모델에서 가져온 치수 값을 저장하는 데 사용됩니다.
3). `Set ModelItemOwner = model`: `ModelItemOwner` 변수를 현재 Creo 모델(`model`)에 연결합니다.
4. `Set DimValue = ModelItemOwner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, "THICK")`:
"THICK"이라는 이름의 치수를 Creo 모델에서 검색하고, 이 치수 값을 `DimValue` 변수에 할당합니다.
5. `Cells(8, "D") = DimValue.DimValue`: Creo 모델에서 검색한 "THICK" 치수의 값을 Excel 워크시트의 D8 셀에 기록합니다.
6. `Cells(9, "D") = Cells(6, "D") * Cells(7, "D")`: Excel 워크시트의 D6 셀과 D7 셀의 값을 곱하여 그 결과를 D9 셀에 저장합니다.
이 코드는 Creo 모델과 Excel 간의 데이터 전달 및 처리를 자동화하는 데 사용될 수 있으며, 특히 Creo 모델에서 특정 치수를 검색하고 해당 값을 Excel에 전달하는 데 유용합니다.
블로그 구독 버튼을 꾹 눌러주세요!!! 오른쪽 상단에 있습니다
Creo 초보자 교육 사이트도 있습니다 :블로그 구독 버튼을 꾹 눌러주세요!!! 오른쪽 상단에 있습니다 ^_^
Parameter 및 Dimension 변경 방법은 아래 사이트를 참고 하십시요
영업문의 : lionkk@idt21c.com
카카오 채널 : http://pf.kakao.com/_fItAx
'자동화 도구 ToolBOX > ToolBOX VBA' 카테고리의 다른 글
ToolBOX VBA Update for "ASAD SIDDIQUI" (0) | 2022.12.23 |
---|---|
ToolBOX VBA Part List 프로그램 업데이트 (0) | 2022.11.08 |
ToolBox VBA 1.1 - 백업 프로그램 업데이트 (0) | 2022.11.07 |
ToolBOX VBA 1.1 (2) | 2022.10.28 |
ToolBOX 베타 0.1.3 (0) | 2022.10.21 |