본문으로 건너뛰기

V.2.7.22.701

Major Features

  • 모델 내보내기 이후, 화면에 하얗게 변경되는 문제점 개선
  • 모델 트리 휠 동작 시, 스크롤 위치가 오동작하는 문제 수정
  • 지정된 노드를 개별 VIZ 파일로 내보내기 API 추가
  • 지정된 BoundBox 영역의 모델 내보내기 (걸친 모델은 자르기)
  • 현재 모델의 Max. Node Id 조회 기능 추가
  • 뷰 화면 좌표 영역에 해당하는 개체 선택 기능 추가
  • 현재 원근 카메라 위치 반환 기능 추가
  • 화면 좌표 영역에 해당하는 개체 검색 기능 추가
  • Body 유형에 포함된 속성정보를 속성트리 및 속성정보 다이얼로그에서 조회 지원
  • 노트 텍스트 수정 기능 추가
  • 측정 결과 항목의 투명도 스타일 처리 개선
  • 어셈블리 비율 분해 시, Animation 효과 적용
  • 단면상자의 3D 형상을 내보내기 기능 추가 (Split Mode)
  • 선택상자의 3D 형상을 내보내기 기능 추가 (Split Mode)
  • 간섭검사 결과 유형에 따른 심벌 화면 표시 기능 추가
  • Body 노드의 정점 정보 반환 기능 추가
  • 표면 위의 두 점으로 연속된 정점 목록 반환 기능 추가
  • FRAME (SHIPGRID) 정보를 XML 및 JSON 형식으로 내보내기 기능 추가
  • VIZXML ID 기준 연계(ExtLinkId) 기능 추가
  • VIZXML Matrix 정보 처리 기능 추가
  • Generic 파일 Marking Line 및 String 데이터 가시화 기능 추가

Full List

Full List of Issues Covering all Changes in this Release

ModuleSummaryCategory
ModelManager모델 내보내기 이후, 화면에 하얗게 변경되는 문제점 개선Enhancement
ModelManager지정된 노드를 개별 VIZ 파일로 내보내기 API 추가
ModelManager.ExportNodesDialog(List<Node>)
ModelManager.ExportNodes
New Feature
ModelManager지정된 BoundBox 영역의 모델 내보내기 (걸친 모델은 자르기)
• ModelManager.ExportGrid(String,Single[], Boolean)
New Feature
StructureManager현재 모델의 Max. Node Id 조회
StructureManager.GetMaxId()
New Feature
ViewManager뷰 화면 좌표 영역에 해당하는 개체 선택
Object3DManager.Select
New Feature
ViewManager현재 원근 카메라 위치 반환
ViewManager.GetCameraEyePosition()
New Feature
Object3DManager화면 좌표 영역에 해당하는 개체 검색
Object3DManager.FromScreen
New Feature
NoteManager노트 텍스트 수정 기능 추가
NoteManager.EditNoteTextDialog(NoteItem)
NoteManager.EditNoteText(Int32, String)
NoteItem.UpdateText(String)
New Feature
SectionManager단면상자의 3D 형상을 내보내기 기능 추가 (Split Mode)
SectionManager.ExportVIZ
Section.ExportVIZ
New Feature
SelectionBoxManager선택상자의 3D 형상을 내보내기 기능 추가 (Split Mode)
SelectionBoxManager.ExportVIZ
SelectionBox.ExportVIZ
New Feature
ClashManager간섭검사 결과 유형에 따른 심벌 화면 표시 기능 추가
ClashManager.ShowResultSymbol
ClashManager.ClearResultSymbol()
New Feature
MeshEditManagerBody 노드의 정점 정보 반환 기능 추가
MeshEditManager.GetBodyVertices(Int32)
New Feature
GeometryUtilityManager표면 위의 두 점으로 연속된 정점 목록 반환 기능 추가
GeometryUtilityManager.GetSurfaceVertexList(Int32, Vertex3D, Vertex3D)
New Feature
FrameManagerFRAME (SHIPGRID) 정보를 XML 및 JSON 형식으로 내보내기 기능 추가
FrameManager.ExportXml(String)
FrameManager.ExportXmlDialog()
FrameManager.ExportJson(String)
FrameManager.ExportJsonDialog()
New Feature

