본문 바로가기
  • Welcome!
Creo korea 임시

압축 스프링 Template 프로그램 V 0.1

by ToolBOX01 2021. 1. 28.
반응형

Compression Spring

일반적으로 가장 널리 이용되는 스프링입니다. 압축스프링은 설계가 용이하고 작업이 비교적 단순하며 제작비가 저렴하고 효율이 높습니다.  형태로는 일반 원통형, 장구형, 번데기형 등의 다양한 형태가 용도에  맞게 쓰여 집니다. 압축코일 스프링은 통상 원형으로써 소재를 열간 또는 냉간으로 코일링 하며 스프링에 가해지는 하중(荷重)은 압축을 하기 위한 재료입니다. 하중의 종류에 따라 스프링 끝의 모양이 다르며, 크기에 따라 코일의 지름을 변화시켜 사용 됩니다. 압축 스프링 설계 계산식을 적용하여 Template 모델을 구성 하고, 자동으로 스프링 계산 sheet도 작성 가능합니다.  다음 버전에 적용 예정 입니다.


1. 압축 스프링 화면 UI

"새로 고침"을 클릭 하면 자동으로  프로그램에서 지정된 압축 스프링 모델을 OPEN 합니다. 치수 값을 입력 하고, "적용" 버튼을 클릭 하면 3D 모델이 변경 됩니다. Ver 0.1 에서는 저장 기능은 없습니다. 향후 파일 이름 변경, 저장 위치 변경,
저장 기능을 추가 예정 입니다.

화면 UI

 

2. 프로그램 코드 

1) CREO 연결 및 Template 파일을 open 합니다.
    압축 스프링 저장 위치는 "D:\IDT\TEMPLATE MODELS" 입니다. 오른쪽 방향의 압축 스프링 파일 이름은
    "COM_SPRING_RIGHT01.PRT" 입니다. 만일 Config.pro file에 Search_path를 설정 했으면, "session.ChangeDirectory"
    은 필요 없습니다.  Search_path 설정을 권장 합니다

 

Sub compress_spring01_open()
    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection
    Set conn = asynconn.Connect("", "", ".", 5)
    Dim session As pfcls.IpfcBaseSession
    Set session = conn.session
    
    session.ChangeDirectory ("D:\IDT\TEMPLATE MODELS")

    Dim ModelDescriptorCreate As New CCpfcModelDescriptor
    Dim ModelDescriptor As IpfcModelDescriptor
    Set ModelDescriptor = ModelDescriptorCreate.CreateFromFileName("COM_SPRING_RIGHT01.PRT")
    
    Dim window As IpfcWindow
    Set window = session.OpenFile(ModelDescriptor)
    window.Activate
    
End sub    

 

2) Dimension 및 매개 변수

 

Sub compress_spring01()
    
    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection
    Set conn = asynconn.Connect("", "", ".", 5)
    Dim session As pfcls.IpfcBaseSession
    Set session = conn.session
    
        
    Dim oModel As pfcls.IpfcModel
    Set oModel = session.CurrentModel
    Dim oSolid As IpfcSolid
    Set oSolid = oModel
    Dim oModelowner As IpfcModelItemOwner
    Set oModelowner = oSolid
    Dim oSpringDim As IpfcBaseDimension
    Dim oDimensionGroup As Variant
    oDimensionGroup = Array("COIL_DIA", "COIL_INDIA", "FREE_LENGTH")
    Dim oDimensionName As String
            
    Dim oDimensionValue As Double
    
    For i = 0 To 2
         oDimensionName = oDimensionGroup(i)
         Set oSpringDim = oModelowner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, oDimensionName)
         oSpringDim.DimValue = Cells(7 + i, "E")
    Next i
         
    Dim oCoilnumberValue As Integer
    oCoilnumberValue = Cells(11, "E")

    Dim oParameter As pfcls.IpfcBaseParameter
    Dim Powner As pfcls.IpfcParameterOwner
    Set Powner = oModel
    Dim oCoilnumberName As String
    oCoilnumberName = "COIL_NUM"
    Dim param As IpfcParameter
    Set param = Powner.GetParam(oCoilnumberName)
    Dim oParamItem As IpfcNamedModelItem
    Set oParamItem = param
    
    Dim ParamObject As New CMpfcModelItem

    Set paramValue = ParamObject.CreateIntParamValue(CDbl(oCoilnumberValue))
    Set oParameter = param
    oParameter.Value = paramValue

 

3) Regenerate   

