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

#2 quilt의 면적 표시 - 고급 편

by ToolBOX01 2023. 8. 16.
반응형

□ 소개

50개의 치수 조합을 자동으로 모델에 대입 하여, quilt의 면적을 자동으로 표시 하는 프로그램 입니다.
치수 조합은 Array 기능을 이용하여 개발 하였습니다

▷ 참고 사이트

 

quilt의 면적 표시

■ 소개 모델에 이름("korea")이 정의된 면적을 표시 하는 기능입니다 ▷ Croe 모델 준비 모델에서 서피스 여러개를 복사 하고, 이름을 "korea"로 정의 합니다 ▷ Creo에서 면적 표시 □ Quilt 면적을 표

tool-2020.tistory.com

 

 

Array 공부 - 치수 값을 조합 하여 화면에 표시하기

□ 소개 1행 10개, 2행 5개를 조합하여, 곱하는 코드 입니다 ▷ 액셀 파일 ▷ 코드 Sub MultiplyArrays() Dim array1(1 To 10) As Double Dim array2(1 To 5) As Double Dim resultArray(1 To 10, 1 To 5) As Double Dim i As Integer, j As Inte

tool-2020.tistory.com

 

치수의 조합은 50개 입니다. 오른쪽 그림과 같이 변경 가능한 치수 이름을 정의 합니다. 표면적은 여러개의 서피스를 합친 "KOREA" 이름의 quilt 입니다.

치수 이름 : DIM01, DIM02 (반드시 대문자만 사용)

quilt 이름 : KOREA  (반드시 대문자만 사용)

 

▷ 코드

Sub autodim()
     '// 치수 조합
    dimCombination.dimCombination

    '// 현재 세션 연결
    file_name.model_session
    Cells(5, "D") = model.Filename
    
    '// SET Regenerate
    Dim solid As IpfcSolid
    Dim RegenInstructions As New CCpfcRegenInstructions
    Dim Instrs As IpfcRegenInstructions
    Set solid = model
    Set Instrs = RegenInstructions.Create(False, False, Nothing)
     
    '// SET Dimension
    Dim Modelowner As IpfcModelItemOwner
    Dim dim01ModelItem As IpfcModelItem
    Dim dim01BaseDimension As IpfcBaseDimension
    Dim dim02ModelItem As IpfcModelItem
    Dim dim02BaseDimension As IpfcBaseDimension
    
    Set Modelowner = model
    Set dim01ModelItem = Modelowner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, "DIM01")
    Set dim01BaseDimension = dim01ModelItem
    
    Set dim02ModelItem = Modelowner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, "DIM02")
    Set dim02BaseDimension = dim02ModelItem
      
    Dim dimcountrange As Range
    Set dimcountrange = Worksheets("Area").Range("H7", Cells(Rows.Count, "H").End(xlUp))
    
    '// SET quiltarea
    Dim QuiltmodelItem As IpfcModelItem
    Dim Quilt As IpfcQuilt
    Dim Surfaces As IpfcSurfaces
    Dim Surface As IpfcSurface
    
    Set QuiltmodelItem = Modelowner.GetItemByName(EpfcModelItemType.EpfcITEM_QUILT, "KOREA")
    Set Quilt = QuiltmodelItem
    Set Surfaces = Quilt.ListElements
    
    Dim q As Integer

    '//quilt 면적 값 표시 변수
    Dim quiltarea As Double
    Dim totalquiltarea As Double

    Dim i As Integer
    
    For i = O To dimcountrange.Count - 1
    
            dim01BaseDimension.DimValue = Cells(7 + i, "H")
            dim02BaseDimension.DimValue = Cells(7 + i, "I")
            
            Call solid.Regenerate(Instrs) '// Regenerate 실행
            
            For q = 0 To Surfaces.Count - 1
                
                Set Surface = Surfaces(q)
                quiltarea = Surface.EvalArea
                totalquiltarea = totalquiltarea + quiltarea
                
            Next q
            
            Cells(7 + i, "j") = totalquiltarea
            totalquiltarea = 0
    Next i
    
End Sub

 

▷프로그램 실행전

 

▷ 프로그램 실행 결과

 

모델 Download (CREO 9.0)

idt-korea01.prt.1
0.14MB

 

VBA 프로그램 Download

ToolBOX VBA by IDT -01.xlsm
0.06MB

 

▷ 프로그램 실행 동영상


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

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

IpfcModelItemOwner  (0) 2023.08.18
#1 IpfcModel  (0) 2023.08.18
Array 공부 - 치수 값을 조합 하여 화면에 표시하기  (0) 2023.08.15
#1 quilt의 면적 표시  (0) 2023.08.15
#9 IpfcBaseSession.Select() - Surface  (0) 2023.08.14