Resource

Figure 1 : GENERIC FILE MARKING LINE, STRING

RELEASE_2.7.001.png

Figure 2 : 3D GRID

RELEASE_2.7.002.png

Figure 3: 3D GRID / DISASSEMBLY

RELEASE_2.7.003.gif

Sample

지정된 노드를 개별 VIZ 파일로 내보내기 API 추가

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example()
{
if (vizcore3d.Model.IsOpen() == false) return;

List<VIZCore3D.NET.Data.Node> nodes =
vizcore3d.Object3D.FromDepth(1, false);

if (nodes.Count == 0) return;

vizcore3d.Model.ExportNodesDialog(nodes);

MessageBox.Show("Export Completed.", "VIZCore3D.NET", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

지정된 노드를 개별 VIZ 파일로 내보내기 API 추가

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example()
{
if (vizcore3d.Model.IsOpen() == false) return;

List<VIZCore3D.NET.Data.Node> nodes =
vizcore3d.Object3D.FromFilter(VIZCore3D.NET.Data.Object3dFilter.SELECTED_TOP);

if (nodes.Count == 0) return;

vizcore3d.Model.ExportNodes("C:\\Temp", nodes);

MessageBox.Show("Export Completed.", "VIZCore3D.NET", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

지정된 BoundBox 영역의 모델 내보내기 (걸친 모델은 자르기)

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example()
{
if (vizcore3d.Model.IsOpen() == false) return;

VIZCore3D.NET.Data.BoundBox3D boundBox =
new VIZCore3D.NET.Data.BoundBox3D();

boundBox.MinX = 0.0f;
boundBox.MinY = 0.0f;
boundBox.MinZ = 0.0f;

boundBox.MaxX = 100.0f;
boundBox.MaxY = 100.0f;
boundBox.MaxZ = 100.0f;

vizcore3d.Model.ExportGrid(
"C:\\Temp\\Model.viz" /* Path */
, boundBox /* BoundBox */
, false /* Keep Structure */
);
}

현재 모델의 Max. Node Id 조회

// 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.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);
}

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.ParentId = 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.ParentId = 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.ParentId = 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);
}

뷰 화면 좌표 영역에 해당하는 개체 선택

// 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 */
);
}

화면 좌표 영역에 해당하는 개체 검색

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

노트 텍스트 수정 기능 추가

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example1()
{
List<Data.NoteItem> notes = vizcore3d.Review.Note.GetSelectedItems();
if (notes.Count == 0) return;

bool result = vizcore3d.Review.Note.EditNoteTextDialog(notes[0]);
}

private void Example2()
{
List<Data.NoteItem> notes = vizcore3d.Review.Note.GetSelectedItems();
if (notes.Count == 0) return;

bool result = vizcore3d.Review.Note.EditNoteText(notes[0].ID, "New Text");
}

노트 텍스트 수정 기능 추가

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example()
{
List<VIZCore3D.NET.Data.NoteItem> notes = vizcore3d.Review.Note.GetSelectedItems();
if (notes.Count == 0) return;

notes[0].UpdateText("New Note Text!!");
}

단면상자의 3D 형상을 내보내기 기능 추가 (Split Mode)

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example1()
{
if (vizcore3d.Model.IsOpen() == false) return;
if (vizcore3d.Section.Sections.Count == 0) return;
if (vizcore3d.Section.SelectedItem == null) return;

VIZCore3D.NET.Data.Section item = vizcore3d.Section.SelectedItem;

item.ExportVIZ(
"C:\\Temp\\Section.viz" /* Path */
, true /* Keep Structure */
);
}

private void Example2()
{
if (vizcore3d.Model.IsOpen() == false) return;
if (vizcore3d.Section.Sections.Count == 0) return;
if (vizcore3d.Section.SelectedItem == null) return;

VIZCore3D.NET.Data.Section item = vizcore3d.Section.SelectedItem;

vizcore3d.Section.ExportVIZ(
item /* Section(Box) */
, "C:\\Temp\\Section.viz" /* Path */
, true /* Keep Structure */
);
}

