VIZCore3D.NET Document Help

V.2.6.22.203

Major Features

  • 노트(3D/2D/SURFACE) 텍스트 Context Menu에서 수정하는 기능 추가

  • 노드 복사 기능 추가

  • 현재 모델의 Max 노드 아이디 값 반환 API 추가

  • Body 유형의 노드를 모델 트리에서 조회 여부 설정 API 추가

  • 뷰 영역에 포함된 개체 선택 API 추가

  • 뷰 영역에 포함된 개체 반환 API 추가

  • 뷰 화면 기준축 회전 API 추가

  • 키보드 숫자패드로 카메라 이동 기능 단축키 추가

    • - ISO+ : Num5

    • - X+ : Num3

    • - X- : Num1

    • - Y+ : Num4

    • - Y- : Num6

    • - Z+ : Num8

    • - Z- : Num2

  • 복수개의 노드를 이동하는 기능 추가

  • 모델 파일(*.viz) 단위 공간검색 속도 개선

  • 프레임(SHIPGRID) 조회 상태에서 모델 삭제 시, 프레임 렌더링이 갱신 안되는 문제 수정

  • 프레임(SHIPGRID) 강제로 다시 그리기 API 추가

  • UDA (User-Defined Attribute) 제거 기능 추가

  • 리뷰 정보(노트, 측정, 사용자뷰[관측점]) JSON (JavaScript Object Notation) 형식으로 내보내기 API 추가

  • 3D 모델(*.viz)을 OBJ 형식으로 내보내기 내장 다이얼로그 실행 API 추가

  • Body 노드의 정점 정보 반환 API 추가

  • Body 노드의 정점 정보 변경 API 추가

  • 노드의 정점 정보 반환 API 추가

  • 노드의 정점별 색상 반환 및 설정 API 추가

  • 리뷰정보(노트, 측정)가 화면에 수 백개 이상 표시되는 상태에서 렌더링 속도 개선

  • 모델트리 보이기/숨기기 API 변경

  • VIZ 파일의 일부 노드를 개별 파일로 내보내기 API 추가

  • 모델 간소화 기능 내장 다이얼로그 추가

  • 신규로 생성한 노드에 VIZ 파일 혹은 노드경로를 설정하는 API 추가

  • Indexed Triangle Set 기반 Body 노드 및 Mesh 생성 API 추가

  • Vertex3D Constructor Overloading

  • 복수개의 노드를 생성하는 API 추가

  • 화면 표시 텍스트 그림자 기능 활성화/비활성화 옵션 API 추가

  • 영역으로 개체 선택 시, 카메라에서 가까운 모델만 선택 옵션 추가

  • 지정된 노드간 최단거리 반환 API 추가

  • 조회중인 노트의 스크린 좌표계 기준 위치 정보 갱신 API 추가

  • 노트정보의 스크린 좌표계 기준 위치 정보 반환 속성 추가

  • 노트정보의 스크린 좌표계 기반 크기 정보 속성 추가

  • 화면에 겹쳐져 표시되는 노트 검색 API 추가

  • 노드의 정점정보를 화면 좌표계 형식으로 반환 API 추가

  • 사용자 정의형 마우스 이벤트 정보 설정 API 추가

  • StreamData Constructor Overloading

  • 모델 열기 시, StreamData 형식 지원

  • 투영 면적 기능 API 추가

  • Xray 모드에서 커스텀 선택 상태 항목 반환 API 추가

Full List

Full List of Issues Covering all Changes in this Release

Module

Summary

Category

NoteManager

노트(3D/2D/SURFACE) 텍스트 Context Menu에서 수정하는 기능 추가

New Feature

StructureManager


Object3DManager

노드 복사 기능 추가

New Feature

StructureManager

현재 모델의 Max 노드 아이디 값 반환 API 추가

New Feature

ModelManager

Body 유형의 노드를 모델 트리에서 조회 여부 설정 API 추가

New Feature

