VIZCore3D.NET Document Help

V.2.0.20.1027

Major Features

  • VIZ 파일의 열기/추가 가능한 버전은 V.304로 업그레이드. 저장 버전은 기존과 동일하게 V.303 유지

  • 선택 개체 숨기기 단축키(~) 동작을 Toggle 형식으로 변경 (※ 단축키는 API 및 설정 메뉴에서 변경 가능)

  • 툴바에 일부 메뉴 상태 표시 - Projection(원근/평행), Navigation(Pan, Rotate, Orbit, Walk, Fly), Xray, Shader Options, Screen Items...

  • 모델 열기(혹은 추가) 시, 노드 병합 규칙 설정/해제 메뉴(GUI-Toolbar) 및 API 추가

  • 모델 내보내기 메뉴 추가

  • 모델 구조 내보내기 메뉴 추가

  • 노트(표면, 2D, 3D) 생성 및 가시화 시 사용되는 메모리 최적화 - 이전 버전 대비 사용되는 메모리량 감소

  • 3D 공간 좌표를 2D 화면 좌표로 변환 API 추가

  • KeyUp 이벤트 추가

  • 개체 선택 이전 이벤트 추가

  • 부재 표면의 Normal Vector 반환 API 추가

  • 모델 기본 색상 관리 기능 추가

  • 개체 이동/회전 핸들 기능(표준, 축 이동, 축 회전, 평행면 이동) 옵션 추가

  • 빈(Empty) 모델 생성 기능 추가

  • 노드 생성 기능 추가

  • 노드에 Body(형상 집합체) 생성 기능 추가

  • 노드 및 Body(형상 집합체) 이동 기능 추가

  • Body(형상 집합체) 노드 생성 시, Mesh 형식으로 형상 생성 기능 추가

  • Body 노드에 Pyramid Primitive 생성 (혹은 추가) 기능 추가

  • Body 노드에 Box(Cube) Primitive 생성 (혹은 추가) 기능 추가

  • Body 노드에 Rectangular Torus Primitive 생성 (혹은 추가) 기능 추가

  • Body 노드에 Circular Torus Primitive 생성 (혹은 추가) 기능 추가

  • Body 노드에 Dish Primitive 생성 (혹은 추가) 기능 추가

  • Body 노드에 Spherical Cap Primitive 생성 (혹은 추가) 기능 추가

  • Body 노드에 Cone Primitive 생성 (혹은 추가) 기능 추가

  • Body 노드에 Cylinder Primitive 생성 (혹은 추가) 기능 추가

  • Body 노드에 Sphere Primitive 생성 (혹은 추가) 기능 추가

  • 그룹 간섭검사 수행 시, 그룹 대상이 1:N 관계일 경우 발생하는 오류 수정

  • 개체의 모서리 정보 반환(GetEdgeVertex) API 오류 수정

  • Osnap 표시 시, Surface (or Circle) 만 활성화된 경우 비정상 동작 수정

Full List

Full List of Issues Covering all Changes in this Release

Module

Summary

Category

ModelManager

CAD(REV/RVM) 모델 파일을 열기(혹은 추가) 시, 특정 노드 하위의 구조를 병합 하는 규칙(Rule) 설정(해제) API 추가

New Feature

ViewManager

3D 공간 좌표를 2D 화면 좌표로 변환 API 추가

New Feature

VIZCore3DControl

KeyUp 이벤트 추가

New Feature

Object3DManager

개체 선택 이전 이벤트 추가


용도 : 개체가 선택 상태로 변경되기 이전에 조건을 체크해서 선택 가능 여부를 판단하고 선택취소 여부를 지정 할 수 있음.

New Feature

ViewManager

부재 표면의 Normal Vector 반환 API 추가. 2D 화면(Screen) 좌표 기반 연산이며, 화면에 보이지 않는 부재의 경우 계산되지 않음.

New Feature

ColorManager

모델 기본 색상 관리 기능 추가


용도 : 모델이 단색(예: 회색) 이고, 한시적으로 유형별 색상을 적용하고, 색상 초기화 기능을 호출하더라도 초기 모델 색상(예: 회색)이 아닌, 관리되는 기본 색상으로 초기화

