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
Resource
Figure 1 : GENERIC FILE MARKING LINE, STRING

Figure 2 : 3D GRID

Figure 3: 3D GRID / DISASSEMBLY

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>