VIZCore3D.NET Document Help

Development Environment

VIZCore3D.NET 컨트롤을 활용하여 Microsoft Visual Studio 개발 프로젝트에 적용하는 방법을 설명합니다.

개발환경 구성

  • 1. Microsoft Visual Studio를 실행합니다.

  • 2. [새 프로젝트 만들기] 혹은 [Visual C# / Window Forms 앱(.NET Framework)] 생성을 선택합니다.

Figure 1: 새 프로젝트 만들기

VIZCore3D_NET_DEV_001.png
    • 3. 다운로드 한 VIZCore3D.NET.dll 파일을 프로젝트에 참조 합니다.

    Figure 2 : 참조 추가

    VIZCore3D_NET_DEV_002.png

      Figure 3 : 참조 관리자

      VIZCore3D_NET_DEV_003.png

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

        VIZCore3D_NET_DEV_004.png

          Figure 5 : 참조 추가 결과 화면

          VIZCore3D_NET_DEV_005.png
            • 4. [속성:Properties] → [빌드:Build] → [플랫폼 대상(G)] 에 "Any CPU" 및 "32비트 기본 사용(P)"이 Uncheck 되어 있어야 합니다.

            Figure 6 : Visual Studio 환경설정

            VIZCore3D_NET_DEV_005-1.png
              • 5. VIZCore3D.NET 컨트롤을 Form에 추가하기 위해서 컨테이너 컨트롤을 추가합니다. 컨테이너 컨트롤은 Panel, SplitContainer 등을 활용합니다.

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

              VIZCore3D_NET_DEV_006.png

                Figure 8 : Panel 컨트롤 추가

                VIZCore3D_NET_DEV_007.png
                  • 6. 기능 수행을 위해 이 예제에서는 버튼을 하나 추가합니다.

                  Figure 9 : Button 컨트롤 추가

                  VIZCore3D_NET_DEV_008.png

                    Figure 10 : Button 속성 변경

                    VIZCore3D_NET_DEV_009.png
                      • 7. [코드 보기] 혹은 단축키 [F7]를 입력하여 코드 개발 화면으로 전환합니다.

                      Figure 11 : [코드 보기] 화면

                      VIZCore3D_NET_DEV_010.png
                        • 8. 참조된 VIZCore3D.NET.dll 의 변수를 선언 합니다.

                        public partial class Form1 : Form { private VIZCore3D.NET.VIZCore3DControl vizcore3d; public Form1() { InitializeComponent(); } }
                        • 9. VIZCore3D.NET 컨트롤의 초기화 수행 코드를 추가합니다.

                        • 모듈 초기화, 객체 생성 및 필수 이벤트를 정의합니다.

                        public Form1() { InitializeComponent(); // Initialize VIZCore3D.NET VIZCore3D.NET.ModuleInitializer.Run(); // Construction vizcore3d = new VIZCore3DControl(); vizcore3d.Dock = DockStyle.Fill; panelView.Controls.Add(vizcore3d); // 필수 Event vizcore3d.OnInitializedVIZCore3D += VIZCore3D_OnInitializedVIZCore3D; } private void VIZCore3D_OnInitializedVIZCore3D(object sender, EventArgs e) { }
                        • 10. 라이선스 인증 코드 추가

                        private void VIZCore3D_OnInitializedVIZCore3D(object sender, EventArgs e) { // ================================================================ // Example // ================================================================ // 라이선스 파일을 통한 인증 //vizcore3d.License.LicenseFile("C:\\Temp\\VIZCore3D.NET.lic"); // 라이선스 서버를 통한 인증 //vizcore3d.License.LicenseServer("127.0.0.1", 8901); //vizcore3d.License.LicenseServer("127.0.0.1", 8901, Data.PRODUCTS.AUTO); //vizcore3d.License.LicenseServer("127.0.0.1", 8901, Data.PRODUCTS.VIZZARD_MANAGER); //vizcore3d.License.LicenseServer("127.0.0.1", 8901, Data.PRODUCTS.VIZZARD_STANDARD); //vizcore3d.License.LicenseServer("127.0.0.1", 8901, Data.PRODUCTS.VIZCORE3D_MANAGER); //vizcore3d.License.LicenseServer("127.0.0.1", 8901, Data.PRODUCTS.VIZCORE3D_STANDARD); // ================================================================ // CODE // ================================================================ VIZCore3D.NET.Data.LicenseResults result = vizcore3d.License.LicenseFile("C:\\Temp\\VIZCore3D.NET.lic"); if (result != Data.LicenseResults.SUCCESS) { MessageBox.Show(string.Format("LICENSE CODE : {0}", result.ToString()), "VIZCore3D.NET", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } }
                        • 11. 필요 시, VIZCore3D.NET 컨트롤의 기본 설정을 변경 할 수 있으며, 아래의 예제와 같이 개별 옵션을 변경할 수 있습니다.

                        private void VIZCore3D_OnInitializedVIZCore3D(object sender, EventArgs e) { InitializeVIZCore3D(); } private void InitializeVIZCore3D() { // ================================================================ // 모델 열기 시, 3D 화면 Rendering 차단 // ================================================================ vizcore3d.BeginUpdate(); // ================================================================ // 설정 - 기본 // ================================================================ #region 설정 - 기본 // 모델 자동 언로드 (파일 노드 언체크 시, 언로드) vizcore3d.Model.UncheckToUnload = true; // 모델 열기 시, Edge 정보 로드 활성화 vizcore3d.Model.LoadEdgeData = true; // 모델 조회 시, 하드웨어 가속 vizcore3d.View.EnableHardwareAcceleration = true; // 모델 열기 시, 스트럭처 병합 설정 vizcore3d.Model.OpenMergeStructureMode = Data.MergeStructureModes.NONE; // 모델 저장 시, 스트럭처 병합 설정 vizcore3d.Model.SaveMergeStructureMode = Data.MergeStructureModes.NONE; // 실린더 원형 품질 개수 : Nomal(12~36), Small(6~36) vizcore3d.Model.ReadNormalCylinderSide = 12; vizcore3d.Model.ReadSmallCylinderSide = 6; // 보이는 모델만 저장 // VIZXML to VIZ 옵션 vizcore3d.Model.VIZXMLtoVIZOption = Data.ExportVIZXMLToVIZOptions.LOAD_UNLOADED_NODE; // 선택 가능 개체 : 전체, 불투명한 개체 vizcore3d.View.SelectionObject3DType = Data.SelectionObject3DTypes.ALL; // 개체 선택 유형 : 색상, 경계로 선택 (개체), 경계로 선택 (전체) vizcore3d.View.SelectionMode = Data.Object3DSelectionOptions.HIGHLIGHT_COLOR; // 개체 선택 색상 vizcore3d.View.SelectionColor = Color.Red; // PreSelect 기능 활성화 vizcore3d.View.PreSelect.Enable = true; // PreSelect 하이라이트 색상 설정 vizcore3d.View.PreSelect.HighlightColor = System.Drawing.Color.Lime; // PreSelect Label 유형 지정 vizcore3d.View.PreSelect.Label = VIZCore3D.NET.Data.PreSelectStyle.LabelKind.HIERACHY_TOP_DOWN; // PreSelect Label Font 설정 vizcore3d.View.PreSelect.LabelFont = new System.Drawing.Font("Arial", 10.0f); #endregion // ================================================================ // 설정 - 보기 // ================================================================ #region 설정 - 보기 // 자동 애니메이션 : 박스줌, 개체로 비행 등 기능에서 애니메이션 활성화/비활성화 vizcore3d.View.EnableAnimation = true; // 자동화면맞춤 vizcore3d.View.EnableAutoFit = false; // 연속회전모드 vizcore3d.View.EnableInertiaRotate = false; // 확대/축소 비율 : 5.0f ~ 50.0f vizcore3d.View.ZoomRatio = 30.0f; // 회전각도 vizcore3d.View.RotationAngle = 90.0f; // 회전 축 vizcore3d.View.RotationAxis = Data.Axis.X; #endregion // ================================================================ // 설정 - 탐색 // ================================================================ #region 설정 - 탐색 // Z축 고정 vizcore3d.Walkthrough.LockZAxis = true; // 선속도 : m/s vizcore3d.Walkthrough.Speed = 2.0f; // 각속도 vizcore3d.Walkthrough.AngularSpeed = 30.0f; // 높이 vizcore3d.Walkthrough.AvatarHeight = 1800.0f; // 반지름 vizcore3d.Walkthrough.AvatarCollisionRadius = 400.0f; // 숙임높이 vizcore3d.Walkthrough.AvatarBowWalkHeight = 1300.0f; // 충돌 vizcore3d.Walkthrough.UseAvatarCollision = false; // 중력 vizcore3d.Walkthrough.UseAvatarGravity = false; // 숙임 vizcore3d.Walkthrough.UseAvatarBowWalk = false; // 모델 vizcore3d.Walkthrough.AvatarModel = (int)Data.AvatarModels.MAN1; // 자동줌 vizcore3d.Walkthrough.EnableAvatarAutoZoom = false; // 충돌상자보기 vizcore3d.Walkthrough.ShowAvatarCollisionCylinder = false; #endregion // ================================================================ // 설정 - 조작 // ================================================================ // 시야각 vizcore3d.View.FOV = 60.0f; // 광원 세기 vizcore3d.View.SpecularGamma = 30.0f; // 모서리 굵기 vizcore3d.View.EdgeWidthRatio = 0.0f; // X-Ray 모델 조회 시, 개체 색상 - 선택색상, 모델색상 vizcore3d.View.XRay.ColorType = Data.XRayColorTypes.SELECTION_COLOR; // 배경유형 //vizcore3d.View.BackgroundMode = Data.BackgroundModes.COLOR_ONE; // 배경색1 //vizcore3d.View.BackgroundColor1 = Color.Gray; // 배경색2 //vizcore3d.View.BackgroundColor2 = Color.Gray; // ================================================================ // 설정 - 노트 // ================================================================ // ================================================================ // 설정 - 측정 // ================================================================ // ================================================================ // 설정 - 단면 // ================================================================ // 단면 좌표간격으로 이동 vizcore3d.Section.MoveSectionByFrameGrid = true; // ================================================================ // 설정 - 간섭검사 // ================================================================ // 다중간섭검사 vizcore3d.Clash.EnableMultiThread = true; // ================================================================ // 설정 - 프레임(SHIP GRID) // ================================================================ #region 설정 - 프레임 // 프레임 평면 설정 vizcore3d.Frame.XYPlane = true; vizcore3d.Frame.YZPlane = true; vizcore3d.Frame.ZXPlane = true; vizcore3d.Frame.PlanLine = true; vizcore3d.Frame.SectionLine = true; vizcore3d.Frame.ElevationLine = true; // 좌표값 표기 vizcore3d.Frame.ShowNumber = true; // 모델 앞에 표기 vizcore3d.Frame.BringToFront = false; // Frame(좌표계, SHIP GRID) 색상 vizcore3d.Frame.ForeColor = Color.Black; // 홀수번째 표시 vizcore3d.Frame.ShowOddNumber = true; // 짝수번째 표시 vizcore3d.Frame.ShowEvenNumber = true; // 단면상자에 자동 맞춤 vizcore3d.Frame.AutoFitSectionBox = true; #endregion // ================================================================ // 설정 - 툴바 // ================================================================ vizcore3d.ToolbarNote.Visible = false; vizcore3d.ToolbarMeasure.Visible = false; vizcore3d.ToolbarSection.Visible = false; vizcore3d.ToolbarClash.Visible = false; vizcore3d.ToolbarAnimation.Visible = false; vizcore3d.ToolbarSimulation.Visible = false; // ================================================================ // 설정 - 상태바 // ================================================================ vizcore3d.Statusbar.Visible = true; // ================================================================ // 모델 열기 시, 3D 화면 Rendering 재시작 // ================================================================ vizcore3d.EndUpdate(); }
                        • 12. 개체 선택에 대한 이벤트를 처리하고자 하는 경우, 아래와 같이 이벤트 처리기를 추가할 수 있습니다.

                        private void VIZCore3D_OnInitializedVIZCore3D(object sender, EventArgs e) { InitializeVIZCore3DEvent(); } private void InitializeVIZCore3DEvent() { vizcore3d.Object3D.OnObject3DSelected += Object3D_OnObject3DSelected; } private void Object3D_OnObject3DSelected(object sender, Event.EventManager.Object3DSelectedEventArgs e) { if(e.Node.Count > 0) { // 선택된 개체가 있음 //MessageBox.Show(e.NodeIndex.Count.ToString()); } else { //모든 개체 선택 해제 } }
                        • 13. 버튼(btnOpen) 클릭 이벤트 처리를 추가하여, 아래와 같이 모델 열기를 수행 할 수 있습니다.

                        private void btnOpen_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = vizcore3d.Model.OpenFilter; if (dlg.ShowDialog() != DialogResult.OK) return; vizcore3d.Model.OnModelProgressChangedEvent += Model_OnModelProgressChangedEvent; vizcore3d.Model.Open(dlg.FileName); vizcore3d.Model.OnModelProgressChangedEvent -= Model_OnModelProgressChangedEvent; } private void Model_OnModelProgressChangedEvent(object sender, VIZCore3D.NET.Event.EventManager.ModelProgressEventArgs e) { //e.Progress; }
                        Last modified: 04 10월 2024