반응형
1. 모델의 치수 이름은 정의 되어 있어야 합니다.
2. 엑셀 UI
코딩하기
1. 단계 연결 및 파일 이름 표시
Sub dim_Value()
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
Cells(2, "D") = session.GetCurrentDirectory
Cells(3, "D") = oModel.Filename
2. 셀의 치수 이름 배열 하기
"KOREA1 ~ KOREA3" 이름을 범위로 정의 하고, 카운트를 정의 합니다 - 무척 많이 사용하는 코딩 입니다
Dim rng As Range, C As Range
Dim dc As New Collection
Set rng = Range("C6", Cells(Rows.Count, "C").End(xlUp))
On Error Resume Next
For Each C In rng
If Len(C) Then
dc.Add Trim(C), CStr(Trim(C))
End If
Next
On Error GoTo 0
3. 배열을 하고 엑셀 파일에 치수 값 표시 하기
Dim oSolid As IpfcSolid
Set oSolid = oModel
Dim oWner As IpfcModelItemOwner
Set oWner = oSolid
Dim oDim As IpfcBaseDimension
Dim oDimensionName As String
For i = 0 To dc.Count - 1
oDimensionName = Cells(i + 6, "c")
Set oDim = oWner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, oDimensionName)
If oDimensionName = oDim.Symbol Then
Cells(i + 6, "d") = oDim.DimValue
End If
Next i
모델에서 치수 이름을 추가 하고, 엑셀 파일에서 치수 이름을 추가 하면 자동으로 치수 값을 표시 할수 있습니다.
FOR문과 Rows.count 명령을 사용한 이유 입니다.
전체 소스
Sub dim_Value_display()
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
Cells(2, "D") = session.GetCurrentDirectory
Cells(3, "D") = oModel.Filename
Dim rng As Range, C As Range
Dim dc As New Collection
Set rng = Range("C6", Cells(Rows.Count, "C").End(xlUp))
On Error Resume Next
For Each C In rng
If Len(C) Then
dc.Add Trim(C), CStr(Trim(C))
End If
Next
On Error GoTo 0
Dim oSolid As IpfcSolid
Set oSolid = oModel
Dim oWner As IpfcModelItemOwner
Set oWner = oSolid
Dim oDim As IpfcBaseDimension
Dim oDimensionName As String
For i = 0 To dc.Count - 1
oDimensionName = Cells(i + 6, "c")
Set oDim = oWner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, oDimensionName)
If oDimensionName = oDim.Symbol Then
Cells(i + 6, "d") = oDim.DimValue
End If
Next i
'Disconnect with Creo
conn.Disconnect (2)
'Cleanup
Set asynconn = Nothing
Set conn = Nothing
Set session = Nothing
Set oModel = Nothing
End Sub
엑셀 파일에서 치수 값 변경 하기
" oDim.DimValue = Cells(i + 6, "d")" 엑셀의 치수 값을 Creo 의 치수로 전달 하는 코딩 입니다.
Sub dim_Value()
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 rng As Range, C As Range
Dim dc As New Collection
Set rng = Range("C6", Cells(Rows.Count, "C").End(xlUp))
On Error Resume Next
For Each C In rng
If Len(C) Then
dc.Add Trim(C), CStr(Trim(C))
End If
Next
On Error GoTo 0
Dim oSolid As IpfcSolid
Set oSolid = oModel
Dim oWner As IpfcModelItemOwner
Set oWner = oSolid
Dim oDim As IpfcBaseDimension
Dim oDimensionName As String
Dim oDimensionValue As Double
For i = 0 To dc.Count - 1
oDimensionName = Cells(i + 6, "c")
Set oDim = oWner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, oDimensionName)
If oDimensionName = oDim.Symbol Then
oDim.DimValue = Cells(i + 6, "d")
End If
Next i
Dim Solid As IpfcSolid
Set Solid = oModel
Solid.Regenerate (ForceRegen)
End Sub
Creo 파일은 4.0 버전입니다.
동영상
'VBA For Creo' 카테고리의 다른 글
#3 IpfcSession - UI로 작업 공간을 선택 하는 프로그램 (0) | 2021.01.30 |
---|---|
4-6 # Parameter : Part File List 프로그램 Ver 0.1 (0) | 2021.01.28 |
BOOK : 엑셀 VBA For Creo (0) | 2021.01.25 |
4-5 # Parameter : 엑셀에서 매개변수 읽고, CREO 변경 하기 (0) | 2021.01.23 |
열 방향의 매개변수 읽고 쓰기, 매개변수 만들기 미완성 (0) | 2021.01.22 |