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

IpfcView 코드 및 기능 테스트

by ToolBOX01 2023. 8. 8.
반응형

■  IpfcView 소개

Creo Parametric의 그래픽 뷰를 나타내는 인터페이스입니다. 이 인터페이스를 통해 3D 모델의 가시성, 표현 방법, 표시
설정 등을 제어할 수 있습니다. 변환 행렬은 개체의 좌표계에서 논리적 화면 좌표로의 변환을 제공합니다. 이 행렬에는 어셈블리 구성원에 대한 변환이 포함되어 있지 않습니다.

▷ IpfcView .Reset  : 기본 방향으로 뷰 변환

Dim Windows As IpfcWindow
Dim ViewOwner As IpfcViewOwner
Dim View As IpfcView

'// View 변수에 뷰 이름 정의
Set Windows = session.CurrentWindow
Set ViewOwner = model
Set View = ViewOwner.RetrieveView("DEFAULT")

'// Default View로 변환
Call View.Reset
Windows.Refresh

▷ Creo 화면

사용전전 IpfcView .Reset  사용

IpfcViewOwner.GetCurrentViewTransform()

 현재 사용자가 작업 중인 3D 뷰의 변환 행렬을 검색하는 데 사용됩니다. 이 변환 행렬은 3D 모델의 뷰를 표시하거나 조작하는 데 사용됩니다. 이 함수를 사용하여 뷰의 위치, 회전 및 축척과 관련된 정보를 얻을 수 있습니다.

현재의 X,Y,Z 위치 값을 가져오는 코드 입니다

Dim Windows As IpfcWindow
Dim ViewOwner As IpfcViewOwner
Dim Transform3D As IpfcTransform3D
Dim Point3D As IpfcPoint3D
'// X, Y, Z 값 가져오기
Dim Xpoint, Ypoint, Zpoint As Double
     
Set Windows = session.CurrentWindow
Set ViewOwner = model
Set Transform3D = ViewOwner.GetCurrentViewTransform
Set Point3D = Transform3D.GetOrigin
     
Xpoint = Point3D.Item(EpfcCoordAxis.EpfcCOORD_AXIS_X)
Ypoint = Point3D.Item(EpfcCoordAxis.EpfcCOORD_AXIS_Y)
Zpoint= Point3D.Item(EpfcCoordAxis.EpfcCOORD_AXIS_Z)

 

프로그램 실행 결과 :
모델이 회전 또는 이동을 하는 경우,  X,Y,Z 값은 변경 됩니다. 동일한 위치에서 모델 사이즈가 변경되면 X,Y,Z 값은 변경 됩니다. 하지만 Shell 명령은 삭제 해도 X,Y,Z 값은 동일 합니다. Round 값이 변하면 X,Y,Z 값은 변경 됩니다

Xpoint : 500
Ypoint : 229.898734913327
Zpoint: -1516.90472887573
Xpoint :625.922416633263
Ypoint :296.696737737071
Zpoint: -1227.03177005774

 

원점 좌표계를 변경 하는 코드

Dim Windows As IpfcWindow
Dim ViewOwner As IpfcViewOwner
Dim Transform3D As IpfcTransform3D
Dim Point3D As IpfcPoint3D
Dim newc As New CpfcPoint3D     
Dim X0move, Y0move, Z0move As Double
     
Set Windows = session.CurrentWindow
Set ViewOwner = model
Set Transform3D = ViewOwner.GetCurrentViewTransform
Set Point3D = Transform3D.GetOrigin
     
X0move = Point3D.Item(EpfcCoordAxis.EpfcCOORD_AXIS_X)
Y0move = Point3D.Item(EpfcCoordAxis.EpfcCOORD_AXIS_Y)
Z0move = Point3D.Item(EpfcCoordAxis.EpfcCOORD_AXIS_Z)
          
X0move = X0move + 100
Y0move = Y0move + 100
Z0move = Z0move + 100
    
Call newc.Set(0, X0move)
Call newc.Set(1, Y0move)
Call newc.Set(2, Z0move)
     
Call Transform3D.SetOrigin(newc)

▷ IpfcView . Transform

Creo Parametric에서 뷰(view)는 3D 모델의 특정 시점에서의 모습을 나타내며, 뷰의 위치, 방향 및 확대/축소 수준을 정의하는 변환 정보를 포함합니다. IpfcView.Transform 속성을 통해 해당 뷰의 변환 정보를 가져오거나 설정할 수 있습니다.

IpfcView.Transform은  입력한 뷰로 이동후 X,Y,Z 값을 표시 합니다. 만일 뷰 이름이 다르면 뷰 마다 X,Y,Z 값이 다릅니다

Dim Windows As IpfcWindow
Dim ViewOwner As IpfcViewOwner
Dim View As IpfcView
Dim Transform3D As IpfcTransform3D
Dim Point3D As IpfcPoint3D
              
Set Windows = session.CurrentWindow
Set ViewOwner = model
Set View = ViewOwner.RetrieveView("DEFAULT")
Set Transform3D = View.Transform

'// 좌표계의 원점을 나타내는 점을 검색합니다.
Set Point3D = Transform3D.GetOrigin
     
MsgBox Point3D.Item(EpfcCoordAxis.EpfcCOORD_AXIS_X)
MsgBox Point3D.Item(EpfcCoordAxis.EpfcCOORD_AXIS_Y)
MsgBox Point3D.Item(EpfcCoordAxis.EpfcCOORD_AXIS_Z)

 


영업 문의 : lionkk@idt21c.com