프로그램으로 Regenerate 하려면 confog.pro 파일 regen_failure_handling의 값이 "resolve_mode"이어야 한다.
아래 코드는 PTC에서 제공, 적용하였지만 오류 발생 -> MAPKEY 방식으로 변경

    Dim oRegenInstructionscreate As New CCpfcRegenInstructions
    Dim oInstrs As pfcls.IpfcRegenInstructions
    Set oInstrs = oRegenInstructionscreate.Create(False, True, Nothing)
    
    
    
    oInstrs.AllowFixUI = True
    oInstrs.ForceRegen = True
    oInstrs.RefreshModelTree = True
    oInstrs.ResumeExcludedComponents = True
    oInstrs.UpdateAssemblyOnly = True
    
    Dim old_config_value As String
    session.GetConfigOption ("regen_failure_handling")
    Call session.SetConfigOption("regen_failure_handling", "resolve_mode")
    Call oSolid.Regenerate(oInstrs)
    Call session.SetConfigOption("regen_failure_handling", old_config_value)

    Dim oWindow As pfcls.IpfcWindow
    Set oWindow = session.CurrentWindow

 

3. 소스 코드


   1) Template 모델 불러오기

 

Sub compress_spring01_open()
    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection
    Set conn = asynconn.Connect("", "", ".", 5)
    Dim session As pfcls.IpfcBaseSession
    Set session = conn.session
    
    session.ChangeDirectory ("D:\IDT\TEMPLATE MODELS")

    Dim ModelDescriptorCreate As New CCpfcModelDescriptor
    Dim ModelDescriptor As IpfcModelDescriptor
    Set ModelDescriptor = ModelDescriptorCreate.CreateFromFileName("COM_SPRING_RIGHT01.PRT")
    
    Dim window As IpfcWindow
    Set window = session.OpenFile(ModelDescriptor)
    window.Activate
    
    'Disconnect with Creo
    conn.Disconnect (2)
    
    'Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set session = Nothing
    Set Model = Nothing
    
End Sub

 

  2) 치수 변경

 

Sub compress_spring01()
    
    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection
    Set conn = asynconn.Connect("", "", ".", 5)
    Dim session As pfcls.IpfcBaseSession
    Set session = conn.session
      
    Dim oModel As pfcls.IpfcModel
    Set oModel = session.CurrentModel
    Dim oSolid As IpfcSolid
    Set oSolid = oModel
    Dim oModelowner As IpfcModelItemOwner
    Set oModelowner = oSolid
    Dim oSpringDim As IpfcBaseDimension
    Dim oDimensionGroup As Variant
    oDimensionGroup = Array("COIL_DIA", "COIL_INDIA", "FREE_LENGTH")
    Dim oDimensionName As String
            
    Dim oDimensionValue As Double
    
    For i = 0 To 2
         oDimensionName = oDimensionGroup(i)
         Set oSpringDim = oModelowner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, oDimensionName)
         oSpringDim.DimValue = Cells(7 + i, "E")
    Next i
         
    Dim oCoilnumberValue As Integer
    oCoilnumberValue = Cells(11, "E")

    Dim oParameter As pfcls.IpfcBaseParameter
    Dim Powner As pfcls.IpfcParameterOwner
    Set Powner = oModel
    Dim oCoilnumberName As String
    oCoilnumberName = "COIL_NUM"
    Dim param As IpfcParameter
    Set param = Powner.GetParam(oCoilnumberName)
    Dim oParamItem As IpfcNamedModelItem
    Set oParamItem = param
    
    Dim ParamObject As New CMpfcModelItem

    Set paramValue = ParamObject.CreateIntParamValue(CDbl(oCoilnumberValue))
    Set oParameter = param
    oParameter.Value = paramValue
    
    session.RunMacro ("~ Activate `main_dlg_cur` `page_Model_control_btn` 0;\mapkey(continued) ~ Command `ProCmdRegenPart`;")
    session.RunMacro ("~ Activate `main_dlg_cur` `page_Model_control_btn` 0;\mapkey(continued) ~ Command `ProCmdRegenPart`;")
    
    Dim oWindow As pfcls.IpfcWindow
    Set oWindow = session.CurrentWindow

    Call oWindow.Refresh
    Call oWindow.Repaint
             
    'Disconnect with Creo
    conn.Disconnect (2)
    
    'Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set session = Nothing
    Set Model = Nothing

End Sub

 

4. 프로그램 동작 동영상

 

 

 

비즈니스 문의 : lionkk@idt21c.com


 

COM_SPRING_RIGHT01.prt.1
1.08MB

 

압축 스프링 Template 프로그램 V1.xlsm
0.07MB