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
- ISO+ :
-
복수개의 노드를 이동하는 기능 추가
-
모델 파일(*.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
Resource
Figure 1 : 노트(3D/2D/SURFACE) 텍스트 Context Menu에서 수정

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

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

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

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

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

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

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

Figure 9 : 투영 면적 측정 기능

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();
}