본문 바로가기
  • Welcome!
VBA For Creo

모델이 가지고 있는 치수 이름, 값, 타입 표시

by ToolBOX01 2023. 8. 4.
반응형

■ 소개

모델이 가지고 있는 치수 이름 및 값, 타입을 모두 표시 합니다. "IpfcBaseDimension" 함수를 사용 합니다.
* Part 모드에서만 사용 가능 합니다

▷ "IpfcBaseDimension" 함수 기능 ...

기본 치수(Base Dimension)는 부품 또는 어셈블리의 기하적 요소를 측정하고 제어하는 데 사용되는 
중요한 치수입니다. 예를 들어, 부품의 길이, 너비, 높이 등의 치수가 기본 치수에 해당합니다. 
이러한 치수를 정확하게 설정하면 모델의 형상과 크기를 정확하게 제어할 수 있으며, 설계 변경 
시에도 이러한 치수들을 변경함으로써 모델을 자동으로 업데이트할 수 있습니다.

 

▷ IpfcBaseDimension.DimType

번호 0 1 2 3
DimType EpfcDIM_LINEAR

- A linear dimension.
EpfcDIM_RADIAL

- A radial dimension.
EpfcDIM_DIAMETER

- A diametrical dimension.
EpfcDIM_ANGULAR

- An angular dimension.

모델이 가지고 있는 치수의 타입을 표시 합니다. 참조 치수를 구분하여 표시 하지 않습니다

▷ IpfcBaseDimension.Symbol

1) d #
    모델에서 피쳐 생성 중에 생성된 표시(구동) 치수입니다. 이러한 치수는 모델과 도면 간에 연관 양방향입니다.

2) ad #
     모델과 연관되고 모델과 함께 저장되지만 드로잉에서 수정할 수 없는 생성된(구동) 치수입니다. 이러한 치수는 모델
     형상이 수정된 경우에만 드로잉에서 업데이트됩니다. 

3) add #
     참조하는 형상이나 도면 요소에 여전히 연관되어 있지만 드로잉과 함께 저장되는 도면 치수를 생성했습니다.
     config.pro 옵션 create_drawing_dims_only 또는 draw_models_read_only 의 값이 yes 인 경우 치수 결과를
     추가합니다. 도면 형상을 참조하기 위한 추가 치수를 생성하려면 associative_dimensioning 세부 옵션을 yes 로
     설정해야 합니다 .

4) dd #
    참조하는 도면 요소와 연관되지 않은 도면 치수입니다. dd 치수를 생성하려면 associative_dimensioning 세부
    옵션을 기본값인 no 로 설정해야 합니다 .

 

더보기

"IpfcModelItems"는 Creo Parametric의 VBA API(Virtual Basic for Applications Application Programming Interface)에서 제공하는 인터페이스 중 하나입니다. 이 인터페이스를 통해 여러 개체(Items)를 다룰 수 있습니다.

"ModelItems"는 Creo Parametric 모델 내에 존재하는 다양한 개체들을 나타내는 컬렉션(Collection)입니다. 

 

▷ part > feature > dimension name

Session > model >  feature > dimension 순서로 치수 이름 및 값을 검색 하고 표시 합니다.

 

1) 연결 모듈

Public asynconn As New pfcls.CCpfcAsyncConnection
Public conn As pfcls.IpfcAsyncConnection
Public session As pfcls.IpfcBaseSession
Public Model As pfcls.IpfcModel

Sub model_session()
    '/현재 session에 있는 모델의 이름을 표시합니다
    
    Set conn = asynconn.Connect("", "", ".", 5)
    Set session = conn.session
    Set Model = session.CurrentModel
      
End Sub

모듈 이름은 "file_name" 입니다. 프로그램 프로시져는 "model_session"입니다.

main 프로그램에서는  "file_name.model_session" 코드를 넣으면 됩니다. 이렇게 하면 모듈을 불러 옵니다

▷ IpfcModelItemOwner

CAD API를 사용하는 프로그래밍에서 IpfcModelItemOwner는 모델 아이템들을 관리하는 중요한 인터페이스로, 모델의 구성 요소에 대한 액세스와 조작을 가능하게 합니다. 이를 통해 CAD 소프트웨어와 외부 프로그램 간의 상호 작용을 용이하게 합니다.

▷ IpfcModelItem

IpfcModelItem 인터페이스는 모델 아이템들의 속성과 메서드에 액세스하는 데 사용됩니다. 예를 들어, 특정 모델 아이템의 이름, ID, 타입 등의 속성을 얻거나, 모델 아이템을 이동하거나 삭제하는 등의 작업을 수행할 수 있습니다.

 

