VIZCore3D.NET Document Help

V.2.5.21.906

Major Features

  • 지정된 두 정점을 중심으로 회전 API 추가

  • 노트 텍스트 수정 UI 추가

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

  • 복수개의 노드 위치를 일괄 변경하는 API 추가

  • Body 노드의 형상(Triangle Mesh)을 추가/수정 API 추가

  • Walk Through (보행탐색) 모드에서 측정 기능 개선 - 측정 종료 후, W/T 모드로 복귀

  • Walk Through (보행탐색 / 비행탐색) 모드에서 마우스 Focus가 다른 응용프로그램으로 이동 하였을 경우에 단축키 적용되지 않도록 개선

  • 선택 상자(Selection Box) 사이즈 변경 시, Label 항상 가운데 정렬 되도록 개선

  • 바다(해양) 표현 개선 - OpenGL V.2.0 이상 환경에서 쉐이더를 활용한 기능

  • 분해된 개체가 선택되지 않는 문제 수정

  • FRAME(SHIPGRID) 파일(.dmp)의 형식이 올바르지 않은 경우에 발생되는 문제 수정

  • Web Browser 컨트롤을 호스팅한 경우에 상호동작 예제 추가

Full List

Full List of Issues Covering all Changes in this Release

Module

Summary

Category

TransformManager

지정된 두 정점을 중심으로 회전 API 추가

New Feature

NoteManager

노트 텍스트 수정 UI 추가

New Feature

StructureManager

복수개의 노드를 빠르게 생성하는 API 추가

New Feature

StructureManager

복수개의 노드 위치를 일괄 변경하는 API 추가

New Feature

MeshEditManager

Body 노드의 형상(Triangle Mesh)을 추가/수정 API 추가

New Feature

OceanManager

바다(해양) 표현 개선 - OpenGL V.2.0 이상 환경에서 쉐이더를 활용한 기능

Enhancement

-

Web Browser 컨트롤을 호스팅한 경우에 상호동작 예제 추가

New Feature

Resource

Figure 1: 지정된 두 정점을 중심으로 회전

