표면노트
표면노트 API 예제
표면노트는 뷰어상의 고정된 위치에 노트를 생성하며, 모델과 노트 텍스트 상의 지시선이 연결되어 있는 형태입니다.
// 모델 열린 상태 확인
if (Connector.IsOpenDocument() == false) return;
// 전체 노드 정보 조회
List<NodeVO> items = Connector.GetAllObjects();
// 화면 렌더링 차단
Connector.EnableRender(false);
// 기본 리뷰 옵션 설정
ReviewOptionVO option = Connector.GetReviewOption();
option.ArrowColor = Color.Red;
Connector.SetReviewOption(option);
foreach (NodeVO item in items)
{
// 최하위 노드 제외
if (item.NodeType == NodeType.PART) continue;
// 자식 노드가 없는 노드 제외
if (item.ChildCount == 0) continue;
// 최하위 노드의 바로 상위 노드가 아닌 경우 제외
List<NodeVO> children = Connector.GetChildObjects(item.Index, ChildrenTypes.Children);
if (children[0].NodeType != NodeType.PART) continue;
// 표면점 검색
float[] surfacePoint = Connector.GetPointOnModelNearByCOG(new int[] { item.Index });
// 노트 생성
int surfaceNoteId = Connector.AddSurfaceNoteCustom(
string.Format("NAME {0}", item.Index)
, surfacePoint[0] /* Position X */
, surfacePoint[1] /* Position Y */
, surfacePoint[2] /* Position Z */
, surfacePoint[0] /* Text X */
, surfacePoint[1] - 1000 /* Text Y */
, surfacePoint[2] + 1000 /* Text Z */
);
// 노트 스타일 설정 (기본 옵션과 다르게 지정해야 하는 경우)
Connector.SetReviewItemExtStyle(
surfaceNoteId
, false
, String.Empty
, FontSize.Size_14
, 0.0f
, Color.Black
, Color.White
, true
, false
);
}
// 화면 렌더링 차단해제
Connector.EnableRender(true);
Figure 1 : 표면노트 추가 결과
노트의 심볼 옵션을 설정할 경우 아래와 같이 표현됩니다.
// 노트 스타일 설정
Connector.SetReviewItemExtStyle(
surfaceNoteId
, true /* 심볼 활성화 */
, item.Index.ToString() /* 심볼 텍스트 */
, FontSize.Size_14
, 15.0f /* 심볼 크기(반지름) */
, Color.Black
, Color.White
, true
, false
);
Figure 2 : 표면노트 심볼옵션 활성화
노트 텍스트의 색상을 다양하게 지정할 수 있습니다.
foreach (NodeVO item in items)
{
// 최하위 노드 제외
if (item.NodeType == NodeType.PART) continue;
// 자식 노드가 없는 노드 제외
if (item.ChildCount == 0) continue;
// 최하위 노드의 바로 상위 노드가 아닌 경우 제외
List<NodeVO> children = Connector.GetChildObjects(item.Index, ChildrenTypes.Children);
if (children[0].NodeType != NodeType.PART) continue;
// 표면점 검색
float[] surfacePoint = Connector.GetPointOnModelNearByCOG(new int[] { item.Index });
string noteText = "<fa style=\"color:rgb(45,31,255)\">WORK ITEM #1</fa>\r\n";
noteText += "<fa style=\"color:rgb(255,0,0)\">WORK ITEM #2</fa>\r\n\r\n";
noteText += "<fa style=\"color:rgb(45,100,255)\">번호</fa> : 1\r\n";
noteText += "<fa style=\"color:rgb(100,31,255)\">부재명</fa> : DA-001\r\n";
noteText += "<fa style=\"color:rgb(45,31,100)\">착수일</fa> : 2019-04-11\r\n";
noteText += "<fa style=\"color:rgb(90,90,255)\">완료일</fa> : 2019-04-12\r\n";
// 노트 생성
int surfaceNoteId = Connector.AddSurfaceNoteCustom(
noteText
, surfacePoint[0] /* Position X */
, surfacePoint[1] /* Position Y */
, surfacePoint[2] /* Position Z */
, surfacePoint[0] /* Text X */
, surfacePoint[1] - 1000 /* Text Y */
, surfacePoint[2] + 1000 /* Text Z */
);
// 노트 스타일 설정
Connector.SetReviewItemExtStyle(
surfaceNoteId
, true /* 심볼 활성화 */
, item.Index.ToString() /* 심볼 텍스트 */
, FontSize.Size_14
, 15.0f /* 심볼 크기(반지름) */
, Color.Black
, Color.White
, true
, false
);
}
Figure 3 : 표면노트 텍스트 색상 강조
생성된 노트는 개별 혹은 전체를 삭제할 수 있습니다.
// 생성시 반환된 Note ID로 삭제
Connector.DeleteReviewItem(surfaceNoteId);
// 유형별 전체 삭제 - Surface Note
Connector.DeleteReviewItemCustom(Review_Kind.RK_SURFACE_NOTE);
Last modified: 04 3월 2024