IpfcFeature

ipfcFeature는 CAD 모델 내에서 3D 디자인을 구성하는 기본 요소 중 하나로, 보통 어떤 형상, 도형, 연산 또는 기능을 나타냅니다. 예를 들어, 원, 직선, 각도, 둥근 구멍, 치공, 프로파일 추가 등이 특성의 예시입니다.

IpfcFeature 인터페이스는 특성의 속성과 메서드에 액세스하는 데 사용됩니다. 몇 가지 주요 메서드와 속성은 다음과 같습니다

  • GetName: 특성의 이름을 가져옵니다.
  • GetId: 특성의 고유 ID를 가져옵니다.
  • GetType: 특성의 타입을 가져옵니다. (예: 원, 직선, 각도 등)
  • GetSubItemType: 특성의 서브 아이템 타입을 가져옵니다. (특성의 경우에는 특성의 서브 아이템 타입, 예를 들어, 둥근 구멍, 프로파일 추가 등)
  • GetOwner: 특성의 소유자(부모)를 가져옵니다. (일반적으로 어셈블리 또는 부품이 될 수 있습니다)
  • ListSubItems: 특성의 서브 아이템들을 리스트로 가져옵니다. (예를 들어, 특성에 연결된 차원들을 가져올 수 있습니다)
  • Regenerate: 특성을 재생성합니다. (모델을 업데이트하는 경우에 사용됩니다)
  • Delete: 특성을 삭제합니다.

Sub Dim_info()

    '// 현재 세션 연결
    file_name.model_session
    
    Dim ModelItemOwner As IpfcModelItemOwner
    Dim Featureitem As IpfcModelItem
    Dim Feature As IpfcFeature
    
    Set ModelItemOwner = Model
    Set Featureitem = ModelItemOwner.GetItemByName(EpfcITEM_FEATURE, "KOREA_01")
    
    Set Feature = Featureitem
    
    Dim Dimensionitems As IpfcModelItems
    Dim Dimension As IpfcBaseDimension
 
    Set Dimensionitems = Feature.ListSubItems(EpfcModelItemType.EpfcITEM_DIMENSION)
     
    Dim i As Integer
    For i = 0 To Dimensionitems.Count - 1
    
        Set Dimension = Dimensionitems(i)
        Cells(i + 5, "C") = i + 1
        Cells(5, "D") = Featureitem.GetName
        Cells(i + 5, "E") = Dimension.Symbol
        Cells(i + 5, "F") = Dimension.DimValue
        Cells(i + 5, "G") = Dimension.DimType
        
    Next i
         
    '// Disconnect with Creo
    conn.Disconnect (2)
    
    'Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set session = Nothing
    Set Model = Nothing

End Sub

 

위 코드는 part 모델의 특정 Feature 이름에 있는 치수 및 공차 값을 가져 옵니다. 이것을 사용 한다면 "A".part를 엑셀의 오른쪽에 표시하고 "B".part는 왼쪽에 표시할수 있습니다. 치수 값이 다른 Feature를 검색 가능한 기능 개발이 가능 합니다.동일한 모델에서 A0, A2, A3 버전의 차이점 Feature는 무엇일까요? 

위 기능을 확장 한다면 꽤 많은 파생 기능을 개발 할수 있습니다.  치수 값을 읽으면 수정하여 모델을 변경 할수 있습니다.

동작 예제)


 

예제 파일

sample_dimension.prt.1
0.13MB

프로그램 파일

ToolBOX VBA by IDT.xlsm
0.05MB

 

 

참고 사이트 . . 

 

How to get the dimensions of a feature by Creo Parametric VB API?

Feature 별로 치수 값을 표시 하는 방법 - Get dimensions by feature IpfcFeature.ListSubItems()를 사용 합니다 Use IpfcFeature.ListSubItems() with EpfcModelItemType.EpfcITEM_DIMENSION as the input argument to get the dimensions of a feature.

tool-2020.tistory.com

 


영업 문의 : lionkk@idt21c.com

 

'VBA For Creo' 카테고리의 다른 글

#2/3 Helical Sweep & VBA  (0) 2023.08.07
#1/3 Helical Sweep & VBA  (0) 2023.08.06
주 관성 모멘트(CenterGravityInertiaTensor의 고유값)  (0) 2023.08.03
Module  (0) 2023.08.02
유용한 사이트  (0) 2023.05.21