private void Example3()
{
if (vizcore3d.Model.IsOpen() == false) return;
if (vizcore3d.Section.Sections.Count == 0) return;
if (vizcore3d.Section.SelectedItem == null) return;

VIZCore3D.NET.Data.Section item = vizcore3d.Section.SelectedItem;

vizcore3d.Section.ExportVIZ(
item.ID /* Section(Box) */
, "C:\\Temp\\Section.viz" /* Path */
, true /* Keep Structure */
);
}

선택상자의 3D 형상을 내보내기 기능 추가 (Split Mode)

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example1()
{
if (vizcore3d.Model.IsOpen() == false) return;
if (vizcore3d.SelectionBox.Items.Count == 0) return;

VIZCore3D.NET.Data.SelectionBox item = vizcore3d.SelectionBox.Items[0];

item.ExportVIZ(
"C:\\Temp\\SelectionBox.viz" /* Path */
, true /* Keep Structure */
);
}

private void Example2()
{
if (vizcore3d.Model.IsOpen() == false) return;
if (vizcore3d.SelectionBox.Items.Count == 0) return;

VIZCore3D.NET.Data.SelectionBox item = vizcore3d.SelectionBox.Items[0];

vizcore3d.SelectionBox.ExportVIZ(
item /* Section(Box) */
, "C:\\Temp\\Section.viz" /* Path */
, true /* Keep Structure */
);
}

private void Example3()
{
if (vizcore3d.Model.IsOpen() == false) return;
if (vizcore3d.SelectionBox.Items.Count == 0) return;

VIZCore3D.NET.Data.SelectionBox item = vizcore3d.SelectionBox.Items[0];

vizcore3d.SelectionBox.ExportVIZ(
item.ID /* SelectionBox */
, "C:\\Temp\\SelectionBox.viz" /* Path */
, true /* Keep Structure */
);
}

간섭검사 결과 유형에 따른 심벌 화면 표시 기능 추가

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

private void Example1()
{
if (vizcore3d.Model.IsOpen() == false) return;
if (vizcore3d.Clash.Items.Count == 0) return;

List<VIZCore3D.NET.Data.Vertex3D> hotPoint = new List<VIZCore3D.NET.Data.Vertex3D>();
hotPoint.Add(new Data.Vertex3D(0, 0, 0));
hotPoint.Add(new Data.Vertex3D(100, 100, 100));
hotPoint.Add(new Data.Vertex3D(200, 200, 200));

List<VIZCore3D.NET.Data.ClashResultSymbols> symbols = new List<VIZCore3D.NET.Data.ClashResultSymbols>();
symbols.Add(VIZCore3D.NET.Data.ClashResultSymbols.Circle); // 근접
symbols.Add(VIZCore3D.NET.Data.ClashResultSymbols.Square); // 접촉
symbols.Add(VIZCore3D.NET.Data.ClashResultSymbols.Triangle); // 침투

vizcore3d.Clash.ShowResultSymbol(
hotPoint /* Position - Clash Points */
, symbols /* Symbol Kind */
, 10 /* Radius */
, true /* Fixed Size */
, System.Drawing.Color.Yellow /* Color */
, true /* Number Text Visible */
);
}

private void Example2()
{
vizcore3d.Clash.ClearResultSymbol();
}

Body 노드의 정점 정보 반환 기능 추가

// 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> vertexData = vizcore3d.MeshEdit.GetBodyVertices(bodyIndex);

// Vertex Position Move
for(int i = 0; i < vertexData.Count; i++)
{
vertexData[i].Vertex.X += 1000;
}

vizcore3d.MeshEdit.SetBodyVertices(
bodyIndex /* body index */
, vertexData /* Vertex Info */
, false); /* RebuildData */
}

vizcore3d.Structure.RebuildData();
vizcore3d.EndUpdate();
}

