본문으로 건너뛰기

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

ModuleSummaryCategory
ModelManagerCAD(REV/RVM) 모델 파일을 열기(혹은 추가) 시, 특정 노드 하위의 구조를 병합 하는 규칙(Rule) 설정(해제) API 추가
• ModelManager.SetMergeNodeRuleFile(String)
• ModelManager.ClearMergeNodeRuleFile()
New Feature
ViewManager3D 공간 좌표를 2D 화면 좌표로 변환 API 추가
• ViewManager.WorldToScreen
New Feature
VIZCore3DControlKeyUp 이벤트 추가
• VIZCore3DControl.OnVIZCore3DKeyUp
New Feature
Object3DManager개체 선택 이전 이벤트 추가
용도 : 개체가 선택 상태로 변경되기 이전에 조건을 체크해서 선택 가능 여부를 판단하고 선택취소 여부를 지정 할 수 있음.
• Object3DManager.OnObject3DSelecting
New Feature
ViewManager부재 표면의 Normal Vector 반환 API 추가. 2D 화면(Screen) 좌표 기반 연산이며, 화면에 보이지 않는 부재의 경우 계산되지 않음.
• ViewManager.GetPickedSurfaceNormalVector
• ViewManager.GetSurfaceNormalVector(Vertex3D)
New Feature
ColorManager모델 기본 색상 관리 기능 추가
용도 : 모델이 단색(예: 회색) 이고, 한시적으로 유형별 색상을 적용하고, 색상 초기화 기능을 호출하더라도 초기 모델 색상(예: 회색)이 아닌, 관리되는 기본 색상으로 초기화
• ColorManager.SetDefaultColor
• ColorManager.ApplyDefaultColor
• ColorManager.ClearDefaultColor()
New Feature
TransformManager개체 이동/회전 핸들 기능(표준, 축 이동, 축 회전, 평행면 이동) 옵션 추가
용도 : 특정 기능만 수행이 필요한 경우, 핸들의 모드를 설정하여 오동작을 방지
• TransformManager.HandleMode
New Feature
ModelManager빈(Empty) 모델 생성 기능 추가
용도 : API를 통한 노드 및 형상 생성 기능 사용 시, 빈(Empty) 모델을 생성 후 수행하거나, 기존 열린 모델에 추가
• ModelManager.NewEmptyModel(String)
New Feature
StructureManager빈(Empty) 모델 상태 혹은 모델이 열린 상태에서 API를 활용하여 Node 생성 기능 추가
용도 : 새로운 노드를 생성하여 신규 구조를 생성하거나, 재구성할 수 있음.
• StructureManager.CreateNode
New Feature
StructureManager노드에 Body(형상 집합체) 생성 기능 추가 : 기존 노드 혹은 신규 노드에 새로운 형상(Triangle Mesh or Primitive) 추가를 위한 노드 생성
• StructureManager.CreateBody
New Feature
StructureManager노드 및 Body(형상 집합체) 이동 기능 추가
• StructureManager.MoveNodeToNode(Int32, Int32)
• StructureManager.MoveBodyToNode(Int32, Int32)
New Feature
MeshEditManagerBody(형상 집합체) 노드 생성 시, Mesh 형식으로 형상 생성 기능 추가
• MeshEditManager.CreateBody(Int32, String)
• MeshEditManager.CreateBodyWithMesh(Int32, String, List<Vertex3D>, List<Vertex3D>, Color)
New Feature
MeshEditManagerBody 노드에 Pyramid Primitive 생성 (혹은 추가) 기능 추가
• MeshEditManager.CreateBodyPrimitivePyramid(Int32, String, SizeF, SizeF, SizeF, Single, Matrix3D, Color, Int32)
• MeshEditManager.AddPrimitivePyramid(Int32, SizeF, SizeF, SizeF, Single, Matrix3D, Color, Int32, Boolean)
New Feature
MeshEditManagerBody 노드에 Box(Cube) Primitive 생성 (혹은 추가) 기능 추가
• MeshEditManager.CreateBodyPrimitiveBox(Int32, String, List<Single>, Matrix3D, Color, Single)
• MeshEditManager.AddPrimitiveBox(Int32, List<Single>, Matrix3D, Color, Single, Boolean)
New Feature
MeshEditManagerBody 노드에 Rectangular Torus Primitive 생성 (혹은 추가) 기능 추가
• MeshEditManager.CreateBodyPrimitiveRectangularTorus(Int32, String, List<Single>, Single, Single, Matrix3D, Color, Int32, Int32, Single, Int32)
• MeshEditManager.AddPrimitiveRectangularTorus(Int32, List<Single>, Single, Single, Matrix3D, Color, Int32, Int32, Single, Int32, Boolean)
New Feature
MeshEditManagerBody 노드에 Circular Torus Primitive 생성 (혹은 추가) 기능 추가
• MeshEditManager.CreateBodyPrimitiveCircularTorus(Int32, String, List<Single>, Single, Int32, Int32, Matrix3D, Color)
• MeshEditManager.MeshEditManager.AddPrimitiveCircularTorus(Int32, List<Single>, Single, Int32, Int32, Matrix3D, Color, Boolean)
New Feature
MeshEditManagerBody 노드에 Dish Primitive 생성 (혹은 추가) 기능 추가
• MeshEditManager.CreateBodyPrimitiveDish(Int32, String, List<Single>, Int32, Int32, Matrix3D, Color)
• MeshEditManager.AddPrimitiveDish(Int32, List<Single>, Single, Int32, Int32, Matrix3D, Color, Boolean)
New Feature
MeshEditManagerBody 노드에 Spherical Cap Primitive 생성 (혹은 추가) 기능 추가
• MeshEditManager.CreateBodyWithPrimitiveSphericalCap(Int32, String, Single, Single, Int32, Int32, Matrix3D, Color)
• MeshEditManager.AddPrimitiveSphericalCap(Int32, Single, Single, Int32, Int32, Matrix3D, Color, Boolean)
New Feature
MeshEditManagerBody 노드에 Cone Primitive 생성 (혹은 추가) 기능 추가
• MeshEditManager.CreateBodyPrimitiveCone
• MeshEditManager.AddPrimitiveCone(Int32, List<Single>, Single, Matrix3D, Color, Int32, Single, Int32, Boolean)
New Feature
MeshEditManagerBody 노드에 Cylinder Primitive 생성 (혹은 추가) 기능 추가
• MeshEditManager.CreateBodyPrimitiveCylinder
• MeshEditManager.AddPrimitiveCylinder(Int32, Single, Single, Matrix3D, Color, Int32, Boolean)
New Feature
MeshEditManagerBody 노드에 Sphere Primitive 생성 (혹은 추가) 기능 추가
• MeshEditManager.CreateBodyPrimitiveSphere(Int32, String, Single, Matrix3D, Color, Int32)
• MeshEditManager.AddPrimitiveSphere(Int32, Single, Matrix3D, Color, Int32, Boolean)
New Feature
Object3DManager개체의 모서리 정보 반환 시 발생되는 문제점 수정
• Object3DManager.GetEdgeVertex(Int32, Boolean)
Bug
GeometryUtilityManagerOsnap 표시 시, Surface (or Circle) 만 활성화된 경우 비정상 동작 수정
• GeometryUtilityManager.ShowOsnap
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();
}