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