VIZZARD Document Help

표면노트

표면노트 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 : 표면노트 추가 결과

VIZZARD_DEV_NOTE_02.png
    • 노트의 심볼 옵션을 설정할 경우 아래와 같이 표현됩니다.

    // 노트 스타일 설정 Connector.SetReviewItemExtStyle( surfaceNoteId , true /* 심볼 활성화 */ , item.Index.ToString() /* 심볼 텍스트 */ , FontSize.Size_14 , 15.0f /* 심볼 크기(반지름) */ , Color.Black , Color.White , true , false );

    Figure 2 : 표면노트 심볼옵션 활성화

    VIZZARD_DEV_NOTE_03.png
      • 노트 텍스트의 색상을 다양하게 지정할 수 있습니다.

      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 : 표면노트 텍스트 색상 강조

      VIZZARD_DEV_NOTE_04.png
        • 생성된 노트는 개별 혹은 전체를 삭제할 수 있습니다.

        // 생성시 반환된 Note ID로 삭제 Connector.DeleteReviewItem(surfaceNoteId); // 유형별 전체 삭제 - Surface Note Connector.DeleteReviewItemCustom(Review_Kind.RK_SURFACE_NOTE);
        Last modified: 04 3월 2024