Object3DManager

뷰 영역에 포함된 개체 선택 API

New Feature

Object3DManager

뷰 영역에 포함된 개체 반환 API

New Feature

ViewManager

뷰 화면 기준축 회전 API

New Feature

StructureManager

복수개의 노드를 이동하는 기능 API 추가

New Feature

SpaceSearchManager

모델 파일(*.viz) 단위 공간검색 속도 개선

https://github.com/softhills3d/VIZCore3D.NET/tree/master/WinForms/VIZCore3D.NET.SpaceSearch

Enhancement

FrameManager

프레임(SHIPGRID) 조회 상태에서 모델 삭제 시, 프레임 렌더링이 갱신 안되는 문제 수정

Bug

FrameManager

프레임(SHIPGRID) 강제로 다시 그리기 API

New Feature

UDAManager

UDA (User-Defined Attribute) 제거 API 추가

New Feature

UserViewManager

사용자뷰(관측점) JSON (JavaScript Object Notation) 형식으로 내보내기 API

New Feature

NoteManager

노트정보 JSON (JavaScript Object Notation) 형식으로 내보내기 API

New Feature

MeasureManager

측정정보 JSON (JavaScript Object Notation) 형식으로 내보내기 API

New Feature

ModelManager

3D 모델(*.viz)을 OBJ 형식으로 내보내기 내장 다이얼로그 실행 API

New Feature

MeshEditManager

Body 노드의 정점 정보 반환 API

New Feature

MeshEditManager

Body 노드의 정점 정보 변경 API

New Feature

MeshEditManager

노드의 정점 정보 반환 API

New Feature

VertexColorManager

노드의 정점별 색상 반환 및 설정 API

New Feature

VIZCore3DControl

모델트리 보이기/숨기기 API 변경

New Feature

ModelManager

VIZ 파일의 일부 노드를 개별 파일로 내보내기 API

New Feature

ModelManager

모델 간소화 기능 내장 다이얼로그 조회 API

New Feature

StructureManager

신규로 생성한 노드에 VIZ 파일 혹은 노드경로를 설정하는 API

New Feature

MeshEditManager

Indexed Triangle Set 기반 Body 노드 및 Mesh 생성 API

New Feature

Vertex3D

Vertex3D Constructor Overloading

New Feature

MeshEditManager

복수개의 노드를 생성하는 API

New Feature

MessageManager

화면 표시 텍스트 그림자 기능 활성화/비활성화 옵션 API

New Feature

ViewManager

영역으로 개체 선택 시, 카메라에서 가까운 모델만 선택 옵션 API

New Feature

GeometryUtilityManager

지정된 노드간 최단거리 반환 API

New Feature

NoteManager

조회중인 노트의 스크린 좌표계 기준 위치 정보 갱신 API

New Feature

NoteItem

노트정보의 스크린 좌표계 기준 위치 정보 반환 속성

New Feature

NoteItem

노트정보의 스크린 좌표계 기반 크기 정보 속성

New Feature

NoteManager

화면에 겹쳐져 표시되는 노트 검색 API

New Feature

MeshEditManager

노드의 정점정보를 화면 좌표계 형식으로 반환 API

New Feature

ViewManager

사용자 정의형 마우스 이벤트 정보 설정 API

New Feature

StreamData

StreamData Constructor Overloading

New Feature

ModelManager

모델 열기 시, StreamData 형식 지원

New Feature

MeasureManager

투영 면적 기능 API

New Feature

XRayManager

Xray 모드에서 커스텀 선택 상태 항목 반환 API

New Feature

Resource

Figure 1 : 노트(3D/2D/SURFACE) 텍스트 Context Menu에서 수정

