본문 바로가기
  • Welcome!
VBA, VB.NET For Creo

개발 요청] 치수 변경, 간섭 체크, 최단 거리 값 구하기 #3

by ToolBOX01 2024. 11. 30.
반응형

□ Main 프로그램  컨셉

엑셀에 입력된 "6C:6G"까지의 값을 가져와서 모델의 치수를 변경 하는 코드 입니다.

[치수 이름 / 치수 값]

Option Explicit
Option Base 1
Sub FingerCheck01()
    On Error GoTo RunError
    Application.EnableEvents = False

    '// Module Name : CreoVBAStart
    Call CreoVBAStart.CreoConnt01
        
    Dim ModelItemOwner As IpfcModelItemOwner
    Dim modelitems As IpfcModelItems
    Dim BaseDimension As IpfcBaseDimension
    
    Dim targetCell As Range
    Dim i, j As Long
        
    Set ModelItemOwner = Model
    Set modelitems = ModelItemOwner.ListItems(EpfcModelItemType.EpfcITEM_DIMENSION)
      
    For j = 0 To 5 '// Dimension Parameter
           Set targetCell = Range("B5").Offset(0, j + 1)
           
            For i = 0 To modelitems.Count - 1
                Set BaseDimension = modelitems(i)
                 If targetCell.value = BaseDimension.Symbol Then
                 
                    Set targetCell = Cells(6, "C").Offset(0, j)
                    BaseDimension.DimValue = targetCell.value
                    
                End If
            Next i

    Next j
        
    MsgBox "OK"
        
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: An error occurred." & vbCrLf & _
                       "Error No: " & CStr(Err.Number) & vbCrLf & _
                       "Error Description: " & Err.Description & vbCrLf & _
                       "Error Source: " & Err.Source, vbCritical, "Error"
                If Not conn Is Nothing Then
                    If conn.IsRunning Then
                        conn.Disconnect (2)
                    End If
                End If
            End If
End Sub

▷ IpfcModelItemOwner

모델 안에 있는 여러 항목(예: 피처, 면, 축, 레이어 등)을 다룰 수 있게 해주는 도구입니다.
모델 안의 특정 부분을 찾아내거나, 관련된 목록을 불러오는 역할을 합니다.

Function GetItemById (Type as IpfcModelItemType, Id as Long) as IpfcModelItem [optional]

모델 안에서 고유한 ID를 가진 항목(예: 특정 피처나 면)을 찾아줍니다.
예: "ID가 1234인 피처를 찾아줘!"라고 요청하면 해당 피처를 반환합니다.

Function GetItemByName (Type as IpfcModelItemType, Name as String) as IpfcModelItem [optional]

항목의 이름을 기준으로 특정 엔티티(레이어, 피처 등)를 찾습니다.
예: "레이어 이름이 'MyLayer'인 항목을 찾아줘!"라고 하면 해당 레이어를 반환합니다.

Function ListItems (Type as IpfcModelItemType [optional]) as IpfcModelItems [optional]

특정 유형(피처, 면, 축 등)의 모든 항목을 리스트로 불러옵니다.
예: "모델 안의 모든 피처를 리스트로 보여줘!"
→ 피처 목록이 쭉 출력됩니다.
추가 팁: 유형(Type)을 지정하지 않으면, 모델에 있는 모든 항목을 가져옵니다.

IpfcModelItemType . . .. 

더보기

EpfcITEM_FEATUREFeature
EpfcITEM_SURFACESurface
EpfcITEM_EDGEEdge
EpfcITEM_COORD_SYSCoordinate system
EpfcITEM_AXISAxis
EpfcITEM_POINTPoint
EpfcITEM_QUILTQuilt
EpfcITEM_CURVECurve
EpfcITEM_LAYERLayer
EpfcITEM_NOTEA solid model note
EpfcITEM_DIMENSIONDimension
EpfcITEM_REF_DIMENSIONReference dimension
EpfcITEM_SIMPREPSimplified representation
EpfcITEM_SOLID_GEOMETRYA solid geometry layer item.
EpfcITEM_TABLEA drawing table
EpfcITEM_DTL_ENTITYA detail entity
EpfcITEM_DTL_NOTEA detail note
EpfcITEM_DTL_GROUPA detail draft group
EpfcITEM_DTL_SYM_DEFINITIONA symbol definition
EpfcITEM_DTL_SYM_INSTANCEA symbol instance
EpfcITEM_DTL_OLE_OBJECTA drawing-embedded OLE object
EpfcITEM_EXPLODED_STATEAn exploded state
EpfcITEM_EDGE_START 
EpfcITEM_LOG_EDGE 
EpfcITEM_EDGE_END 
EpfcITEM_XSECCross Section
EpfcITEM_LAYER_STATELayer state
EpfcITEM_COMBINED_STATECombined state
EpfcITEM_STYLE_STATEStyle state
EpfcITEM_RP_MATERIALMaterial Item
EpfcITEM_VIEWView
EpfcITEM_SURF_FIN 
EpfcITEM_ANNOT_PLANE 
EpfcITEM_ANNOTATION_ELEM 
EpfcITEM_SET_DATUM_TAG 
EpfcITEM_GTOL
EpfcITEM_BODYSolid body
EpfcITEM_CRV_STARTDatum Curve End
EpfcITEM_CRV_ENDDatum Curve End
EpfcModelItemType_nilUse this enumerated value to represent "null" passed to optional properties or method arguments.

▷ 참조 코드

 

SECTION 단면들의 면적 구하기

아래 그림과 모델의 SECTION 단면의 면적을 구해 봅니다. Distance 값을 VBA 프로그램으로 변경 합니다. 시작 값은 "0" ~ "200' 사이 입니다. 간격은 "10"을 증가 합니다. ■ VBA 프로그램 코딩 순서 1. session

tool-2020.tistory.com

 

 

Change Creo Model and Get Volume Values (Creo 9.0)

Change the dimensions of a Creo model in Excel.Use the promised dimension name.Get measured volume values ​​automatically calculated in Creo.  You can develop various template programs using the code below.▷Main CodeOption ExplicitSub Mode

tool-2020.tistory.com

korealionkk@gmail.com