FRAME (SHIPGRID) 정보를 XML 및 JSON 형식으로 내보내기 기능 (XML)

<?xml version="1.0" encoding="utf-8"?>
<Frame>
<Grid Axis="X" Name="FR">
<Item ID="0" Offset="0"/>
<Item ID="1" Offset="1000"/>
<Item ID="2" Offset="2000"/>
<Item ID="3" Offset="3000"/>
<Item ID="4" Offset="4000"/>
</Grid>
<Grid Axis="Y" Name="LP">
<Item ID="0" Offset="0"/>
<Item ID="1" Offset="1000"/>
<Item ID="2" Offset="2000"/>
<Item ID="3" Offset="3000"/>
<Item ID="4" Offset="4000"/>
</Grid>
<Grid Axis="Z" Name="LP">
<Item ID="0" Offset="0"/>
<Item ID="1" Offset="1000"/>
<Item ID="2" Offset="2000"/>
<Item ID="3" Offset="3000"/>
<Item ID="4" Offset="4000"/>
</Grid>
</Frame>

FRAME (SHIPGRID) 정보를 XML 및 JSON 형식으로 내보내기 기능 (JSON)

[
{ "axis": "X", "axisId": 0, "label": "FR", "items": [
{ "id": -10, "offset": -8000 },
{ "id": -9, "offset": -7200 },
{ "id": -8, "offset": -6400 },
{ "id": -7, "offset": -5600 },
{ "id": -6, "offset": -4800 },
{ "id": -5, "offset": -4000 },
{ "id": -4, "offset": -3200 },
{ "id": -3, "offset": -2400 },
{ "id": -2, "offset": -1600 },
{ "id": -1, "offset": -800 },
{ "id": 0, "offset": 0 },
{ "id": 1, "offset": 800 },
{ "id": 2, "offset": 1600 },
{ "id": 3, "offset": 2400 },
{ "id": 4, "offset": 3200 },
{ "id": 5, "offset": 4000 },
{ "id": 6, "offset": 4800 },
{ "id": 7, "offset": 5600 },
{ "id": 8, "offset": 6400 },
{ "id": 9, "offset": 7200 },
{ "id": 10, "offset": 8000 },
{ "id": 11, "offset": 8800 },
{ "id": 12, "offset": 9600 },
{ "id": 13, "offset": 10400 },
{ "id": 14, "offset": 11200 },
{ "id": 15, "offset": 12000 },
{ "id": 16, "offset": 12800 },
{ "id": 17, "offset": 13600 },
{ "id": 18, "offset": 14400 },
{ "id": 19, "offset": 15200 },
{ "id": 20, "offset": 16000 },
{ "id": 21, "offset": 16800 },
{ "id": 22, "offset": 17600 },
{ "id": 23, "offset": 18400 },
{ "id": 24, "offset": 19200 },
{ "id": 25, "offset": 20000 },
{ "id": 26, "offset": 20800 },
{ "id": 27, "offset": 21600 },
{ "id": 28, "offset": 22400 },
{ "id": 29, "offset": 23200 },
{ "id": 30, "offset": 24000 },
{ "id": 31, "offset": 24800 },
{ "id": 32, "offset": 25600 },
{ "id": 33, "offset": 26400 },
{ "id": 34, "offset": 27200 },
{ "id": 35, "offset": 28000 },
{ "id": 36, "offset": 28800 },
{ "id": 37, "offset": 29600 },
{ "id": 38, "offset": 30400 },
{ "id": 39, "offset": 31200 },
{ "id": 40, "offset": 32000 },
{ "id": 41, "offset": 32800 },
{ "id": 42, "offset": 33600 },
{ "id": 43, "offset": 34400 },
{ "id": 44, "offset": 35200 },
{ "id": 45, "offset": 36000 },
{ "id": 46, "offset": 36800 },
{ "id": 47, "offset": 37600 },
{ "id": 48, "offset": 38400 },
{ "id": 49, "offset": 39200 },
{ "id": 50, "offset": 40000 },
{ "id": 51, "offset": 40800 },
{ "id": 52, "offset": 41600 },
{ "id": 53, "offset": 42400 },
{ "id": 54, "offset": 43200 },
{ "id": 55, "offset": 44000 },
{ "id": 56, "offset": 44800 },
{ "id": 57, "offset": 45600 },
{ "id": 58, "offset": 46400 },
{ "id": 59, "offset": 47200 },
{ "id": 60, "offset": 48000 },
{ "id": 61, "offset": 48800 },
{ "id": 62, "offset": 49600 },
{ "id": 63, "offset": 50400 },
{ "id": 64, "offset": 51200 },
{ "id": 65, "offset": 52000 },
{ "id": 66, "offset": 52800 },
{ "id": 67, "offset": 53600 },
{ "id": 68, "offset": 54400 },
{ "id": 69, "offset": 55200 },
{ "id": 70, "offset": 56000 },
{ "id": 71, "offset": 56800 },
{ "id": 72, "offset": 59500 },
{ "id": 73, "offset": 63120 },
{ "id": 74, "offset": 66740 },
{ "id": 75, "offset": 70360 },
{ "id": 76, "offset": 73980 },
{ "id": 77, "offset": 77600 },
{ "id": 78, "offset": 81220 },
{ "id": 79, "offset": 84840 },
{ "id": 80, "offset": 88460 },
{ "id": 81, "offset": 92080 },
{ "id": 82, "offset": 95700 },
{ "id": 83, "offset": 99320 },
{ "id": 84, "offset": 102940 },
{ "id": 85, "offset": 106565 },
{ "id": 86, "offset": 109365 },
{ "id": 87, "offset": 112985 },
{ "id": 88, "offset": 116605 },
{ "id": 89, "offset": 120225 },
{ "id": 90, "offset": 123845 },
{ "id": 91, "offset": 127465 },
{ "id": 92, "offset": 131085 },
{ "id": 93, "offset": 134705 },
{ "id": 94, "offset": 138325 },
{ "id": 95, "offset": 141945 },
{ "id": 96, "offset": 145565 },
{ "id": 97, "offset": 149185 },
{ "id": 98, "offset": 152805 },
{ "id": 99, "offset": 156430 },
{ "id": 100, "offset": 159230 },
{ "id": 101, "offset": 162850 },
{ "id": 102, "offset": 166470 },
{ "id": 103, "offset": 170090 },
{ "id": 104, "offset": 173710 },
{ "id": 105, "offset": 177330 },
{ "id": 106, "offset": 180950 },
{ "id": 107, "offset": 184570 },
{ "id": 108, "offset": 188190 },
{ "id": 109, "offset": 191810 },
{ "id": 110, "offset": 195430 },
{ "id": 111, "offset": 199050 },
{ "id": 112, "offset": 202670 },
{ "id": 113, "offset": 206295 },
{ "id": 114, "offset": 209095 },
{ "id": 115, "offset": 212475 },
{ "id": 116, "offset": 215855 },
{ "id": 117, "offset": 219235 },
{ "id": 118, "offset": 222615 },
{ "id": 119, "offset": 225995 },
{ "id": 120, "offset": 229375 },
{ "id": 121, "offset": 232755 },
{ "id": 122, "offset": 236135 },
{ "id": 123, "offset": 239515 },
{ "id": 124, "offset": 242900 },
{ "id": 125, "offset": 245600 },
{ "id": 126, "offset": 246400 },
{ "id": 127, "offset": 247200 },
{ "id": 128, "offset": 248000 },
{ "id": 129, "offset": 248800 },
{ "id": 130, "offset": 249600 },
{ "id": 131, "offset": 250400 },
{ "id": 132, "offset": 251200 },
{ "id": 133, "offset": 252000 },
{ "id": 134, "offset": 252800 },
{ "id": 135, "offset": 253600 },
{ "id": 136, "offset": 254400 },
{ "id": 137, "offset": 255200 },
{ "id": 138, "offset": 256000 },
{ "id": 139, "offset": 256800 },
{ "id": 140, "offset": 257600 },
{ "id": 141, "offset": 258400 },
{ "id": 142, "offset": 259200 },
{ "id": 143, "offset": 260000 },
{ "id": 144, "offset": 260800 },
{ "id": 145, "offset": 261600 },
{ "id": 146, "offset": 262400 },
{ "id": 147, "offset": 263200 },
{ "id": 148, "offset": 264000 },
{ "id": 149, "offset": 264800 },
{ "id": 150, "offset": 265600 },
{ "id": 151, "offset": 266400 },
{ "id": 152, "offset": 267200 },
{ "id": 153, "offset": 268000 },
{ "id": 154, "offset": 268800 },
{ "id": 155, "offset": 269600 },
{ "id": 156, "offset": 270400 },
{ "id": 157, "offset": 271200 },
{ "id": 158, "offset": 272000 },
{ "id": 159, "offset": 272800 },
{ "id": 160, "offset": 273600 },
{ "id": 161, "offset": 274400 },
{ "id": 162, "offset": 275200 },
{ "id": 163, "offset": 276000 },
{ "id": 164, "offset": 276800 },
{ "id": 165, "offset": 277600 },
{ "id": 166, "offset": 278400 },
{ "id": 167, "offset": 279200 },
{ "id": 168, "offset": 280000 },
{ "id": 169, "offset": 280800 },
{ "id": 170, "offset": 281600 },
{ "id": 171, "offset": 282400 },
{ "id": 172, "offset": 283200 },
{ "id": 173, "offset": 284000 },
{ "id": 174, "offset": 284800 },
{ "id": 175, "offset": 285600 },
{ "id": 176, "offset": 286400 },
{ "id": 177, "offset": 287200 },
{ "id": 178, "offset": 288000 },
{ "id": 179, "offset": 288800 },
{ "id": 180, "offset": 289600 }
]},
{ "axis": "Y", "axisId": 1, "label": "LP", "items": [
{ "id": -26, "offset": -20450 },
{ "id": -25, "offset": -19735 },
{ "id": -24, "offset": -19005 },
{ "id": -23, "offset": -18275 },
{ "id": -22, "offset": -17545 },
{ "id": -21, "offset": -16815 },
{ "id": -20, "offset": -16085 },
{ "id": -19, "offset": -15355 },
{ "id": -18, "offset": -14580 },
{ "id": -17, "offset": -13785 },
{ "id": -16, "offset": -12990 },
{ "id": -15, "offset": -12195 },
{ "id": -14, "offset": -11400 },
{ "id": -13, "offset": -10605 },
{ "id": -12, "offset": -9810 },
{ "id": -11, "offset": -9015 },
{ "id": -10, "offset": -8220 },
{ "id": -9, "offset": -7425 },
{ "id": -8, "offset": -6630 },
{ "id": -7, "offset": -5835 },
{ "id": -6, "offset": -5040 },
{ "id": -5, "offset": -4245 },
{ "id": -4, "offset": -3450 },
{ "id": -3, "offset": -2665 },
{ "id": -2, "offset": -1780 },
{ "id": -1, "offset": -890 },
{ "id": 0, "offset": 0 },
{ "id": 1, "offset": 890 },
{ "id": 2, "offset": 1780 },
{ "id": 3, "offset": 2665 },
{ "id": 4, "offset": 3450 },
{ "id": 5, "offset": 4245 },
{ "id": 6, "offset": 5040 },
{ "id": 7, "offset": 5835 },
{ "id": 8, "offset": 6630 },
{ "id": 9, "offset": 7425 },
{ "id": 10, "offset": 8220 },
{ "id": 11, "offset": 9015 },
{ "id": 12, "offset": 9810 },
{ "id": 13, "offset": 10605 },
{ "id": 14, "offset": 11400 },
{ "id": 15, "offset": 12195 },
{ "id": 16, "offset": 12990 },
{ "id": 17, "offset": 13785 },
{ "id": 18, "offset": 14580 },
{ "id": 19, "offset": 15355 },
{ "id": 20, "offset": 16085 },
{ "id": 21, "offset": 16815 },
{ "id": 22, "offset": 17545 },
{ "id": 23, "offset": 18275 },
{ "id": 24, "offset": 19005 },
{ "id": 25, "offset": 19735 },
{ "id": 26, "offset": 20450 }
]},
{ "axis": "Z", "axisId": 2, "label": "LP", "items": [
{ "id": 27, "offset": 2750 },
{ "id": 28, "offset": 3480 },
{ "id": 29, "offset": 4220 },
{ "id": 30, "offset": 4960 },
{ "id": 31, "offset": 5700 },
{ "id": 32, "offset": 6440 },
{ "id": 33, "offset": 7180 },
{ "id": 34, "offset": 7920 },
{ "id": 35, "offset": 8660 },
{ "id": 36, "offset": 9405 },
{ "id": 37, "offset": 10200 },
{ "id": 38, "offset": 10995 },
{ "id": 39, "offset": 11790 },
{ "id": 40, "offset": 12585 },
{ "id": 41, "offset": 13380 },
{ "id": 42, "offset": 14175 },
{ "id": 43, "offset": 14970 },
{ "id": 44, "offset": 15765 },
{ "id": 45, "offset": 16560 },
{ "id": 46, "offset": 17355 },
{ "id": 47, "offset": 18150 },
{ "id": 48, "offset": 18945 },
{ "id": 49, "offset": 19740 },
{ "id": 50, "offset": 20535 },
{ "id": 51, "offset": 21330 },
{ "id": 52, "offset": 22125 },
{ "id": 53, "offset": 22920 },
{ "id": 54, "offset": 23715 },
{ "id": 55, "offset": 24610 },
{ "id": 56, "offset": 25505 },
{ "id": 57, "offset": 26400 }
]}
]

