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

Coordinate Systems and Transformations

by ToolBOX01 2023. 1. 13.
반응형

Coordinate Systems : VB API 에서 액세스할 수 있는 Creo의 다양한 좌표계 있습니다.

■ Solid Coordinate System

- 솔리드 좌표계는 Creo Parametric 솔리드 모델 의 형상을 설명하는 데 사용되는 3차원 데카르트 좌표계 입니다.
- 부품에서 솔리드 좌표계는 표면과 모서리의 형상을 설명
- 셈블리에서 솔리드 좌표계는 어셈블리 멤버의 위치와 방향도 설명

 >> 데카르트 좌표계
 - 3D에서 많이 사용하는 방법은 위(up) 방향으로  Y축을 지정하고, Z축을 시선 방향, X축을 좌우 방향으로 쓰는 것이다.
이렇게 Y축을 위 방향으로 사용하는 소프트웨어나 라이브러리로는 DirectX , OpenGL , 유니티를 들 수 있다. 이들은 Z축으로 시선 방향을 결정한다는 공통점도 있다.  . . . . 

 

23. 3D 좌표계 (3D coordinate system)

안녕하세요. 2018년 (무려 4년전.. )에 연재한 상상하는 게임 수학에 설명한 내용을 모아 책으로 발간했습...

blog.naver.com

 

>> 행렬과 벡터

 

행렬과 벡터의 정의

행렬(matrix)과 벡터(vector)는 많은 양의 데이터와 함수 등을 간결하고 체계적으로 표현해 주는 수학적 도구다. 행렬은 함수나 숫자를 직사각형 형태로 배치하고 대괄호(또는 소괄호)로 묶은 배열

pasus.tistory.com

 

■ Screen Coordinate System

- 화면 좌표계는 Creo Parametric 창의 위치를 ​​설명하는 2차원 좌표계입니다.
-모든 모델은 먼저 화면 좌표계에 매핑됩니다. 사용자가 보기를 확대/축소하거나 이동하면 화면 좌표계가 솔리드 표시를
  따르므로 솔리드의 특정 지점은 항상 동일한 화면 좌표에 매핑됩니다.
- 화면 좌표는 일부 그래픽 메서드, 마우스 입력 메서드 및 그래픽을 그리거나 드로잉의 항목을 조작하는 모든 메서드에서 사용됩니다.

 

■ Window Coordinate System

- 모델을 화면 좌표계에 매핑한 후 화면 해상도에 따라 화면 픽셀에 그려지기 전에 창 좌표에 매핑됩니다.
- 줌 (확대/축소) 및 이동을 고려해야 하는 경우에만 창 좌표가 필요합니다. 

■ Drawing Coordinate System

- 드로잉 좌표계는 아래쪽 왼쪽 모서리를 기준으로 드로잉의 위치를 ​​설명하고 드로잉 단위로 측정되는 2차원 시스템
- 예를 들어, 인치를 사용하는 US 레터 크기의 가로 형식 드로잉 시트에서 위쪽 오른쪽 모서리는 드로잉 좌표에서 (11, 8.5)
  입니다.

■ Drawing View Coordinate System

- 도면 뷰에서 엔티티의 위치를 ​​설명하는 데 사용됩니다.

■ Assembly Coordinate System

 - 어셈블리에는 멤버 부품, 서브어셈블리 및 어셈블리에서 생성된 데이텀 피쳐의 형상의 위치와 방향을 설명하는 자체
    좌표계가 있습니다.
- 어셈블리가 메모리로 검색되면 각 멤버도 로드되고 고유한 솔리드 좌표계를 계속 사용하여 해당 형상을 설명합니다.
  서브어셈블리의 형상을 분석하고 상위 어셈블리의 좌표계를 기준으로 결과를 추출하거나 표시하려는 경우에 중요

■ Datum Coordinate System

- 좌표계 데이텀은 모든 부품 또는 어셈블리에서 생성할 수 있으며 사용자 정의 좌표계를 나타냅니다.

■ Section Coordinate System

- 모든 스케치에는 해당 스케치에서 엔티티를 찾는 데 사용되는 좌표계가 있습니다. 피쳐에 사용된 스케치는 솔리드 모델과 다른 좌표계를 사용합니다.


Transformations

모든 좌표계는 마치 3차원인 것처럼 VB API 에서 처리됩니다. 따라서 모든 좌표계의 점은 항상 IpfcPoint3D 클래스로 표시됩니다. 벡터는 동일한 데이터를 저장하지만 명확성을 위해 IpfcVector3D 클래스로 표시됩니다.

>> 좌표계 변환 

 

좌표변환 (Coordinate Transformations)

개요 (Introduction) 본 글에서는 좌표변환(coordinate transformation)을 다음 순서대로 다루게 된다: (i...

blog.naver.com

 

두 좌표계 간의 변환은 IpfcTransform3D 클래스로 표현됩니다. 이 클래스에는 두 시스템의 상대적 방향을 설명하는 기존의 3x3 행렬과 두 시스템 사이의 이동을 설명하는 벡터를 결합하는 4x4 행렬이 포함되어 있습니다. 변환에 사용되는 4x4 행렬은 다음과 같습니다.

 

>> 두점 사이의 거리 구하기

VB API 는 좌표 변환을 수행하기 위한 두 가지 유틸리티를 제공합니다.
1)
IpfcTransform3D.TransformPoint() 메서드 는 3차원 점을 변환
2)  IpfcTransform3D.TransformVector() 는 3차원 벡터를 변환

 

ToolBOX WEB 개발때, 프로그램 개발자 특정 이름의 좌표계를 기준으로, 사용자가 선택한 평면위에 있는 원형 커브의 중심(Hole의 중심축)의 위치를 검색 하고, 테이블로 만드는 기능을 개발한 적이 있습니다.  "Coordinate Systems and Transformations"  함수를 이용하여 구현 하였습니다.

■ Transforming to Screen Coordinates

  • IpfcView.Transform
  • IpfcView.Rotate()
  • IpfcViewOwner.GetCurrentViewTransform()
  • IpfcViewOwner.SetCurrentViewTransform()
  • IpfcViewOwner.CurrentViewRotate()
  • IpfcTransform3D.Invert()

Transforming to Coordinate System Datum Coordinates

  • IpfcCoordSystem.CoordSys

Transforming Window Coordinates

  • IpfcWindow.ScreenTransform
  • IpfcScreenTransform.PanX
  • IpfcScreenTransform.PanY
  • IpfcScreenTransform.Zoom

Transforming Coordinates of an Assembly Member

  • IpfcComponentPath.GetTransform()