Development Environment
Last modified: 20 8월 2024VIZCoreXD.NET LIBRARY를 활용하여 Microsoft Visual Studio 개발 프로젝트에 적용하는 방법을 설명합니다.
개발환경 구성
1. Microsoft Visual Studio를 실행합니다.
2. [새 프로젝트 만들기] 혹은 [Visual C# / Window Forms 앱(.NET Framework)] 생성을 선택합니다.
Figure 1: 새 프로젝트 만들기


note
프로젝트 이름 : VIZCoreXD.NET.Demo
3. 다운로드 한 VIZCoreXD.NET.dll 파일을 프로젝트에 참조 합니다.
Figure 2 : 참조 추가

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

Figure 4 : VIZCoreXD.NET.dll 파일 선택

Figure 5 : 참조 추가 결과 화면

4. [속성:Properties] → [빌드:Build] → [플랫폼 대상(G)] 에 "Any CPU" 및 "32비트 기본 사용(P)"이 Uncheck 되어 있어야 합니다.
Figure 6 : Visual Studio 환경설정

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

Figure 8 : Panel 컨트롤 추가

note
추가된 Panel 컨트롤은 이름을 panelView로 변경하고, Form 사이즈 변경에 따른 크기 자동 조절을 위해 Anchor 속성을 부여합니다. Anchor : Top, Bottom, Left, Right
Figure 9 : Button 및 ComboBox 컨트롤 추가

Figure 10 : Button 및 ComboBox 속성 변경

note
추가된 버튼은 이름(Name)을 btnOpen으로 수정하고, 텍스트(Text)는 Open으로 변경합니다.
추가된 버튼은 이름(Name)을 btnCameraView로 수정하고, 텍스트(Text)는 Camera View로 변경합니다.
추가된 콤보박스는 이름(Name)을 cbViewMode 수정하고, 텍스트(Text)는 3D View로 변경합니다.
7. [코드 보기] 혹은 단축키 [F7]를 입력하여 코드 개발 화면으로 전환합니다.
Figure 11 : [코드 보기] 화면

8. 참조된 VIZCoreXD.NET.dll 의 변수를 선언 합니다.
public partial class Form1 : Form
{
private VIZCore3D.NET.VIZCore3DControl vizcorexd;
public Form1()
{
InitializeComponent();
}
}
9. VIZCore3D.NET 컨트롤의 초기화 수행 코드를 추가합니다.
모듈 초기화, 객체 생성 및 필수 이벤트를 정의합니다.
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)
{
}
warning
모듈 초기화(VIZCore3D.NET.ModuleInitializer.Run()) 단계에서는 VIZCore3D.NET 컨트롤이 실행되는 환경에 따라, 필요한 Unmanaged(C/C++/MFC) Library를 실행 경로에 생성합니다.
warning
필수 이벤트(OnInitializedVIZCore3D)는 VIZCore3D.NET 객체의 정상 초기화 완료 후, 발생되는 이벤트이며, 해당 이벤트 처리기에서 라이선스 인증을 수행하도록 합니다.
10. 라이선스 인증 코드 추가
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;
}
}
note
라이선스 인증은 파일 혹은 서버를 통한 인증 기능을 지원합니다.
11. 필요 시, VIZCoreXD.NET 컨트롤의 기본 설정을 변경 할 수 있으며, 아래의 예제와 같이 개별 옵션을 변경할 수 있습니다.
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();
}
12. 개체 선택에 대한 이벤트를 처리하고자 하는 경우, 아래와 같이 이벤트 처리기를 추가할 수 있습니다.
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
{
//모든 개체 선택 해제
}
}
13. 버튼(btnOpen) 클릭 이벤트 처리를 추가하여, 아래와 같이 모델 열기를 수행할 수 있습니다.
private void btnOpen_Click(object sender, EventArgs e)
{
vizcorexd.Model.OpenFileDialog();
}
Figure 12 : 모델 열기

14. 콤보박스(cbViewMode) 이벤트 처리를 추가하여, 아래와 같이 View Mode를 전환할 수 있습니다.
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 전환

15. 버튼(btnCameraView) 클릭 이벤트 처리를 추가하여, 아래와 같이 2D View를 생성할 수 있습니다.
private void btnCameraView_Click(object sender, EventArgs e)
{
vizcorexd.Drawing2D.Object2D.Set2DViewCreateObjectWithModel(false);
}
Figure 14 : 2D View 생성

Figure 15 : 최종 화면
