Compression Spring
일반적으로 가장 널리 이용되는 스프링입니다. 압축스프링은 설계가 용이하고 작업이 비교적 단순하며 제작비가 저렴하고 효율이 높습니다. 형태로는 일반 원통형, 장구형, 번데기형 등의 다양한 형태가 용도에 맞게 쓰여 집니다. 압축코일 스프링은 통상 원형으로써 소재를 열간 또는 냉간으로 코일링 하며 스프링에 가해지는 하중(荷重)은 압축을 하기 위한 재료입니다. 하중의 종류에 따라 스프링 끝의 모양이 다르며, 크기에 따라 코일의 지름을 변화시켜 사용 됩니다. 압축 스프링 설계 계산식을 적용하여 Template 모델을 구성 하고, 자동으로 스프링 계산 sheet도 작성 가능합니다. 다음 버전에 적용 예정 입니다.
1. 압축 스프링 화면 UI
"새로 고침"을 클릭 하면 자동으로 프로그램에서 지정된 압축 스프링 모델을 OPEN 합니다. 치수 값을 입력 하고, "적용" 버튼을 클릭 하면 3D 모델이 변경 됩니다. Ver 0.1 에서는 저장 기능은 없습니다. 향후 파일 이름 변경, 저장 위치 변경,
저장 기능을 추가 예정 입니다.
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
'Creo korea 임시' 카테고리의 다른 글
공차 계산 프로그램 (2) | 2021.02.17 |
---|---|
MMC / LMC 계산 프로그램 개선 (0) | 2021.01.29 |
MMC / LMC 계산 프로그램 2차 테스트 (0) | 2021.01.25 |
MMC / LMC 계산 프로그램 1차 테스트 (0) | 2021.01.25 |
MMC / LMC 계산 프로그램 (0) | 2021.01.21 |