VIZCore3D+.NET LIBRARY를 활용하여 Microsoft Visual Studio 개발 프로젝트에 적용하는 방법을 설명합니다.
개발환경 구성
Figure 1: 새 프로젝트 만들기


Figure 2 : 참조 추가

Figure 3 : 참조 관리자 - 찾아보기

Figure 4 : VIZCore3D+.NET.dll 파일 선택

Figure 5 : 참조 추가 결과 화면

Figure 6 : Visual Studio 환경설정

Figure 7 : Visual Studio Tool Box(도구상자)

Figure 8 : Panel 컨트롤 추가

Figure 9 : Button 및 ComboBox 컨트롤 추가

Figure 10 : Button 및 ComboBox 속성 변경

Figure 11 : [코드 보기] 화면

public partial class Form1 : Form
{
private VIZCore3D.NET.VIZCore3DControl vizcore3dplus;
public Form1()
{
InitializeComponent();
}
}
public Form1()
{
InitializeComponent();
// Initialize VIZCore3D.NET
VIZCore3D.NET.ModuleInitializer.Run();
// Construction
vizcore3dplus = new VIZCore3DControl();
vizcore3dplus.Dock = DockStyle.Fill;
panelView.Controls.Add(vizcore3dplus);
// 필수 Event
vizcore3dplus.OnInitializedVIZCore3D += VIZCore3DPlus_OnInitializedVIZCore3DPlus;
}
private void VIZCore3DPlus_OnInitializedVIZCore3DPlus(object sender, EventArgs e)
{
}
private void VIZCore3DPlus_OnInitializedVIZCore3DPlus(object sender, EventArgs e)
{
// ================================================================
// Example
// ================================================================
// 라이선스 파일을 통한 인증
//vizcore3dplus.License.LicenseFile("C:\\Temp\\VIZCore3DPlus.NET.lic");
// 라이선스 서버를 통한 인증
//vizcore3dplus.License.LicenseServer("127.0.0.1", 8901);
// ================================================================
// CODE
// ================================================================
VIZCore3D.NET.Data.LicenseResults result = vizcore3dplus.License.LicenseFile("C:\\Temp\\VIZCore3DPlus.NET.lic");
if (result != VIZCore3D.NET.Data.LicenseResults.SUCCESS)
{
MessageBox.Show(string.Format("LICENSE CODE : {0}", result.ToString()), "VIZCore3D+.NET", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
private void VIZCore3DPlus_OnInitializedVIZCore3DPlus(object sender, EventArgs e)
{
InitializeVIZCore3DPlus();
}
private void InitializeVIZCore3DPlus()
{
// ================================================================
// 모델 열기 시, 3D 화면 Rendering 차단
// ================================================================
vizcore3dplus.BeginUpdate();
// ================================================================
// 설정 - 기본
// ================================================================
#region 설정 - 기본
// 모델 자동 언로드 (파일 노드 언체크 시, 언로드)
vizcore3dplus.Model.UncheckToUnload = true;
// 모델 열기 시, Edge 정보 로드 활성화
vizcore3dplus.Model.LoadEdgeData = true;
// 모델 조회 시, 하드웨어 가속
vizcore3dplus.View.EnableHardwareAcceleration = true;
// 모델 열기 시, 스트럭처 병합 설정
vizcore3dplus.Model.OpenMergeStructureMode = Data.MergeStructureModes.NONE;
// 모델 저장 시, 스트럭처 병합 설정
vizcore3dplus.Model.SaveMergeStructureMode = Data.MergeStructureModes.NONE;
// 실린더 원형 품질 개수 : Nomal(12~36), Small(6~36)
vizcore3dplus.Model.ReadNormalCylinderSide = 12;
vizcore3dplus.Model.ReadSmallCylinderSide = 6;
// 보이는 모델만 저장
// VIZXML to VIZ 옵션
vizcore3dplus.Model.VIZXMLtoVIZOption = Data.ExportVIZXMLToVIZOptions.LOAD_UNLOADED_NODE;
// 선택 가능 개체 : 전체, 불투명한 개체
vizcore3dplus.View.SelectionObject3DType = Data.SelectionObject3DTypes.ALL;
// 개체 선택 유형 : 색상, 경계로 선택 (개체), 경계로 선택 (전체)
vizcore3dplus.View.SelectionMode = Data.Object3DSelectionOptions.HIGHLIGHT_COLOR;
// 개체 선택 색상
vizcore3dplus.View.SelectionColor = Color.Red;
// PreSelect 기능 활성화
vizcore3dplus.View.PreSelect.Enable = true;
// PreSelect 하이라이트 색상 설정
vizcore3dplus.View.PreSelect.HighlightColor = System.Drawing.Color.Lime;
// PreSelect Label 유형 지정
vizcore3dplus.View.PreSelect.Label = VIZCore3D.NET.Data.PreSelectStyle.LabelKind.HIERACHY_TOP_DOWN;
// PreSelect Label Font 설정
vizcore3dplus.View.PreSelect.LabelFont = new System.Drawing.Font("Arial", 10.0f);
#endregion
// ================================================================
// 설정 - 보기
// ================================================================
#region 설정 - 보기
// 자동 애니메이션 : 박스줌, 개체로 비행 등 기능에서 애니메이션 활성화/비활성화
vizcore3dplus.View.EnableAnimation = true;
// 자동화면맞춤
vizcore3dplus.View.EnableAutoFit = false;
// 연속회전모드
vizcore3dplus.View.EnableInertiaRotate = false;
// 확대/축소 비율 : 5.0f ~ 50.0f
vizcore3dplus.View.ZoomRatio = 30.0f;
// 회전각도
vizcore3dplus.View.RotationAngle = 90.0f;
// 회전 축
vizcore3dplus.View.RotationAxis = Data.Axis.X;
#endregion
// ================================================================
// 설정 - 탐색
// ================================================================
#region 설정 - 탐색
// Z축 고정
vizcore3dplus.Walkthrough.LockZAxis = true;
// 선속도 : m/s
vizcore3dplus.Walkthrough.Speed = 2.0f;
// 각속도
vizcore3dplus.Walkthrough.AngularSpeed = 30.0f;
// 높이
vizcore3dplus.Walkthrough.AvatarHeight = 1800.0f;
// 반지름
vizcore3dplus.Walkthrough.AvatarCollisionRadius = 400.0f;
// 숙임높이
vizcore3dplus.Walkthrough.AvatarBowWalkHeight = 1300.0f;
// 충돌
vizcore3dplus.Walkthrough.UseAvatarCollision = false;
// 중력
vizcore3dplus.Walkthrough.UseAvatarGravity = false;
// 숙임
vizcore3dplus.Walkthrough.UseAvatarBowWalk = false;
// 모델
vizcore3dplus.Walkthrough.AvatarModel = (int)Data.AvatarModels.MAN1;
// 자동줌
vizcore3dplus.Walkthrough.EnableAvatarAutoZoom = false;
// 충돌상자보기
vizcore3dplus.Walkthrough.ShowAvatarCollisionCylinder = false;
#endregion
// ================================================================
// 설정 - 조작
// ================================================================
// 시야각
vizcore3dplus.View.FOV = 60.0f;
// 광원 세기
vizcore3dplus.View.SpecularGamma = 30.0f;
// 모서리 굵기
vizcore3dplus.View.EdgeWidthRatio = 0.0f;
// X-Ray 모델 조회 시, 개체 색상 - 선택색상, 모델색상
vizcore3dplus.View.XRay.ColorType = Data.XRayColorTypes.SELECTION_COLOR;
// 배경유형
//vizcore3dplus.View.BackgroundMode = Data.BackgroundModes.COLOR_ONE;
// 배경색1
//vizcore3dplus.View.BackgroundColor1 = Color.Gray;
// 배경색2
//vizcore3dplus.View.BackgroundColor2 = Color.Gray;
// ================================================================
// 설정 - 노트
// ================================================================
// ================================================================
// 설정 - 측정
// ================================================================
// ================================================================
// 설정 - 단면
// ================================================================
// 단면 좌표간격으로 이동
vizcore3dplus.Section.MoveSectionByFrameGrid = true;
// ================================================================
// 설정 - 간섭검사
// ================================================================
// 다중간섭검사
vizcore3dplus.Clash.EnableMultiThread = true;
// ================================================================
// 설정 - 프레임(SHIP GRID)
// ================================================================
#region 설정 - 프레임
// 프레임 평면 설정
vizcore3dplus.Frame.XYPlane = true;
vizcore3dplus.Frame.YZPlane = true;
vizcore3dplus.Frame.ZXPlane = true;
vizcore3dplus.Frame.PlanLine = true;
vizcore3dplus.Frame.SectionLine = true;
vizcore3dplus.Frame.ElevationLine = true;
// 좌표값 표기
vizcore3dplus.Frame.ShowNumber = true;
// 모델 앞에 표기
vizcore3dplus.Frame.BringToFront = false;
// Frame(좌표계, SHIP GRID) 색상
vizcore3dplus.Frame.ForeColor = Color.Black;
// 홀수번째 표시
vizcore3dplus.Frame.ShowOddNumber = true;
// 짝수번째 표시
vizcore3dplus.Frame.ShowEvenNumber = true;
// 단면상자에 자동 맞춤
vizcore3dplus.Frame.AutoFitSectionBox = true;
#endregion
// ================================================================
// 설정 - 툴바
// ================================================================
vizcore3dplus.ToolbarNote.Visible = false;
vizcore3dplus.ToolbarMeasure.Visible = false;
vizcore3dplus.ToolbarSection.Visible = false;
vizcore3dplus.ToolbarClash.Visible = false;
vizcore3dplus.ToolbarAnimation.Visible = false;
vizcore3dplus.ToolbarSimulation.Visible = false;
// ================================================================
// 설정 - 상태바
// ================================================================
vizcore3dplus.Statusbar.Visible = true;
// ================================================================
// 모델 열기 시, 3D 화면 Rendering 재시작
// ================================================================
vizcore3dplus.EndUpdate();
}
private void VIZCore3DPlus_OnInitializedVIZCore3DPlus(object sender, EventArgs e)
{
InitializeVIZCore3DPlusEvent();
}
private void InitializeVIZCore3DPlusEvent()
{
vizcore3dplus.Object3D.OnObject3DSelected += Object3D_OnObject3DSelected;
}
private void Object3D_OnObject3DSelected(object sender, VIZCore3D.NET.Event.EventManager.Object3DSelectedEventArgs e)
{
if (e.Node.Count > 0)
{
//선택된 개체가 있음
//MessageBox.Show(e.Node.Count.ToString());
}
else
{
//모든 개체 선택 해제
}
}
private void btnOpen_Click(object sender, EventArgs e)
{
vizcore3dplus.Model.OpenFileDialog();
}
Figure 12 : 모델 열기

public Form1()
{
cbViewMode.Items.Add("2D View");
cbViewMode.Items.Add("3D View");
cbViewMode.Items.Add("2D / 3D View");
}
private void cbViewMode_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbViewMode.SelectedIndex == 0)
{
vizcore3dplus.ViewMode = ViewKind.Drawing2D;
}
else if (cbViewMode.SelectedIndex == 1)
{
vizcore3dplus.ViewMode = ViewKind.Model3D;
}
else if (cbViewMode.SelectedIndex == 2)
{
vizcore3dplus.ViewMode = ViewKind.Both;
}
}
Figure 13 : View Mode 전환

private void btnCameraView_Click(object sender, EventArgs e)
{
vizcore3dplus.Drawing2D.Object2D.Set2DViewCreateObjectWithModel(false);
}
Figure 14 : 2D View 생성

Figure 15 : 최종 화면
