□ 모든 Creo 모델 검색 하기
하드디스크 내 모든 폴더를 검색하여 Creo 파일을 자동으로 읽는 기능은 데이터 관리 및 활용 측면에서 다양한 이점을 제공합니다. PorstgreSQL과 같은 무료 데이터베이스와 함께 중복 데이터를 검색 할수 있습니다. 데이터를 재활용 하기 위한 라이브러리 파일들을 체계적으로 정리 할수 있습니다. 1억개의 Creo 모델을 재활용 하려면 데이터베이스의 힘이 절대적으로 필요 합니다.
▷ 데이터 관리 측면
- 정확한 파일 위치 파악: 방대한 데이터 속에서 필요한 Creo 파일을 빠르게 찾아낼 수 있어 작업 효율성을 높입니다.
- 중복 파일 제거:
동일한 파일이 여러 폴더에 중복되어 저장되어 있는 경우, 이를 쉽게 식별하고 제거하여 저장 공간을 절약하고 데이터 관리를 간소화합니다. - 파일 체계 정리:
파일 분류 기준을 설정하여 자동으로 파일을 정렬하고 분류함으로써 체계적인 데이터 관리가 가능해집니다. - 백업 및 복원: 중요한 Creo 파일을 자동으로 인식하여 백업하고, 필요 시 복원하는 작업을 간소화합니다.
▷ 데이터 활용 측면
- 데이터 분석:
수집된 Creo 파일 데이터를 분석하여 설계 트렌드, 자주 사용되는 부품, 오류 발생 패턴 등 유용한 정보를 얻을 수 있습니다. - 재활용:
기존에 설계된 부품이나 어셈블리를 재활용하여 새로운 제품 개발 시간을 단축하고 비용을 절감할 수 있습니다. - 협업 환경 구축: 다양한 사용자가 공유하는 데이터를 효율적으로 관리하고 활용하여 협업 환경을 구축할 수 있습니다.
▷ 구체적인 예시
- 프로젝트 관리:
특정 프로젝트에 관련된 모든 Creo 파일을 빠르게 찾아내어 프로젝트 진행 상황을 파악하고 문제를 해결할 수 있습니다. - 부품 라이브러리 관리:
표준 부품을 자동으로 분류하고 관리하여 설계 재사용성을 높이고 설계 오류를 줄일 수 있습니다. - 품질 관리:
제품 생산에 사용된 모든 Creo 파일을 추적하여 품질 문제 발생 시 원인 분석을 용이하게 하고 개선 활동에 활용할 수 있습니다.
□ IpfcBaseSession.ListFiles
현재 작업공간에 있는 Part 파일 이름을 가져 오는 코드 입니다. IpfcBaseSession.ListFiles를 사용 합니다.
▷Parameters:
1. Filter as String
A filename filter, such as "*.prt", "*.asm", "*.drw"
2. Version as IpfcFileListOpt
Flag indicating if all versions, or the latest versions should be found. Also allows alphatical sorting of the returned list.
1) EpfcFILE_LIST_LATEST
List only the latest version of each file.
2) EpfcFILE_LIST_ALL_INST
Same as FILE_LIST_ALL, to show instances for PDM locations.
3) EpfcFILE_LIST_LATEST_INST
Same as FILE_LIST_LATEST, to show instances for PDM locations.
4) EpfcFileListOpt_nil
Use this enumerated value to represent "null" passed to optional properties or method arguments.
3. Path as String
The directory
Function ListFiles (Filter as String, Version as IpfcFileListOpt, Path as String [optional]) as Istringseq
Dim Version As IpfcFileListOpt
set Version = EpfcFILE_LIST_LATEST
▷ Code to get the Part file name in the current workspace
Dim BaseSession As pfcls.IpfcBaseSession
Dim ForderName As String
Dim FileType As String
Dim Stringseq As Istringseq
Dim Version As IpfcFileListOpt
Dim i As Integer
ForderName = "C:\TEMP"
FileType = "*.prt"
set Version = EpfcFileListOpt.EpfcFILE_LIST_LATES
BaseSession.ChangeDirectory (ForderName)
Set Stringseq = BaseSession.ListFiles(FileType, Version, ForderName)
For i = 0 To oStringseq.Count - 1
deburg.print ConvertFilename(oStringseq.Item(i))
Next i
Function ConvertFilename(ByVal originalFilename As String) As String
'Create a new file name by removing the string after the extension from the file name.
Dim lastDotPosition As Integer
lastDotPosition = InStrRev(originalFilename, ".")
If lastDotPosition > 0 Then
ConvertFilename = Left(originalFilename, lastDotPosition - 1)
Else
ConvertFilename = originalFilename ' Return original file name if no extension
End If
End Function
The folder name and file name are displayed. (" D:\ElectricMotor-models\13833001.prt.3")
Use "Function ConvertFilename(ByVal originalFilename As String) As String" to get only the Creo model name and extension.
▷ Code : Get folder and Sub folder names from hard disk
Sub GetFolderNamesToArray()
Dim fso As Object
Dim folderPicker As FileDialog
Dim folderNames() As String
Dim folderIndex As Integer
Dim folder As Object
Dim subFolder As Object
Dim ws As Worksheet
'// Set Excel Sheet Name
Set ws = ThisWorkbook.Worksheets("FORDER_LIST")
'// Create FileDialog to choose folder
Set folderPicker = Application.FileDialog(msoFileDialogFolderPicker)
'// Show folder picker
If folderPicker.Show = -1 Then
' Add the selected folder to the array directly
ReDim folderNames(0)
folderNames(0) = folderPicker.SelectedItems(1) ' Full path of the selected folder
folderIndex = 1
Else
MsgBox "No folder selected."
Exit Sub
End If
'// Create the FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
'// Loop through the selected folder's subfolders and add them to the array
For Each folder In fso.getfolder(folderNames(0)).subFolders
'// Resize the array to fit the current number of folders
ReDim Preserve folderNames(folderIndex)
folderNames(folderIndex) = folder.Path ' Full path of the folder
folderIndex = folderIndex + 1
'// Loop through subfolders of each subfolder and add them to the same array
For Each subFolder In folder.subFolders
'// Resize the array for the subfolder
ReDim Preserve folderNames(folderIndex)
folderNames(folderIndex) = subFolder.Path ' Full path of the subfolder
folderIndex = folderIndex + 1
Next subFolder
Next folder
For i = 0 To folderIndex - 1
ws.Cells(i + 8, "A").Value = i + 1
ws.Cells(i + 8, "B").Value = folderNames(i)
ws.Cells(i + 8, "D").Value = CountBackslashes(folderNames(i))
Next i
'// Output the result (you can use Debug.Print to see the arrays in the Immediate Window)
MsgBox "Completed creating the folder name array!"
' Optionally, display the folder and subfolder names in the Immediate Window for debugging
Debug.Print "All Folder Names:"
For i = 0 To folderIndex - 1
Debug.Print folderNames(i)
Next i
End Sub
by korealionkk@gmail.com
'VBA, VB.NET For Creo' 카테고리의 다른 글
IpfcBaseSession.RetrieveModel (0) | 2025.01.19 |
---|---|
Get parameter values included in feature - IpfcModelItemOwner (0) | 2025.01.18 |
IpfcParameterOwner (Managing creo parameters) (0) | 2025.01.18 |
VB.NET 학습 사이트 (0) | 2025.01.17 |
콜백 함수 (0) | 2025.01.15 |