업무 자동화/VBA, VB.NET For Creo

IpfcModel : Property CommonName

ToolBOX01 2025. 11. 10. 11:34
반응형

◎ Property CommonName as String

IpfcModel 인터페이스의 CommonName 속성은 해당 Creo 모델의 **공통 이름(Common Name)**을 나타냅니다. 이 속성은 특히 Windchill PDM (제품 데이터 관리) 시스템과의 통합 환경에서 중요하게 사용됩니다.

CommonName은 Creo 모델에 부여되는 설명적인 이름 또는 제목을 의미합니다.

  • 이는 운영 체제의 파일 이름(Filename, 예: A100001.prt)과는 구별되는 이름으로, 주로 제품 데이터 관리(PDM) 시스템, 특히 Windchill 환경에서 해당 모델을 식별하고 사용자에게 표시하는 데 사용됩니다.
  • 많은 기업에서 **CommonName**을 부품의 **명칭(Title) 또는 설명(Description)**으로 활용하도록 PDM 시스템을 구성합니다. (예: 파일 이름은 부품 번호로, CommonName은 '프론트 커버'와 같은 명칭으로 사용).
croe의 파일 이름은 "31"이내 문지러 작성 해야하고, 특수문자 ...등 제약조건이 있습니다
CommonName은 작성 문자수 및 특수믄자 사용에 제약이 적습니다.
CommonName 작성은 사용자가 정의한 제품 분류규칙에 따라 입력이 가능 합니다

IpfcModel.CommonName 속성은 주로 Creo Parametric의 자동화 및 PDM 통합을 위해 다음과 같은 용도로 사용됩니다.

  • 정보 식별 및 표시:
    • Windchill PDM: PDM 시스템에서 해당 모델을 검색하거나 폴더 구조에서 볼 때 사용자에게 친숙한 이름으로 표시됩니다.
    • 도면 템플릿: Creo 도면의 제목 블록(Title Block)에 모델의 CommonName을 자동으로 삽입하여 사용자가 별도로 입력하는 수고를 줄입니다.
  • 데이터 제어 및 수정:
    • 읽기: VBA API를 사용하여 모델의 현재 CommonName을 가져와 보고서 생성, 재고 목록 작성 등에 활용할 수 있습니다.
    • 쓰기: 모델이 PDM 시스템의 통제 하에 있지 않다면 (예: 로컬 작업 환경) VBA 코드로 이 이름을 자동으로 설정하거나 수정할 수 있습니다.
      • 주의: 모델이 PDM에 의해 잠겨 있는 경우(IpfcXToolkitCantModify 예외 발생) 수정할 수 없습니다. 이는 데이터 무결성을 보호하기 위함입니다.
  • 일괄 작업: 수백 개의 모델 이름을 표준화된 규칙에 따라 일괄적으로 업데이트하는 자동화 매크로를 구축할 수 있습니다.

PTC 공통 이름 변경 방법

 

How to Change PTC_COMMON_NAME

• PTC 공통 이름 변경 방법
PTC 공통 이름은 파일 이름을 변경하는 것과 동일한 방식으로 변경할 수 있습니다. '파일' 메뉴에서 '파일 이름 변경'을 선택하여 제조 모델의 새 이름을 입력하고, '어셈블리 이름 변경' 대화 상자에서 공통 이름을 수정할 수 있습니다.

• 참조 구성 요소 이름 변경
공통 이름 변경 시 참조 구성 요소의 이름도 동시에 변경할 수 있습니다. 예를 들어, 금형 메인 볼륨 파트의 파일 이름을 변경하지 않더라도 해당 파트의 공통 이름을 수정할 수 있습니다.

• 모델 트리에서 공통 이름 확인
모델 트리 열 설정에서 'PTC 공통 이름'을 열로 추가하여 변경된 공통 이름을 확인할 수 있습니다. 이 기능을 통해 모델 트리에서 공통 이름 열을 표시하고 크기를 조절할 수 있습니다.


반환 값

as String : 속성 값은 모델의 공통 이름 문자열을 반환합니다.

수정 가능성

  • 일반적으로는 읽기/쓰기가 가능한 속성입니다. 하지만 아래 예외 조건에 따라 쓰기가 제한됩니다.
  • 모델이 PDM 시스템의 통제 하에 있지 않은 경우에는 사용자가 이 값을 수정할 수 있습니다.

예외 조건

CommonName을 수정하려고 할 때 IpfcXToolkitCantModify 예외가 발생할 수 있습니다.

  • 원인: 이 예외는 해당 모델의 공통 이름이 PDM 시스템에 의해 잠겨서(locked) 수정할 수 없을 때 발생합니다.
  • 시나리오: 모델이 Windchill과 같은 PDM 시스템에 체크인(Check In)되어 있거나, 해당 브랜치 및 리비전에서 수정이 제한된 상태일 때 발생할 가능성이 높습니다. 이는 데이터 무결성(Integrity)을 유지하기 위한 PDM 시스템의 표준 동작입니다.

