본문으로 건너뛰기

GetSymbolAnchorPosition

public Vertex3D GetSymbolAnchorPosition(int instanceIndex, AnchorPoint anchor)

배치된 Symbol 인스턴스의 AnchorPoint(정규화 H,V) 월드 위치 반환.

Remarks​

AnchorPoint 는 심볼 영역의 정규화 위치(Horizontal 0=Left..1=Right, Vertical 0=Top..1=Bottom)이며,
심볼의 회전이 반영된 실제 월드 좌표를 반환한다.
잘못된 index 이거나 아직 화면에 렌더링되지 않은 경우 null 반환.

Parameters​

NameTypeDescription
instanceIndexint배치 인스턴스 인덱스
anchorAnchorPoint정규화 anchor (Horizontal 0=Left..1=Right, Vertical 0=Top..1=Bottom)

Returns​

TypeDescription
Vertex3Danchor 지점의 월드 좌표. 해석 불가 시 null.

Examples​

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example()
{
// [전제] 화면에 배치된 Symbol 이 1개 이상 필요(정의 로드 + 배치 선행). 없으면(0) 중단.
if (vizcore3d.Review.Symbol.GetPlacedSymbolCount() == 0) return;

// AnchorPoint 는 Symbol 경계상자의 정규화 위치(H,V 각 0~1).
// H: 0=Left, 0.5=Center, 1=Right / V: 0=Top, 0.5=Middle, 1=Bottom
// 즉 BottomLeft=(0,1) 은 좌하단 모서리. 회전된 심볼이면 심볼 자체 방향 기준 계산.
// 첫 번째(index 0) 배치 Symbol 의 좌하단 Anchor 월드 좌표:
VIZCore3D.NET.Data.Vertex3D bl =
vizcore3d.Review.Symbol.GetSymbolAnchorPosition(0, VIZCore3D.NET.Data.AnchorPoint.BottomLeft);

// 모서리 4개 + 변 중점 4개 + 중심 1개, 총 9개 지점은 AnchorPoint.Grid(3,3) 으로 일괄 획득.
VIZCore3D.NET.Data.AnchorPoint[] grid = VIZCore3D.NET.Data.AnchorPoint.Grid(3, 3);
foreach (VIZCore3D.NET.Data.AnchorPoint a in grid)
{
VIZCore3D.NET.Data.Vertex3D p = vizcore3d.Review.Symbol.GetSymbolAnchorPosition(0, a);
if (p != null)
System.Diagnostics.Trace.WriteLine(string.Format(
"anchor(H={0}, V={1}) -> 월드({2},{3},{4})", a.Horizontal, a.Vertical, p.X, p.Y, p.Z));
}
}