본문 바로가기
  • 환영 합니다 ! Welcome!
VBA For Creo

#3 데이터를 선택하여, 모델을 변경 하기

by ToolBOX01 2024. 4. 3.
반응형

□ Save As & Open

기존 파일("D3")을 새로운 파일 이름으로("D5") 저장 하고, Open 하는 기능 입니다

IpfcModel.CopyAndRetrieve()

Function	
CopyAndRetrieve	(NewName as String, Instructions as IpfcCopyInstructions [optional]) as IpfcModel

모델을 새 모델에 복사하고 새 모델을 메모리로 검색합니다.
  • 기존 모델을 새로운 모델로 하드 디스크 (Current Working Folder)에 저장 합니다
  • 새로운 모델 이름은 "확장자" 까지 포함 해야 합니다. 예) korea1000.prt
  • 하드 디스크에 동일한 이름이 존재 한다면 새로운 모델 이름으로 덮어 쓰기를 합니다.
  • 동일한 이름이 Session에 존재 한다면, 스크립트 오류 메세지를 표시 합니다.
  •  Creo 9.0에서는 Instructions as IpfcCopyInstructions [optional] 은 제공 하지 않습니다. Null로 입력 합니다.

Code

     Dim asynconn As New pfcls.CCpfcAsyncConnection
     Dim conn As pfcls.IpfcAsyncConnection
     Dim BaseSession As pfcls.IpfcBaseSession
     Dim model As pfcls.IpfcModel
     Dim Newmodel As pfcls.IpfcModel
     Dim ModelDescriptor As IpfcModelDescriptor
     Dim Window As pfcls.IpfcWindow
    
     Set conn = asynconn.Connect("", "", ".", 5)
     Set BaseSession = conn.Session
     Set model = BaseSession.CurrentModel
 
'// New Model Create & Open
     Set Newmodel = model.CopyAndRetrieve(NewFileName, Null)
     Set ModelDescriptor = NewModelDescriptor.CreateFromFileName(NewFileName)
     Set Window = BaseSession.OpenFile(ModelDescriptor)
     Set model = Window.model
  
'// Open 모델 활성화
     Window.Activate

다음과 같은순서로 모델을 저장 하고, Open 합니다.

  1. IpfcModel.CopyAndRetrieve() : 새로운 파일 하드 디스크와 Session에 저장 합니다.
  2. IpfcBaseSession.OpenFile() : Session에 있는 새로운 파일을 Creo에 불러옵니다. 
  3. IpfcWindow.Model :  Creo에 불러온 모델을 Window에 표시 합니다

□ Dimension Update

모델에 지정한 이름의 치수를 입력된 값으로 저장 합니다.

 

IpfcBaseDimension.DimValue 

치수의 값입니다. 모델이 완전히 재생성되면 항상 양수입니다. IpfcBaseDimension.ExtendsInNegativeDirection 속성을 사용하여 치수 방향이 피쳐 기본값과 반대 방향인지 여부를 확인합니다. 이 속성을 설정할 때 음의 값을 입력하면 치수의 방향이 반전됩니다.

Usage example code


Dim NewDimensionNameCount As Long

NewDimensionNameCount = Worksheets("Program01").Cells(13, Columns.Count).End(xlToLeft).Column
NewDimensionNameCount = NewDimensionNameCount - 3 '// "D13". "E13", "F13". . .
 
Dim Modelowner As IpfcModelItemOwner
Dim BaseDimension As IpfcBaseDimension
Dim I As Long
           
Set Modelowner = model
For I = 0 To NewDimensionNameCount - 1
   Set BaseDimension = Modelowner.GetItemByName(EpfcModelItemType.EpfcITEM_DIMENSION, Cells(13, I + 3))
   BaseDimension.DimValue = Cells(14, I + 3)
    
Next I

cell에 입력된 값을 모델에 보내는 기능 입니다.