VIZXML ID 기준 연계(ExtLinkId) 기능 추가

<?xml version="1.0" encoding="UTF-8"?>
<VIZXML>
<Model Name="Root">
<Node Name="NODE A" Type="Assembly" >
<Node Name="NODE A-1" Type="Part" >
<Node Name="NODE A-1-1" ExtLinkId="C:\Temp\Model.viz:2" Type="Body" />
</Node>
</Node>
<Node Name="NODE B" Type="Assembly" >
<Node Name="NODE B-1" Type="Part" >
<Node Name="NODE B-1-1" ExtLinkId="C:\Temp\Model.viz:12" Type="Body" />
</Node>
</Node>
<Node Name="NODE C" Type="Assembly" >
<Node Name="NODE C-1" Type="Part" >
<Node Name="NODE C-1-1" ExtLinkId="C:\Temp\Model.viz:20" Type="Body" />
</Node>
</Node>
</Model>
</VIZXML>

VIZXML Matrix 정보 처리 기능 추가

<?xml version="1.0" encoding="UTF-8"?>
<VIZXML>
<Model Name="Root">
<Node Name="NODE A" Type="Assembly" >
<Node Name="NODE A-1" ExtLinkFile="C:\Temp\Model_A.viz" Type="Assembly" V1="1" V2="0" V3="0" V4="0" V5="1" V6="0" V7="0" V8="0" V9="1" T1="0" T2="0" T3="0" />
</Node>
<Node Name="NODE B" Type="Assembly" >
<Node Name="NODE B-1" ExtLinkFile="C:\Temp\Model_B.viz" Type="Assembly" V1="1" V2="0" V3="0" V4="0" V5="1" V6="0" V7="0" V8="0" V9="1" T1="0" T2="0" T3="110" />
</Node>
<Node Name="NODE C" Type="Assembly" >
<Node Name="NODE C-1" ExtLinkFile="C:\Temp\Model_C.viz" Type="Assembly" V1="1" V2="0" V3="0" V4="0" V5="0.7071068" V6="-0.7071068" V7="0" V8="0.7071068" V9="0.7071068" T1="0" T2="0" T3="0" />
</Node>
<Node Name="NODE D" Type="Assembly" >
<Node Name="NODE D-1" ExtLinkFile="C:\Temp\Model_D.viz" Type="Assembly" />
</Node>
</Model>
</VIZXML>