RELEASE_2.5.001.png

    Figure 2: 노트 텍스트 수정 UI 추가

    RELEASE_2.5.002.png

      Figure 3: Web Browser 컨트롤을 호스팅한 경우에 상호동작 예제

      RELEASE_2.5.003.png

        Sample

        지정된 두 정점을 중심으로 회전 API

        // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private System.Timers.Timer timerScrew; private void Example() { timerScrew = new System.Timers.Timer(); timerScrew.Interval = 100; timerScrew.Elapsed += TimerScrew_Elapsed; AnimationScrew(true); } private List<VIZCore3D.NET.Data.Node> NODES_SCREW1 { get; set; } private List<VIZCore3D.NET.Data.Node> NODES_SCREW2 { get; set; } private float Screw_Rotate_Angle = 0; private void AnimationScrew(bool enable) { if (enable == true) { NODES_SCREW1 = vizcore3d.Object3D.Find.QuickSearch("SHIP_SCREW#1", true); NODES_SCREW2 = vizcore3d.Object3D.Find.QuickSearch("SHIP_SCREW#2", true); timerScrew.Enabled = true; } else { timerScrew.Enabled = false; } } private void TimerScrew_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { timerScrew.Enabled = false; this.Invoke(new EventHandler(delegate { RotateScrew(); })); timerScrew.Enabled = true; } private void RotateScrew() { vizcore3d.BeginUpdate(); vizcore3d.Object3D.Transform.Rotate( NODES_SCREW1 , new VIZCore3D.NET.Data.Vertex3D(-40144.21, 2159.66, -15277.70) , new VIZCore3D.NET.Data.Vertex3D(-38685.59, 2170.91, -15204.43) , Screw_Rotate_Angle % 360 , VIZCore3D.NET.Data.AngleFormat.DEGREE ); vizcore3d.Object3D.Transform.Rotate( NODES_SCREW2 , new VIZCore3D.NET.Data.Vertex3D(-40110.58, -2575.70, -15209.66) , new VIZCore3D.NET.Data.Vertex3D(-38651.92, -2564.30, -15135.98) , Screw_Rotate_Angle % 360 , VIZCore3D.NET.Data.AngleFormat.DEGREE ); Screw_Rotate_Angle += 30; vizcore3d.EndUpdate(); }

          노트 텍스트 수정 API

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

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

            // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example1() { 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.Parent = parent; item.ID = ++id; item.Kind = Data.NodeKind.PART; item.Name = string.Format("NAME_{0}", item.ID); items.Add(item); } vizcore3d.Structure.CreateNodes(items); } private void Example2() { 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 assy = new VIZCore3D.NET.Data.NewNodeItem(); int assyId = ++id; assy.Parent = parent; assy.ID = assyId; assy.Kind = Data.NodeKind.ASSEMBLY; assy.Name = string.Format("NAME_ASSY_{0}", assy.ID); items.Add(assy); { VIZCore3D.NET.Data.NewNodeItem part = new VIZCore3D.NET.Data.NewNodeItem(); int partId = ++id; part.Parent = assyId; part.ID = partId; part.Kind = Data.NodeKind.PART; part.Name = string.Format("NAME_PART_{0}", part.ID); items.Add(part); { VIZCore3D.NET.Data.NewNodeItem body = new VIZCore3D.NET.Data.NewNodeItem(); int bodyId = ++id; body.Parent = partId; body.ID = bodyId; body.Kind = Data.NodeKind.BODY; body.Name = string.Format("NAME_BODY_{0}", body.ID); items.Add(body); } } } vizcore3d.Structure.CreateNodes(items); }

              Body 노드의 형상(Triangle Mesh)을 추가/수정 API

              // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { List<int> bodies = new List<int>(); List<int> coordListNum = new List<int>(); List<VIZCore3D.NET.Data.Vertex3D> v = new List<VIZCore3D.NET.Data.Vertex3D>(); List<VIZCore3D.NET.Data.Vector3D> n = new List<VIZCore3D.NET.Data.Vector3D>(); List<float> color = new List<float>(); // 면 #1 bodies.Add(2296); // Body Index coordListNum.Add(18); // Vertex Float 총 개수 // Vertex 좌표 => Triangle Mesh 를 기반 v.Add(new VIZCore3D.NET.Data.Vertex3D(80180.00, 10600.00, 35572.12)); v.Add(new VIZCore3D.NET.Data.Vertex3D(71890.00, 10600.00, 35572.12)); v.Add(new VIZCore3D.NET.Data.Vertex3D(72324.89, 7170.00, 35645.86)); v.Add(new VIZCore3D.NET.Data.Vertex3D(72324.89, 7170.00, 35645.86)); v.Add(new VIZCore3D.NET.Data.Vertex3D(80180.00, 7170.00, 35645.86)); v.Add(new VIZCore3D.NET.Data.Vertex3D(80180.00, 10600.00, 35572.12)); // Normal 좌표 n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); // 면의 색상 설정 color.Add(1.000f); // R color.Add(1.000f); // G color.Add(0.000f); // B color.Add(1); // A // 면 #2 bodies.Add(2293); // Body Index coordListNum.Add(18); // Vertex Float 총 개수 v.Add(new VIZCore3D.NET.Data.Vertex3D(80180.00, 7170.00, 35645.86)); v.Add(new VIZCore3D.NET.Data.Vertex3D(72324.89, 7170.00, 35645.86)); v.Add(new VIZCore3D.NET.Data.Vertex3D(71890.00, 3740.00, 35719.60)); v.Add(new VIZCore3D.NET.Data.Vertex3D(71890.00, 3740.00, 35719.60)); v.Add(new VIZCore3D.NET.Data.Vertex3D(80180.00, 3740.00, 35719.60)); v.Add(new VIZCore3D.NET.Data.Vertex3D(80180.00, 7170.00, 35645.86)); n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); n.Add(new VIZCore3D.NET.Data.Vector3D(0.00, 0.00, -1.00)); color.Add(0.043f); // R color.Add(0.043f); // G color.Add(0.043f); // B color.Add(1); // A vizcore3d.MeshEdit.ChangeBodyMesh( bodies /* BODY INDEX LIST */ , v /* VERTEX LIST */ , n /* NORMAL LIST */ , color /* COLOR */ , coordListNum /* VERTEX COUNT LIST */ ); }

                바다(해양) 표현 API

                // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void ExampleAuto() { vizcore3d.View.Ocean.Enable = true; vizcore3d.View.Ocean.AutoHeight = true; } private void Example() { vizcore3d.View.Ocean.Enable = true; vizcore3d.View.Ocean.AutoHeight = false; VIZCore3D.NET.Data.BoundBox3D boundBox = vizcore3d.Model.BoundBox; vizcore3d.View.Ocean.Height = boundBox.MinZ + 10000.0f; }
                  Last modified: 03 12월 2024