New Feature

TransformManager

개체 이동/회전 핸들 기능(표준, 축 이동, 축 회전, 평행면 이동) 옵션 추가


용도 : 특정 기능만 수행이 필요한 경우, 핸들의 모드를 설정하여 오동작을 방지

New Feature

ModelManager

빈(Empty) 모델 생성 기능 추가


용도 : API를 통한 노드 및 형상 생성 기능 사용 시, 빈(Empty) 모델을 생성 후 수행하거나, 기존 열린 모델에 추가

New Feature

StructureManager

빈(Empty) 모델 상태 혹은 모델이 열린 상태에서 API를 활용하여 Node 생성 기능 추가


용도 : 새로운 노드를 생성하여 신규 구조를 생성하거나, 재구성할 수 있음.

New Feature

StructureManager

노드에 Body(형상 집합체) 생성 기능 추가 : 기존 노드 혹은 신규 노드에 새로운 형상(Triangle Mesh or Primitive) 추가를 위한 노드 생성

New Feature

StructureManager

노드 및 Body(형상 집합체) 이동 기능 추가

New Feature

MeshEditManager

Body(형상 집합체) 노드 생성 시, Mesh 형식으로 형상 생성 기능 추가

New Feature

MeshEditManager

Body 노드에 Pyramid Primitive 생성 (혹은 추가) 기능 추가

New Feature

MeshEditManager

Body 노드에 Box(Cube) Primitive 생성 (혹은 추가) 기능 추가

New Feature

MeshEditManager

Body 노드에 Rectangular Torus Primitive 생성 (혹은 추가) 기능 추가

New Feature

MeshEditManager

Body 노드에 Circular Torus Primitive 생성 (혹은 추가) 기능 추가

New Feature

MeshEditManager

Body 노드에 Dish Primitive 생성 (혹은 추가) 기능 추가

New Feature

MeshEditManager

Body 노드에 Spherical Cap Primitive 생성 (혹은 추가) 기능 추가

New Feature

MeshEditManager

Body 노드에 Cone Primitive 생성 (혹은 추가) 기능 추가

New Feature

MeshEditManager

Body 노드에 Cylinder Primitive 생성 (혹은 추가) 기능 추가

New Feature

MeshEditManager

Body 노드에 Sphere Primitive 생성 (혹은 추가) 기능 추가

New Feature

Object3DManager

개체의 모서리 정보 반환 시 발생되는 문제점 수정

Bug

GeometryUtilityManager

Osnap 표시 시, Surface (or Circle) 만 활성화된 경우 비정상 동작 수정

Bug

Resource

Figure 1 : CAD 모델 노드 병합 결과