RELEASE_2.6.001.png

    Figure 2 : Body 유형의 노드를 모델 트리에서 조회

    RELEASE_2.6.002.png

      Figure 3 : 키보드 숫자패드로 카메라 이동 기능 단축키

      RELEASE_2.6.003.png

        Figure 4 : 복수개의 노드를 이동하는 기능

        RELEASE_2.6.004.png

          Figure 5 : 모델 간소화 기능 내장 다이얼로그 화면

          RELEASE_2.6.005.png

            Figure 6 : 신규로 생성한 노드에 VIZ 파일 혹은 노드경로를 설정

            RELEASE_2.6.006.png

              Figure 7 : UDA(User-Defined Attribute) 삭제 및 전체 초기화

              RELEASE_2.6.007.png

                Figure 8 : 영역으로 개체 선택 시, 카메라에서 가까운 모델만 선택 옵션

                RELEASE_2.6.008.png

                  Figure 9 : 투영 면적 측정 기능

                  RELEASE_2.6.009.png

                    Sample

                    노트(3D/2D/SURFACE) 텍스트 수정 예제 코드

                    // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { List<Data.NoteItem> notes = vizcore3d.Review.Note.GetSelectedItems(); if (notes.Count == 0) return; bool result = vizcore3d.Review.Note.EditNoteTextDialog(notes[0]); }

                      노드 복사 예제 코드

                      // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { List<VIZCore3D.NET.Data.Node> selectedItems = vizcore3d.Object3D.FromFilter(VIZCore3D.NET.Data.Object3dFilter.SELECTED_PART); Dictionary<int, int> items = vizcore3d.Object3D.CopyNodes(selectedItems); if (items.Count == 0) { MessageBox.Show("Node is null.", "VIZCore3D.NET", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } foreach (KeyValuePair<int, int> item in items) { VIZCore3D.NET.Data.Node source = vizcore3d.Object3D.FromIndex(item.Key); VIZCore3D.NET.Data.Node target = vizcore3d.Object3D.FromIndex(item.Value); MessageBox.Show( string.Format( "{0} - {1}, {2} / {3}" , item.Key , item.Value , source.NodeName , target.NodeName ) , "VIZCore3D.NET" , MessageBoxButtons.OK , MessageBoxIcon.Information ); } }

                        현재 모델의 Max 노드 아이디 값 반환 예제

                        // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { int id = vizcore3d.Structure.GetMaxId(); int parent = vizcore3d.Object3D.FromFilter(VIZCore3D.NET.Data.Object3dFilter.SELECTED_TOP)[0].ID; List<VIZCore3D.NET.Data.NewNodeItem> items = new List<VIZCore3D.NET.Data.NewNodeItem>(); for (int i = 0; i < 100; i++) { VIZCore3D.NET.Data.NewNodeItem item = new VIZCore3D.NET.Data.NewNodeItem(); item.ParentId = parent; item.ID = ++id; item.Kind = Data.NodeKind.PART; item.Name = string.Format("NAME_{0}", item.ID); items.Add(item); } vizcore3d.Structure.CreateNodes(items); }

                          Body 유형의 노드를 모델 트리에서 조회 전환 API 예제

                          // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { vizcore3d.Model.EnableBody = !vizcore3d.Model.EnableBody; }

                            뷰 영역에 포함된 개체 선택 API 예제

                            // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { System.Drawing.Size size = vizcore3d.View.Size; vizcore3d.Object3D.Select( 0 /* X1 */ , 0 /* Y1 */ , size.Width /* X2 */ , size.Height /* Y2 */ , true /* Full Contain */ ); }

                              뷰 영역에 포함된 개체 반환 API 예제 코드

                              // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { System.Drawing.Size size = vizcore3d.View.Size; List<VIZCore3D.NET.Data.Node> nodes = vizcore3d.Object3D.FromScreen( 0 /* X1 */ , 0 /* Y1 */ , size.Width /* X2 */ , size.Height /* Y2 */ , true /* Full Contain */ , VIZCore3D.NET.Data.LeafNodeKind.PART ); }

                                프레임(SHIPGRID) 강제로 다시 그리기 API 예제 코드

                                // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { // ... vizcore3d.Frame.ReDraw(); // ... }

                                  UDA (User-Defined Attribute) 특정 키 제거 기능 API 예제

                                  // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { List<string> keys = vizcore3d.Object3D.UDA.Keys; if (keys.Contains("OWNER") == false) return; vizcore3d.Object3D.UDA.Remove("OWNER"); }

                                    UDA (User-Defined Attribute) 전체 제거 기능 API 예제

                                    // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { List<string> keys = vizcore3d.Object3D.UDA.Keys; if (keys.Count == 0) return; vizcore3d.Object3D.UDA.Clear(); vizcore3d.Model.SaveAsVIZ("C:\\Export\\Model.viz"); }

                                      3D 모델(*.viz)을 OBJ 형식으로 내보내기 내장 다이얼로그 실행 API

                                      // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { if (vizcore3d.Model.IsOpen() == false) return; vizcore3d.Model.ExportObjDialog(); }

                                        Body 노드의 정점 정보 반환 및 변경 API 예제

                                        // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { vizcore3d.BeginUpdate(); List<int> bodies = new List<int>(); bodies.Add(1234); for( int j = 0; j < bodies.Count; j++) { int bodyIndex = bodies[j]; //Get Vertices Info List<VIZCore3D.NET.Data.BodyVertexData> safeData = vizcore3d.MeshEdit.GetBodyVertices(bodyIndex); // Vertex Postition Move for(int i = 0; i < safeData.Count; i++) { safeData[i].Vertex.X += 1000; } vizcore3d.MeshEdit.SetBodyVertices( bodyIndex /* body index */ , safeData /* Vertex Info */ , false); /* RebuildData */ } vizcore3d.Structure.RebuildData(); vizcore3d.EndUpdate(); }

                                          노드의 정점별 색상 반환 및 설정 API 예제

                                          // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { List<VIZCore3D.NET.Data.Node> nodes = vizcore3d.Object3D.FromFilter(VIZCore3D.NET.Data.Object3dFilter.SELECTED_TOP); if (nodes.Count == 0) return; if (nodes[0].Kind != Data.NodeKind.PART) return; int vertexCount = vizcore3d.View.VertexColor.GetColor(nodes[0].Index).Count; List<System.Drawing.Color> vertexColor = new List<System.Drawing.Color>(); VIZCore3D.NET.Utility.ColorBrewerPalettesHelper palettes = new VIZCore3D.NET.Utility.ColorBrewerPalettesHelper(); palettes.SetPalette(VIZCore3D.NET.Utility.ColorBrewerPalettesHelper.Kind.Sequential_BuPu); for (int i = 0; i < vertexCount; i++) { vertexColor.Add(palettes.GetPaletteColor(i)); } vizcore3d.View.VertexColor.SetColor(nodes[0].Index, vertexColor); vizcore3d.View.VertexColor.Enable = true; }

                                            모델트리 보이기/숨기기 API

                                            // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { if (vizcore3d.ModelTreeVisible == true) vizcore3d.ModelTreeVisible = false; else vizcore3d.ModelTreeVisible = true; }

                                              VIZ 파일의 일부 노드를 개별 파일로 내보내기 API 예제

                                              // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { // INPUT OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "VIZ File (*.viz)|*.viz"; if (dlg.ShowDialog() != DialogResult.OK) return; // OUTPUT DIR. FolderBrowserDialog output = new FolderBrowserDialog(); output.SelectedPath = System.IO.Path.GetDirectoryName(dlg.FileName); if (output.ShowDialog() != DialogResult.OK) return; List<int> id = new List<int>(); // Load Structure VIZCore3D.NET.ShdCore.StructureManager stru = new VIZCore3D.NET.ShdCore.StructureManager(dlg.FileName); // All Node List<VIZCore3D.NET.ShdCore.ModelTreeNode> nodes = stru.GetStructureNodeList(); // Find Node foreach (VIZCore3D.NET.ShdCore.ModelTreeNode node in nodes) { if (node.NodeName.Contains("PIPE") == false) continue; id.Add(Convert.ToInt32(node.EntityId)); } if (id.Count == 0) return; // Export vizcore3d.Model.ExportNodes( dlg.FileName /* INPUT (VIZ) */ , output.SelectedPath /* OUTPUT DIR. */ , id /* NODE ID */ ); }

                                                모델 간소화 기능 내장 다이얼로그 실행 API 예제

                                                // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { vizcore3d.Model.ShowSimplifyModelDialog(); }

                                                  Indexed Triangle Set 기반 Body 노드 및 Mesh 생성 API 예제

                                                  // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { List<VIZCore3D.NET.Data.Vertex3D> vertex = new List<VIZCore3D.NET.Data.Vertex3D>(); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10038.2,625.271,78.4744", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10747.5,756.496,61.8669", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10760.3,1173.48,95.4053", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10053.5,1041.09,120.353", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10776.2,1589.36,139.724", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10739.2,338.476,43.4698", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("11458.6,894.856,54.662", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("11468.3,1310.5,77.7027", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("11481.7,1725.16,113.435", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10026.7,208.265,49.24", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10071.5,1455.76,171.596", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10794.8,2004.11,192.801", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("11497.9,2138.79,158.744", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("11454.8,478.525,51.4998", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12172.1,1042.43,61.3912", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12177.6,1453.5,70.0816", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12187.9,1863.81,95.5308", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12201.5,2273.19,131.999", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10091.8,1869.28,230.621", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10814.7,2404.83,251.046", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("11515.5,2527.9,209.065", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12216.3,2650.99,173.324", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12174.3,631.647,78.2015", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12889.2,1200.86,87.6251", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12888.9,1603.23,77.2856", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12895.1,2005.58,88.8058", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12905.4,2407.21,114.339", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12917.4,2774.57,146.338", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10113.9,2281.79,295.9", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10836.2,2804.71,314.347", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("11534.8,2916.1,265.425", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12233,3027.94,221.182", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12931.4,3141.18,185.339", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12898.1,800.474,127.375", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("13609.5,1371.06,137.372", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("13602.9,1760.09,105.93", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("13603.6,2150.42,99.1407", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("13609.6,2540.63,110.399", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("13618.1,2899.07,130.799", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("13629.1,3256.87,159.586", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10137.2,2693.52,365.472", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10858.7,3203.92,381.421", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("11555.5,3303.53,326.428", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12251.3,3404.1,274.378", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12947.1,3507.09,229.887", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("13641.9,3614.06,194.596", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("13625.7,986.4,201.333", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("14331.3,1551.23,208.892", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("14318.2,1922.86,155.707", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("14313,2297.56,129.368", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("14313.9,2673.22,123.582", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("14318.6,3024.71,131.266", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("14326,3375.83,148.117", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("14335.7,3726.45,172.714", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10161.6,3104.58,438.571", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10882.1,3602.59,451.315", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("11577,3690.42,390.45", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12270.9,3779.56,331.923", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("12964.2,3872.33,279.206", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("13656.4,3970.58,235.326", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("14347.3,4076.5,203.753", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("14354.7,1186.9,296.893", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15052.5,1737.13,297.751", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15033.4,2088.98,224.861", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15022.4,2445.77,179.06", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15017.8,2804.85,155.099", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15018.1,3151.52,148.05", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15021.7,3498.23,152.145", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15028.1,3844.67,165.523", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15036.4,4190.74,185.632", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15081.4,1394.58,403.978", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15770.2,1922.95,393.072", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15746.5,2255.1,304.961", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15730.5,2593.56,242.862", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15720.9,2935.57,202.418", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15716.5,3279.3,179.318", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15716.1,3623.71,169.899", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15718.7,3968.26,170.533", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("10186.5,3515.33,513.253", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15723.8,4312.66,179.583", ",")); vertex.Add(new VIZCore3D.NET.Data.Vertex3D("15802.6,1600.73,510.322", ",")); List<VIZCore3D.NET.Data.TriangleIndex> triangleIndex = new List<VIZCore3D.NET.Data.TriangleIndex>(); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(0, 1, 2)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(3, 2, 4)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(1, 5, 6)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(1, 2, 7)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(1, 6, 7)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(2, 4, 8)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(2, 7, 8)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(9, 0, 1)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(0, 3, 2)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(9, 1, 5)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(10, 4, 11)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(4, 11, 12)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(4, 8, 12)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(6, 13, 14)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(6, 7, 15)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(6, 14, 15)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(7, 8, 16)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(7, 15, 16)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(8, 12, 17)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(8, 16, 17)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(3, 10, 4)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(5, 6, 13)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(18, 11, 19)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(11, 19, 20)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(11, 12, 20)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(12, 20, 21)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(12, 17, 21)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(14, 22, 23)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(14, 15, 24)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(14, 23, 24)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(15, 16, 25)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(15, 24, 25)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(16, 17, 26)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(16, 25, 26)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(17, 21, 27)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(17, 26, 27)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(10, 18, 11)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(13, 14, 22)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(28, 19, 29)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(19, 29, 30)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(19, 20, 30)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(20, 30, 31)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(20, 21, 31)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(21, 31, 32)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(21, 27, 32)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(23, 33, 34)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(23, 24, 35)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(23, 34, 35)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(24, 25, 36)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(24, 35, 36)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(25, 26, 37)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(25, 36, 37)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(26, 27, 38)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(26, 37, 38)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(27, 32, 39)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(27, 38, 39)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(18, 28, 19)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(22, 23, 33)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(40, 29, 41)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(29, 41, 42)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(29, 30, 42)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(30, 42, 43)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(30, 31, 43)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(31, 43, 44)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(31, 32, 44)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(32, 44, 45)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(32, 39, 45)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(34, 46, 47)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(34, 35, 48)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(34, 47, 48)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(35, 36, 49)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(35, 48, 49)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(36, 37, 50)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(36, 49, 50)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(37, 38, 51)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(37, 50, 51)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(38, 39, 52)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(38, 51, 52)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(39, 45, 53)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(39, 52, 53)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(28, 40, 29)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(33, 34, 46)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(54, 41, 55)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(41, 42, 56)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(42, 43, 57)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(43, 44, 58)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(44, 45, 59)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(45, 53, 60)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(47, 61, 62)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(47, 48, 63)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(47, 62, 63)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(48, 49, 64)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(48, 63, 64)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(49, 50, 65)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(49, 64, 65)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(50, 51, 66)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(50, 65, 66)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(51, 52, 67)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(51, 66, 67)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(52, 53, 68)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(52, 67, 68)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(53, 68, 69)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(40, 54, 41)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(41, 55, 56)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(42, 56, 57)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(43, 57, 58)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(44, 58, 59)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(45, 59, 60)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(46, 47, 61)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(53, 60, 69)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(62, 70, 71)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(62, 63, 72)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(63, 64, 73)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(64, 65, 74)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(65, 66, 75)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(66, 67, 76)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(67, 68, 77)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(54, 78, 55)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(61, 62, 70)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(68, 69, 79)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(62, 71, 72)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(63, 72, 73)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(64, 73, 74)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(65, 74, 75)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(66, 75, 76)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(67, 76, 77)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(68, 77, 79)); triangleIndex.Add(new VIZCore3D.NET.Data.TriangleIndex(70, 71, 80)); vizcore3d.BeginUpdate(); int rootIndex = vizcore3d.Model.NewEmptyModel("MODEL"); string assemblyName = "ASSEMBLY"; VIZCore3D.NET.Data.Node assemblyNode = vizcore3d.Structure.CreateNode( rootIndex /* Parent Node Index */ , VIZCore3D.NET.Data.NodeKind.ASSEMBLY /* Node Kind */ , assemblyName /* Node Name */ ); string partName = "PART"; VIZCore3D.NET.Data.Node partNode = vizcore3d.Structure.CreateNode( assemblyNode.Index /* Parent Node Index */ , VIZCore3D.NET.Data.NodeKind.PART /* Node Kind */ , partName /* Node Name */ ); vizcore3d.MeshEdit.CreateBodyWithIndexedTriangleSet( partNode.Index , "BODY" , vertex , triangleIndex , Color.Yellow ); vizcore3d.EndUpdate(); vizcore3d.View.ResetView(); }

                                                    Vertex3D Constructor Overloading

                                                    // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { string str = "100,200,300"; VIZCore3D.NET.Data.Vertex3D v = new VIZCore3D.NET.Data.Vertex3D(str, ","); }

                                                      복수개의 노드를 생성하는 API 예제

                                                      // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { int id = vizcore3d.MeshEdit.GetMaxId(); int parent = vizcore3d.Object3D.FromFilter(VIZCore3D.NET.Data.Object3dFilter.SELECTED_TOP)[0].ID; List<VIZCore3D.NET.Data.NewNodeItem> items = new List<VIZCore3D.NET.Data.NewNodeItem>(); for (int i = 0; i < 100; i++) { VIZCore3D.NET.Data.NewNodeItem item = new VIZCore3D.NET.Data.NewNodeItem(); item.Parent = parent; item.ID = ++id; item.Kind = Data.NodeKind.PART; item.Name = string.Format("NAME_{0}", item.ID); items.Add(item); } vizcore3d.MeshEdit.CreateNodes(items); }

                                                        화면 표시 텍스트 그림자 기능 활성화/비활성화 옵션 API

                                                        // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { vizcore3d.View.Message.Show( VIZCore3D.NET.Data.MessageId.ID_01 , "TEXT" , 10 , 20 , false ); }

                                                          영역으로 개체 선택 시, 카메라에서 가까운 모델만 선택 옵션 API

                                                          // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { vizcore3d.View.EnableBoxSelectionFrontObjectOnly = !vizcore3d.View.EnableBoxSelectionFrontObjectOnly; }

                                                            화면에 겹쳐져 표시되는 노트 검색 API

                                                            // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { if (vizcore3d.Model.IsOpen() == false) return; if (vizcore3d.Review.Note.Items.Count == 0) return; // 겹쳐진 노트 항목 검색 bool result = vizcore3d.Review.Note.FindOverlappingItems(true); // 겹쳐진 노트 항목이 없음 if (result == false) { foreach (VIZCore3D.NET.Data.NoteItem item in vizcore3d.Review.Note.Items) { VIZCore3D.NET.Data.NoteStyle style = vizcore3d.Review.Note.GetStyle(item.ID); style.BackgroundColor = Color.Yellow; vizcore3d.Review.Note.SetStyle(item.ID, style); } return; } vizcore3d.BeginUpdate(); foreach (VIZCore3D.NET.Data.NoteItem item in vizcore3d.Review.Note.Items) { VIZCore3D.NET.Data.NoteStyle style = vizcore3d.Review.Note.GetStyle(item.ID); // 현재 노트와 겹쳐진 노트가 없음 if (item.OverlappingItems.Count == 0) { style.BackgroundColor = Color.Yellow; } // 현재 노트와 겹쳐진 노트가 있음 else { // 겹쳐진 노트의 아이디가 현재보다 클 경우, // 나중에 생성된 노트이고, // 현재 노트보다 위에 그려짐. if (item.ID < item.OverlappingItems[0]) { style.BackgroundColor = Color.Red; } else { style.BackgroundColor = Color.White; } } vizcore3d.Review.Note.SetStyle(item.ID, style); } vizcore3d.EndUpdate(); }
                                                              Last modified: 13 1월 2025