본문 바로가기
  • Welcome!
자동화 도구 ToolBOX/ToolBOX VBA

Creo Template 프로그램 #1

by ToolBOX01 2023. 9. 8.
반응형

□ 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 Model : Spur Gear 모델링

■ Gear는 회전 방향 및 속도 변경을 할 수 있습니다. 1. 모든 기어 쌍에서 큰 기어는 작은 기어보다 느리게 움직입니다. 기어는 회전 방향을 변경하는 경향이 있습니다. 2. 직각(90˚)으로 교차하는

tool-2020.tistory.com

Template 모델을 첨부 합니다. Feature 생성 순서를 확인 하면서 Template 모델을 만들어 보십시요

Spur Gear Download

involute_ext_gear_rev_01.prt.6
3.29MB
[Gear 모델의 Parameter]


□  Spur Gear Template VBA 프로그램 구성

엑셀 VBA 프로그램을 개발 하기 위해서는 Creo에서 VB 옵션(무료)을 선택하여 설치 해야 합니다. Window 에서 Creo가 제공하는 프로그램 (Creo와 VBA 연결) 위치를 지정 합니다. 엑셀에서 개발자 도구 환경을 설정 합니다 

▷ Creo VBA 설치 및 설정은 자세한 한것은 이곳을 참고 하세요

 

Setting up the VBA API 환경 설정

■ VBA API 필요성 반복적인 업무를 프로그램으로 처리하여, 좀더 생산적이고, 부가 가치가 높은 업무에 노력을 투입하십시요 Creo는 다양한 개발 도구를 제공 합니다. Pro/program, VB, VBA, JAVA, C## API를

tool-2020.tistory.com

 

 

Excel VBA development environment

1. 매크로 설정 File > Option > 보안센터 > 매크로 설정 2. 제한된 보기 설정 File > Option > 보안센터 > 제한된 보기 3. 개발 도구 매뉴 추가 ■ Creo VBA API 연결 테스트 첨부된 엑셀 파일을 실행 하여, CREO

tool-2020.tistory.com

 

주의) Creo VBA 프로그램 개발을 위해 반드시 VBA 엑셀에 대한 기초 교육을 수강 하십시요
         유튜브에서 매우 많은 기초 교육 자료가 있습니다. 전체를 모두 수강 할 필요는 없습니다. 20개정도만 공부하면
         됩니다, 엑셀 VBA는 일반적인 업무에 많이 사용 되며, 확장성도 좋습니다. 또한 바유로바로 프로그램 결과를 얻을수
         있습니다. ChatGTP를 사용하여, 코드를 만들어 달라고 할수 있습니다.

VBA 교육 유튜브 


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 초보자 교육 사이트도 있습니다 :블로그 구독 버튼을 꾹 눌러주세요!!! 오른쪽 상단에 있습니다  ^_^

 

CREO#1

초보자

cadtools.tistory.com

 

Parameter 및 Dimension 변경 방법은 아래 사이트를 참고 하십시요

 

Creo Template 프로그램 #2

□ Parameter와 Dimension 변경 하기 Gear 모델을 변경 하기 위해, 엑셀의 Cell 값으로 모델을 업데이트 하는 코드 입니다. Parameter의 경우 실수와 정수를 구분 해야 합니다. Dimension은 실수 이며, 음수와 "0

tool-2020.tistory.com

 


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