💻 Sample code

현재 활성 모델의 공통 이름을 가져오고, 그 이름을 수정하려 시도하는 VBA 코드 예제입니다. PDM에 의해 잠겨 있는지 여부에 따라 수정 시도가 성공하거나 실패(예외 발생)할 수 있습니다.

'--------------------------------------------------------------------------------'
' 모듈: Module1'
' 목적: Creo 모델의 CommonName을 읽고, 수정 가능한 경우 수정합니다.'
'--------------------------------------------------------------------------------'

Option Explicit

Sub UpdateModelCommonName()

    ' Creo API 객체 선언 '
    Dim AsynConn As New pfcls.CCpfcAsyncConnection
    Dim Conn As pfcls.IpfcAsyncConnection
    Dim Session As pfcls.IpfcBaseSession
    Dim CurrentModel As pfcls.IpfcModel
    Dim OldCommonName As String
    Dim NewCommonName As String
    
    ' 수정하려는 새 이름 (예시) '
    NewCommonName = "NEW_COMMON_NAME_FOR_MODEL" 
    
    On Error GoTo ErrorHandler
    
    ' 1. Creo Parametric 세션에 연결'
    Set Conn = AsynConn.Connect("", "", ".", 5)
    Set Session = Conn.Session
    
    ' 2. 현재 활성 모델 가져오기'
    Set CurrentModel = Session.CurrentModel

    If CurrentModel Is Nothing Then
        MsgBox "활성화된 모델이 없습니다.", vbExclamation
        GoTo ExitProcedure
    End If
    
    ' 3. 현재 CommonName 가져오기'
    OldCommonName = CurrentModel.CommonName
    Debug.Print "현재 CommonName: " & OldCommonName
    
    ' 4. CommonName 수정 시도 '
    On Error GoTo ModifyErrorHandler ' 수정 오류를 별도로 처리
    
    CurrentModel.CommonName = NewCommonName
    
    ' 수정 성공 시 '
    Debug.Print "CommonName 수정 성공: " & CurrentModel.CommonName
    MsgBox "CommonName이 성공적으로 '" & NewCommonName & "'으로 변경되었습니다.", vbInformation, "수정 성공"

    GoTo ExitProcedure

ModifyErrorHandler:
    ' IpfcXToolkitCantModify 오류 처리 '
    If Err.Number = &H80040E00 Then ' 가정된 COM 오류 코드 (실제 코드와 다를 수 있음)
        ' 실제로는 API 문서에서 제공되는 특정 오류 번호를 사용해야 합니다. '
        Debug.Print "오류: PDM에 의해 CommonName이 잠겨 수정할 수 없습니다. (IpfcXToolkitCantModify 예상)"
        MsgBox "오류: CommonName이 PDM에 의해 잠겨 수정할 수 없습니다. (현재 이름: " & OldCommonName & ")", vbCritical, "수정 실패"
    Else
        ' 기타 오류 '
        Debug.Print "기타 오류 발생: " & Err.Description
        MsgBox "알 수 없는 오류 발생: " & Err.Description, vbCritical, "오류"
    End If
    
ExitProcedure:
    ' 5. 연결 해제 및 객체 정리 '
    On Error Resume Next
    If Not Conn Is Nothing Then Conn.Disconnect (2) 
    Set CurrentModel = Nothing
    Set Session = Nothing
    Set Conn = Nothing
    Set AsynConn = Nothing
    Exit Sub

ErrorHandler:
    ' 초기 연결 또는 모델 가져오기 오류 처리 '
    MsgBox "초기화 중 오류 발생: " & Err.Description, vbCritical, "오류"
    Resume ExitProcedure
    
End Sub

이 속성은 PDM 환경에서 모델 이름을 표준화하거나 일괄 변경하는 자동화 스크립트를 작성할 때 매우 유용합니다.

위 코드를 참고하여 대량의 파일 이름을 수정 또는 추가하는데 사용 합니다. 약간의 코드 변형을 하면, 사용자가 만든 프로그램으로, 자동으로 모델의 "CommonName"을 읽고, 수정, 추가 할 수 있습니다

This property is extremely useful when writing automated scripts to standardize or batch-change model names in a PDM environment.

The code above can be used to modify or add file names in bulk. With a few minor modifications, a user-created program can automatically read, modify, and add the "CommonName" of a model.

Add reference code

 

Model Information - IpfcModel

□ IpfcModel.IsCommonNameModifiable() 모델 일반 이름(IpfcModel.CommonName)을 수정할 수 있는지 식별합니다. FunctionIsCommonNameModifiable () as Boolean Option Explicit Sub commonbool() On Error GoTo RunError Dim asynconn As New pfcls.CCp

tool-2020.tistory.com

 

by korealionkk@gmail.com


 

 

반응형