VIZCore3D.NET.MergeRule_001.png

    Figure 2 : CAD 모델 노드 병합 메뉴

    VIZCore3D.NET.MergeRule_002.png

      Figure 3 : 모델 내보내기 메뉴 및 다이얼로그

      VIZCore3D.NET.Export_001.png

        Figure 4 : 모델 구조 내보내기 메뉴 및 다이얼로그 (목록 혹은 구조 형태)

        VIZCore3D.NET.Export_002.png

          Figure 5 : 개체 이동/회전 핸들 기능 옵션

          RELEASE_VIZCore3D.NET.Handle.001.png

            Figure 6 : 빈(Empty) 모델 생성

            RELEASE_VIZCore3D.NET.Model.001.png

              Figure 7 : Primitive 형상 생성 지원 유형

              RELEASE_VIZCore3D.NET.Primitive.1000.png

                Sample

                CAD 모델 열기(추가) 시, 노드 병합 규칙 설정/해제

                // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { string rulePath = "C:\Rule.xml"; string modelPath = "C:\Model.rvm"; vizcore3d.Model.SetMergeNodeRuleFile(rulePath); vizcore3d.Model.Open(modelPath); vizcore3d.Model.ClearMergeNodeRuleFile(); }

                  KeyUp 이벤트 추가

                  // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { vizcore3d.OnVIZCore3DKeyUp += VIZCore3D_OnVIZCore3DKeyUp; } private void VIZCore3D_OnVIZCore3DKeyUp(object sender, Event.EventManager.VIZCoreKeyUpEventArgs e) { if(e.KeyCode == Keys.A) { // Control Key is Pressed if(e.Ctrl == true) { } // Alt Key is Pressed if(e.Alt == true) { } // Shift Key is Pressed if(e.Shift == true) { } } }

                    개체 선택 이전 이벤트 추가

                    // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { vizcore3d.Object3D.OnObject3DSelecting += Object3D_OnObject3DSelecting; } private void Object3D_OnObject3DSelecting(object sender, Event.EventManager.Object3DSelectingEventArgs e) { // 선택된 모델 이름에 "PIPE" 이름이 포함된 경우에 if(e.Node.NodeName.Contains("PIPE") == true) { // 선택 가능 e.Cancel = false; } else { // 선택 취소 e.Cancel = true; } }

                      개체 이동/회전 핸들 기능(표준, 축 이동, 축 회전, 평행면 이동) 옵션 설정

                      // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { if (vizcore3d.Model.IsOpen() == false) return; if (vizcore3d.Object3D.FromFilter(VIZCore3D.NET.Data.Object3dFilter.SELECTED_TOP, false).Count == 0) return; // Default vizcore3d.Object3D.Transform.EnableHandle = true; } private void Example1() { if (vizcore3d.Model.IsOpen() == false) return; if (vizcore3d.Object3D.FromFilter(VIZCore3D.NET.Data.Object3dFilter.SELECTED_TOP, false).Count == 0) return; // 축 기준 이동 vizcore3d.Object3D.Transform.HandleMode = VIZCore3D.NET.Manager.TransformManager.HandleModes.MoveByAxis; vizcore3d.Object3D.Transform.EnableHandle = true; } private void Example2() { if (vizcore3d.Model.IsOpen() == false) return; if (vizcore3d.Object3D.FromFilter(VIZCore3D.NET.Data.Object3dFilter.SELECTED_TOP, false).Count == 0) return; // 평행면 이동 vizcore3d.Object3D.Transform.HandleMode = VIZCore3D.NET.Manager.TransformManager.HandleModes.MoveByPlane; vizcore3d.Object3D.Transform.EnableHandle = true; } private void Example3() { if (vizcore3d.Model.IsOpen() == false) return; if (vizcore3d.Object3D.FromFilter(VIZCore3D.NET.Data.Object3dFilter.SELECTED_TOP, false).Count == 0) return; // 축 기준 회전 vizcore3d.Object3D.Transform.HandleMode = VIZCore3D.NET.Manager.TransformManager.HandleModes.RotateByAxis; vizcore3d.Object3D.Transform.EnableHandle = true; }

                        빈(Empty) 모델 생성 기능

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

                          Node 및 Body 생성

                          // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { // New Empty Model int index = vizcore3d.Model.NewEmptyModel("MODEL"); string assemblyName = "ASSEMBLY"; VIZCore3D.NET.Data.Node assemblyNode = vizcore3d.Structure.CreateNode( index /* 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 */ ); string bodyName = "BODY"; int bodyId = vizcore3d.Structure.CreateBody( partNode.Index /* Parent Node Index */ , bodyName /* Node Name */ ); }

                            Node 및 Body 생성 시, Mesh 형식으로 형상 추가

                            // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { string assemblyName = string.Format("Assembly #{0}", vizcore3d.Object3D.GetNodeCount()); VIZCore3D.NET.Data.Node assembly = vizcore3d.MeshEdit.CreateNode(0, VIZCore3D.NET.Data.NodeKind.ASSEMBLY, assemblyName); if (assembly == null) return; string partName = string.Format("Part #{0}", vizcore3d.Object3D.GetNodeCount()); VIZCore3D.NET.Data.Node part = vizcore3d.MeshEdit.CreateNode(assembly.Index, VIZCore3D.NET.Data.NodeKind.PART, partName); if (part == null) return; string bodyName = string.Format("Body #{0}", vizcore3d.Object3D.GetNodeCount()); List<VIZCore3D.NET.Data.Vertex3D> coords = new List<VIZCore3D.NET.Data.Vertex3D>(); List<VIZCore3D.NET.Data.Vertex3D> normals = new List<VIZCore3D.NET.Data.Vertex3D>(); coords.Add(new Data.Vertex3D(0.0, 0.0, 0.0)); coords.Add(new Data.Vertex3D(1000.0, 1000.0, 0.0)); coords.Add(new Data.Vertex3D(1000.0, 0.0, 0.0)); coords.Add(new Data.Vertex3D(0.0, 0.0, 0.0)); coords.Add(new Data.Vertex3D(0.0, 1000.0, 0.0)); coords.Add(new Data.Vertex3D(1000.0, 1000.0, 0.0)); coords.Add(new Data.Vertex3D(0.0, 0.0, 0.0)); coords.Add(new Data.Vertex3D(0.0, 1000.0, 1000.0)); coords.Add(new Data.Vertex3D(0.0, 1000.0, 0.0)); coords.Add(new Data.Vertex3D(0.0, 0.0, 0.0)); coords.Add(new Data.Vertex3D(0.0, 0.0, 1000.0)); coords.Add(new Data.Vertex3D(0.0, 1000.0, 1000.0)); coords.Add(new Data.Vertex3D(0.0, 1000.0, 0.0)); coords.Add(new Data.Vertex3D(1000.0, 1000.0, 1000.0)); coords.Add(new Data.Vertex3D(1000.0, 1000.0, 0.0)); coords.Add(new Data.Vertex3D(0.0, 1000.0, 0.0)); coords.Add(new Data.Vertex3D(0.0, 1000.0, 1000.0)); coords.Add(new Data.Vertex3D(1000.0, 1000.0, 1000.0)); coords.Add(new Data.Vertex3D(1000.0, 0.0, 0.0)); coords.Add(new Data.Vertex3D(1000.0, 1000.0, 0.0)); coords.Add(new Data.Vertex3D(1000.0, 1000.0, 1000.0)); coords.Add(new Data.Vertex3D(1000.0, 0.0, 0.0)); coords.Add(new Data.Vertex3D(1000.0, 1000.0, 1000.0)); coords.Add(new Data.Vertex3D(1000.0, 0.0, 1000.0)); coords.Add(new Data.Vertex3D(0.0, 0.0, 0.0)); coords.Add(new Data.Vertex3D(1000.0, 0.0, 0.0)); coords.Add(new Data.Vertex3D(1000.0, 0.0, 1000.0)); coords.Add(new Data.Vertex3D(0.0, 0.0, 0.0)); coords.Add(new Data.Vertex3D(1000.0, 0.0, 1000.0)); coords.Add(new Data.Vertex3D(0.0, 0.0, 1000.0)); coords.Add(new Data.Vertex3D(0.0, 0.0, 1000.0)); coords.Add(new Data.Vertex3D(1000.0, 0.0, 1000.0)); coords.Add(new Data.Vertex3D(1000.0, 1000.0, 1000.0)); coords.Add(new Data.Vertex3D(0.0, 0.0, 1000.0)); coords.Add(new Data.Vertex3D(1000.0, 1000.0, 1000.0)); coords.Add(new Data.Vertex3D(0.0, 1000.0, 1000.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, -1.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, -1.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, -1.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, -1.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, -1.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, -1.0)); normals.Add(new Data.Vertex3D(-1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(-1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(-1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(-1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(-1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(-1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, 1.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, 1.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, 1.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, 1.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, 1.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, 1.0, 0.0)); normals.Add(new Data.Vertex3D(1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(1.0, 0.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, -1.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, -1.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, -1.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, -1.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, -1.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, -1.0, 0.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, 1.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, 1.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, 1.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, 1.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, 1.0)); normals.Add(new Data.Vertex3D(0.0, 0.0, 1.0)); int id = vizcore3d.MeshEdit.CreateBodyWithMesh(part.Index, bodyName, coords, normals, Color.Orange); if (id == -1) MessageBox.Show("NG", "VIZCore3D.NET", MessageBoxButtons.OK, MessageBoxIcon.Error); else MessageBox.Show(string.Format("Body ID : {0}", id), "VIZCore3D.NET", MessageBoxButtons.OK, MessageBoxIcon.Information); }

                              Body 노드에 Pyramid Primitive 생성 (혹은 추가) 기능 추가

                              // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { // New Empty Model int index = vizcore3d.Model.NewEmptyModel("MODEL"); string assemblyName = "ASSEMBLY"; VIZCore3D.NET.Data.Node assemblyNode = vizcore3d.Structure.CreateNode( index /* 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 */ ); string bodyName = "BODY"; int bodyId = vizcore3d.Structure.CreateBody( partNode.Index /* Parent Node Index */ , bodyName /* Node Name */ ); int bodyIndex = vizcore3d.Object3D.GetBodyIndex(bodyId); { SizeF bottom = new SizeF(30, 40); SizeF top = new SizeF(10, 20); SizeF offset = new SizeF(2.5f, 4.5f); float height = 50; VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D(); matrix.Matrix[0] = 1.0f; matrix.Matrix[1] = 0.0f; matrix.Matrix[2] = 0.0f; matrix.Matrix[3] = 0.0f; matrix.Matrix[4] = 1.0f; matrix.Matrix[5] = 0.0f; matrix.Matrix[6] = 0.0f; matrix.Matrix[7] = 0.0f; matrix.Matrix[8] = 1.0f; matrix.Matrix[9] = 0.0f; matrix.Matrix[10] = 0.0f; matrix.Matrix[11] = 0.0f; vizcore3d.MeshEdit.AddPrimitivePyramid( bodyIndex /* Body Node Index */ , bottom /* Bottom Of Size */ , top /* Top Of Size */ , offset /* Offset Of Size */ , height /* Height */ , matrix /* Matrix */ , Color.Green /* Color */ , 1 /* System Type */ , false /* Rebuild Data */ ); } vizcore3d.Structure.RebuildData(); }

                                Body 노드에 Box(Cube) Primitive 생성 (혹은 추가) 기능 추가

                                // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { // New Empty Model int index = vizcore3d.Model.NewEmptyModel("MODEL"); string assemblyName = "ASSEMBLY"; VIZCore3D.NET.Data.Node assemblyNode = vizcore3d.Structure.CreateNode( index /* 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 */ ); string bodyName = "BODY"; int bodyId = vizcore3d.Structure.CreateBody( partNode.Index /* Parent Node Index */ , bodyName /* Node Name */ ); int bodyIndex = vizcore3d.Object3D.GetBodyIndex(bodyId); { List<float> length = new List<float>() { 1000.0f, 2000.0f, 3000.0f }; VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D(); matrix.Matrix[0] = 1.0f; matrix.Matrix[1] = 0.0f; matrix.Matrix[2] = 0.0f; matrix.Matrix[3] = 0.0f; matrix.Matrix[4] = 1.0f; matrix.Matrix[5] = 0.0f; matrix.Matrix[6] = 0.0f; matrix.Matrix[7] = 0.0f; matrix.Matrix[8] = 1.0f; matrix.Matrix[9] = 0.0f; matrix.Matrix[10] = 0.0f; matrix.Matrix[11] = 0.0f; vizcore3d.MeshEdit.AddPrimitiveBox( bodyIndex /* Body Node Index */ , length /* Length */ , matrix /* Matrix */ , Color.Orange /* Color */ , 1.0f /* Scale */ , false /* Rebuild Data */ ); } vizcore3d.Structure.RebuildData(); }

                                  Body 노드에 Rectangular Torus Primitive 생성 (혹은 추가) 기능 추가

                                  // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; public void Example() { // New Empty Model int index = vizcore3d.Model.NewEmptyModel("MODEL"); string assemblyName = "ASSEMBLY"; VIZCore3D.NET.Data.Node assemblyNode = vizcore3d.Structure.CreateNode( index /* 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 */ ); string bodyName = "BODY"; int bodyId = vizcore3d.Structure.CreateBody( partNode.Index /* Parent Node Index */ , bodyName /* Node Name */ ); int bodyIndex = vizcore3d.Object3D.GetBodyIndex(bodyId); { List<float> radius = new List<float>(); radius.Add(10); // Inside Radius radius.Add(20); // Outside Radius float height = 15; float angle = 90; // Degree int numSection = 4; //int numSection = Convert.ToInt32(angle / 10); //int numSection = Convert.ToInt32(angle / 15); //int numSection = Convert.ToInt32(angle); VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D(); matrix.Matrix[0] = 1.0f; matrix.Matrix[1] = 0.0f; matrix.Matrix[2] = 0.0f; matrix.Matrix[3] = 0.0f; matrix.Matrix[4] = 1.0f; matrix.Matrix[5] = 0.0f; matrix.Matrix[6] = 0.0f; matrix.Matrix[7] = 0.0f; matrix.Matrix[8] = 1.0f; matrix.Matrix[9] = 0.0f; matrix.Matrix[10] = 0.0f; matrix.Matrix[11] = 0.0f; vizcore3d.MeshEdit.AddPrimitiveRectangularTorus( bodyIndex /* Body Node Index */ , radius /* Radius */ , height /* Height */ , angle /* Angle */ , matrix /* Matrix */ , Color.Green /* Color */ , numSection /* Number Of Section */ , 4 /* Number of Side (4) */ , 1.0f /* Unit Scale (1.0f) */ , 0 /* Detail Level (0) */ , false /* Rebuild Data */ ); } vizcore3d.Structure.RebuildData(); }

                                    Body 노드에 Circular Torus Primitive 생성 (혹은 추가) 기능 추가

                                    // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; public void Example() { // New Empty Model int index = vizcore3d.Model.NewEmptyModel("MODEL"); string assemblyName = "ASSEMBLY"; VIZCore3D.NET.Data.Node assemblyNode = vizcore3d.Structure.CreateNode( index /* 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 */ ); string bodyName = "BODY"; int bodyId = vizcore3d.Structure.CreateBody( partNode.Index /* Parent Node Index */ , bodyName /* Node Name */ ); int bodyIndex = vizcore3d.Object3D.GetBodyIndex(bodyId); { List<float> radius = new List<float>(); radius.Add(10); // Inside Radius radius.Add(20); // Outside Radius float angle = 90f; // Degree int numberSide = 12; // Default(12). 6 ~ 36 int numberSection = 10; //int numberSection = Convert.ToInt32(angle / 10); //int numberSection = Convert.ToInt32(angle / 15); //int numberSection = Convert.ToInt32(angle); VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D(); matrix.Matrix[0] = 1.0f; matrix.Matrix[1] = 0.0f; matrix.Matrix[2] = 0.0f; matrix.Matrix[3] = 0.0f; matrix.Matrix[4] = 1.0f; matrix.Matrix[5] = 0.0f; matrix.Matrix[6] = 0.0f; matrix.Matrix[7] = 0.0f; matrix.Matrix[8] = 1.0f; matrix.Matrix[9] = 0.0f; matrix.Matrix[10] = 0.0f; matrix.Matrix[11] = 0.0f; vizcore3d.MeshEdit.AddPrimitiveCircularTorus( bodyIndex /* Body Node Index */ , radius /* Radius */ , angle /* Angle */ , numberSide /* Number of Side (12). 6~36 */ , numberSection /* Number Of Section */ , matrix /* Matrix */ , Color.Green /* Color */ , false /* Rebuild Data */ ); } vizcore3d.Structure.RebuildData(); }

                                      Body 노드에 Dish Primitive 생성 (혹은 추가) 기능 추가

                                      // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; public void Example() { // New Empty Model int index = vizcore3d.Model.NewEmptyModel("MODEL"); string assemblyName = "ASSEMBLY"; VIZCore3D.NET.Data.Node assemblyNode = vizcore3d.Structure.CreateNode( index /* 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 */ ); string bodyName = "BODY"; int bodyId = vizcore3d.Structure.CreateBody( partNode.Index /* Parent Node Index */ , bodyName /* Node Name */ ); int bodyIndex = vizcore3d.Object3D.GetBodyIndex(bodyId); { int numberSide = 12; int numberSlice = 12; List<float> radius = new List<float>(); radius.Add(20); // Bottom Radius radius.Add(10); // Top Radius VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D(); matrix.Matrix[0] = 1.0f; matrix.Matrix[1] = 0.0f; matrix.Matrix[2] = 0.0f; matrix.Matrix[3] = 0.0f; matrix.Matrix[4] = 1.0f; matrix.Matrix[5] = 0.0f; matrix.Matrix[6] = 0.0f; matrix.Matrix[7] = 0.0f; matrix.Matrix[8] = 1.0f; matrix.Matrix[9] = 0.0f; matrix.Matrix[10] = 0.0f; matrix.Matrix[11] = 0.0f; vizcore3d.MeshEdit.AddPrimitiveDish( bodyIndex /* Body Node Index */ , radius /* Radius */ , numberSide /* Number of Side */ , numberSlice /* Number Of Slice */ , matrix /* Matrix */ , Color.Green /* Color */ , false /* Rebuild Data */ ); } vizcore3d.Structure.RebuildData(); }

                                        Body 노드에 Spherical Cap Primitive 생성 (혹은 추가) 기능 추가

                                        // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; public void Example() { // New Empty Model int index = vizcore3d.Model.NewEmptyModel("MODEL"); string assemblyName = "ASSEMBLY"; VIZCore3D.NET.Data.Node assemblyNode = vizcore3d.Structure.CreateNode( index /* 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 */ ); string bodyName = "BODY"; int bodyId = vizcore3d.Structure.CreateBody( partNode.Index /* Parent Node Index */ , bodyName /* Node Name */ ); int bodyIndex = vizcore3d.Object3D.GetBodyIndex(bodyId); { float radius = 29.0f; float height = 6.0f; int numberSide = 12; int numberSection = 12; VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D(); matrix.Matrix[0] = 1.0f; matrix.Matrix[1] = 0.0f; matrix.Matrix[2] = 0.0f; matrix.Matrix[3] = 0.0f; matrix.Matrix[4] = 1.0f; matrix.Matrix[5] = 0.0f; matrix.Matrix[6] = 0.0f; matrix.Matrix[7] = 0.0f; matrix.Matrix[8] = 1.0f; matrix.Matrix[9] = 0.0f; matrix.Matrix[10] = 0.0f; matrix.Matrix[11] = 0.0f; vizcore3d.MeshEdit.AddPrimitiveSphericalCap( bodyIndex /* Body Node Index */ , radius /* Radius */ , height /* Height */ , numberSide /* Number of Side */ , numberSection /* Number Of Section */ , matrix /* Matrix */ , Color.Green /* Color */ , false /* Rebuild Data */ ); } vizcore3d.Structure.RebuildData(); }

                                          Body 노드에 Cone Primitive 생성 (혹은 추가) 기능 추가

                                          // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; public void Example() { // New Empty Model int index = vizcore3d.Model.NewEmptyModel("MODEL"); string assemblyName = "ASSEMBLY"; VIZCore3D.NET.Data.Node assemblyNode = vizcore3d.Structure.CreateNode( index /* 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 */ ); string bodyName = "BODY"; int bodyId = vizcore3d.Structure.CreateBody( partNode.Index /* Parent Node Index */ , bodyName /* Node Name */ ); int bodyIndex = vizcore3d.Object3D.GetBodyIndex(bodyId); { /* Radius : Top[0], Bottom[1] */ List<float> radius = new List<float>() { 1000.0f, 1000.0f }; VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D(); matrix.Matrix[0] = 1.0f; matrix.Matrix[1] = 0.0f; matrix.Matrix[2] = 0.0f; matrix.Matrix[3] = 0.0f; matrix.Matrix[4] = 1.0f; matrix.Matrix[5] = 0.0f; matrix.Matrix[6] = 0.0f; matrix.Matrix[7] = 0.0f; matrix.Matrix[8] = 1.0f; matrix.Matrix[9] = 1000.0f; matrix.Matrix[10] = 1000.0f; matrix.Matrix[11] = 2000.0f; vizcore3d.MeshEdit.AddPrimitiveCone( bodyIndex /* Body Node Index */ , radius /* Radius */ , 2000.0f /* Height */ , matrix /* Matrix */ , Color.Blue /* Color */ , 12 /* Side Count */ , 1.0f /* Scale */ , 1 /* System Type */ , false /* Rebuild Data */ ); } vizcore3d.Structure.RebuildData(); }

                                            Body 노드에 Cylinder Primitive 생성 (혹은 추가) 기능 추가

                                            // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; public void Example() { // New Empty Model int index = vizcore3d.Model.NewEmptyModel("MODEL"); string assemblyName = "ASSEMBLY"; VIZCore3D.NET.Data.Node assemblyNode = vizcore3d.Structure.CreateNode( index /* 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 */ ); string bodyName = "BODY"; int bodyId = vizcore3d.Structure.CreateBody( partNode.Index /* Parent Node Index */ , bodyName /* Node Name */ ); int bodyIndex = vizcore3d.Object3D.GetBodyIndex(bodyId); { float radius = 1000.0f; float height = 2000.0f; int sideCount = 12; VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D(); matrix.Matrix[0] = 1.0f; matrix.Matrix[1] = 0.0f; matrix.Matrix[2] = 0.0f; matrix.Matrix[3] = 0.0f; matrix.Matrix[4] = 1.0f; matrix.Matrix[5] = 0.0f; matrix.Matrix[6] = 0.0f; matrix.Matrix[7] = 0.0f; matrix.Matrix[8] = 1.0f; matrix.Matrix[9] = 0.0f; matrix.Matrix[10] = 0.0f; matrix.Matrix[11] = 0.0f; vizcore3d.MeshEdit.AddPrimitiveCylinder( bodyIndex /* Body Node Index */ , radius /* Radius */ , height /* Height */ , matrix /* Matrix */ , Color.Green /* Color */ , sideCount , false /* Rebuild Data */ ); } { VIZCore3D.NET.Data.Vertex3D start = new VIZCore3D.NET.Data.Vertex3D(1000.0f, 1000.0f, 1000.0f); VIZCore3D.NET.Data.Vertex3D end = new VIZCore3D.NET.Data.Vertex3D(0.0f, 0.0f, 0.0f); float radius = 500.0f; int id = vizcore3d.MeshEdit.AddPrimitiveCylinder( bodyIndex /* Body Node Index */ , start /* Radius */ , end /* Height */ , radius /* Radius */ , Color.Orange /* Color */ , 12 /* Side Count */ , false /* Rebuild Data */ ); } vizcore3d.Structure.RebuildData(); }

                                              Body 노드에 Sphere Primitive 생성 (혹은 추가) 기능 추가

                                              // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; public void Example() { // New Empty Model int index = vizcore3d.Model.NewEmptyModel("MODEL"); string assemblyName = "ASSEMBLY"; VIZCore3D.NET.Data.Node assemblyNode = vizcore3d.Structure.CreateNode( index /* 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 */ ); string bodyName = "BODY"; int bodyId = vizcore3d.Structure.CreateBody( partNode.Index /* Parent Node Index */ , bodyName /* Node Name */ ); int bodyIndex = vizcore3d.Object3D.GetBodyIndex(bodyId); { VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D(); matrix.Matrix[0] = 1.0f; matrix.Matrix[1] = 0.0f; matrix.Matrix[2] = 0.0f; matrix.Matrix[3] = 0.0f; matrix.Matrix[4] = 1.0f; matrix.Matrix[5] = 0.0f; matrix.Matrix[6] = 0.0f; matrix.Matrix[7] = 0.0f; matrix.Matrix[8] = 1.0f; matrix.Matrix[9] = 0.0f; matrix.Matrix[10] = 0.0f; matrix.Matrix[11] = 0.0f; vizcore3d.MeshEdit.AddPrimitiveSphere( bodyIndex /* Body Node Index */ , 100.0f /* Radius */ , matrix /* Matrix */ , Color.Green /* Color */ , 1 /* Detail Level */ , false /* Rebuild Data */ ); } vizcore3d.Structure.RebuildData(); }
                                                Last modified: 03 12월 2024