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

#3 MBD : 모델 치수 가져오기-1

by ToolBOX01 2023. 12. 24.
반응형

□  모델 치수 가져오기

모델이 가지고 있는 모든 치수 값을 가져오는 코드 입니다. 이 코드는 참조 치수 및 Annotate 치수를 모두 가져옵니다.
참조 및 Annotate에서 정의한 치수를 모두 가져올 수 있습니다

Creo 화면 엑셀

 Dimmension Type은 5가지로 구분 합니다.

Dimmension Type 기호 EpfcDimensionType 내용 이미지
0 EpfcDIM_LINEAR linear dimension
1 EpfcDIM_RADIAL radial dimension
2 EpfcDIM_DIAMETER diametrical dimension
3 EpfcDIM_ANGULAR angular dimension
4 EpfcDimensionType_nil 기타  

 

TOOLBOX_VBA-Dimension List.xlsm
0.02MB

▷ VBA 코드

Option Explicit
Sub Dimension_Nanme()

'// 활성화된 모델을 엑셀과 연결 합니다  
    Application.EnableEvents = False
    Dim asynconn As New pfcls.CCpfcAsyncConnection
    Dim conn As pfcls.IpfcAsyncConnection:
    
    '// Creo Connect Check
    On Error Resume Next
    Set conn = asynconn.Connect("", "", ".", 5)
    
        If conn Is Nothing Then
        
           MsgBox "Error occurred while starting new Creo Parametric Session", vbInformation, "www.idt21c.com"
           Exit Sub
           
        End If

    On Error GoTo RunError
    
    Dim BaseSession As pfcls.IpfcBaseSession
    Dim Model As IpfcModel
    Dim Solid As IpfcSolid
    
    Set BaseSession = conn.Session
    Set Model = BaseSession.CurrentModel
    Set Solid = Model
 
 '//현재의 작업 폴더와 파일이름을 표시 합니다
    Cells(2, "D") = BaseSession.GetCurrentDirectory
    Cells(3, "D") = Model.Filename

    Dim Modelowner As IpfcModelItemOwner
    Set Modelowner = BaseSession.CurrentModel()
    Dim modelitems As IpfcModelItems
    
 '//모델에서 Dimension 타입 객체를 가져옵니다    
    Set modelitems = Modelowner.ListItems(EpfcModelItemType.EpfcITEM_DIMENSION)
    Dim BaseDimension As IpfcBaseDimension
    Dim i As Integer
    
    For i = 0 To modelitems.Count - 1
         Set BaseDimension = modelitems(i)
         Cells(i + 5, "B") = i + 1
         Cells(i + 5, "C") = BaseDimension.Symbol
         Cells(i + 5, "D") = BaseDimension.DimType
         Cells(i + 5, "E") = BaseDimension.DimValue
    Next i
    
    MsgBox "치수 및 값을 표시 하였습니다", vbInformation, "ToolBOX VBA"
    
    conn.Disconnect (2)
    
    'Cleanup
    Set asynconn = Nothing
    Set conn = Nothing
    Set BaseSession = Nothing
    Set Model = Nothing


    
RunError:
    If Err.Number <> 0 Then
        MsgBox "Process Failed : Unknown error occurred." + Chr(13) + _
                "Error No: " + CStr(Err.Number) + Chr(13) + _
                "Error: " + Err.Description, vbCritical, "Error"
        If Not conn Is Nothing Then
            If conn.IsRunning Then
                conn.Disconnect (2)
            End If
        End If
    End If


End Sub

 

▷ Dimension Symbol Type

문자 조합은 기호 유형을 정의하고 숫자는 치수의 고유 식별자입니다. 문자와 숫자의 조합은 차원 간의 관계 수식 정의와 같은 고급 기술에 사용되는 차원에 대한 고유한 참조 지정자를 만듭니다.

 

 

(1) Dimension Symbol "d"
- 모델에서 피쳐를 생성하는 동안 생성된 표시(구속) 치수입니다. 이러한 치수는 모델과 도면 간에 양방향으로 연관되어 있습니다.

스케치 모드의 Reference Dimension Symbol은 "d"로 표시 됩니다.

(2) Dimension Symbol "ad"
- 모델과 연관되고 모델과 함께 저장되지만 드로잉에서 수정할 수 없는 생성된(구동) 치수입니다. 이러한 치수는 모델 형상이 수정되는 경우에만 도면에서 업데이트됩니다. config.pro 옵션 create_raw_dims_only 및 draw_models_read_only 의 값이 기본값인 no 일 때 생성됩니다. Annotate에서 추가된 치수를 표시 합니다.

 

(3) Dimension Symbol "add"
- 참조하는 형상이나 도면 요소와 계속 연관되어 있지만 드로잉과 함께 저장되는 도면 치수를 생성했습니다. config.pro 옵션 create_ drawings_dims_only 또는 draw_models_read_only 값이 yes 일 때 치수를 추가합니다 . 도면 형상을 참조하기 위한 추가 치수를 생성하려면 associative_dimensioning 세부 옵션을 yes 로 설정해야 합니다 .

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


영업문의 : lionkk@idt21c.com
카카오 채널 : http://pf.kakao.com/_fItAxb