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
| Name | Type | Description |
|---|---|---|
| instanceIndex | int | 배치 인스턴스 인덱스 |
| anchor | AnchorPoint | 정규화 anchor (Horizontal 0=Left..1=Right, Vertical 0=Top..1=Bottom) |
Returns
| Type | Description |
|---|---|
| Vertex3D | anchor 지점의 월드 좌표. 해석 불가 시 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));
}
}