VIZCore3D.NET Document Help

V.2.8.23.1227

Major Features

  • 투영 면적 중심점 기능 추가

  • 기준선 단면형상 거리 측정기능 추가

  • Json 파일 읽는 API 추가

  • Json 파일 저장하는 API 추가

  • PrimitiveManager에 Pyramid유형 추가

  • PrimitiveManager에 Cone유형 추가

  • Walkthrough 부분 단축키 변경 가능하도록 설정

  • 그리기 마크업 종료 시, 스냅샷 이미지 저장 API 추가(추가된 스냅샷 이미지는 CVR 파일 저장 시 해당 파일에 포함)

  • 그리기 마크업 라인 유형 그리기 중지 API 추가

  • CVR 파일에 저장되어 있는 스냅샷 이미지 불러오는 API 추가

  • Osnap - NodeIndex 반환하도록 추가

  • MeshEdit - API 지연속도 단축 (50% 향상)

  • View - VertexColor API 지연속도 단축 (50% 향상)

  • Box 유형의 단면 생성 후 기본 단면 추가 시, Box 유형의 단면이 사라지는 현상 보완을 위해 Add 함수 파라미터 추가(visibleOthers)

  • Box유형의 단면 숨기기 후 보이기 실행 시, Box유형의 단면이 보이지 않는 현상 보완하기 위해 Show 함수 파라미터 추가(visibleOthers)

  • 빛 방향 설정하는 API 추가

  • 표면 노트, 2D 노트, 3D 노트 생성하는 API 추가

  • 이동검사 End Position 설정하여 Path 구하는 API 추가

  • 개체 숨김 상태 변경 이벤트 추가

  • 환경설정 - 노트 - 심벌위치 옵션 추가

  • 설정 - 탐색 - 아바타 고급 - 모델 - MAN3 추가

  • 간섭 검사 결과 판단 조건 개선

  • 간섭 검사 진행 중 OnClashProgressEvent 콜백 함수에서 현재까지 검출된 결과 확인할 수 있도록 구현

  • RotateCamera로 모델 회전 시 모델이 사라지는 현상 개선

Full List

Full List of Issues Covering all Changes in this Release

Module

Summary

Category

MeasureProjectedArea

투영 면적 중심점 기능 추가

  • GitHub (Example) :

https://github.com/softhills3d/VIZCore3D.NET/tree/master/WinForms/VIZCore3D.NET.ProjectionArea

New Feature

MeasureManager

기준선 단면형상 거리 측정기능 추가

New Feature

ReviewManager

Json 파일 읽는 API 추가

New Feature

ReviewManager

Json 파일 저장하는 API 추가

New Feature

PrimitiveManager

PrimitiveManager에 Pyramid유형 추가

New Feature

PrimitiveManager

PrimitiveManager에 Cone유형 추가

New Feature

DrawingMarkupManager

그리기 마크업 종료 시, 스냅샷 이미지 저장 API 추가 (추가된 스냅샷 이미지는 CVR 파일 저장 시 해당 파일에 포함)

New Feature

DrawingMarkupManager

그리기 마크업 라인 유형 그리기 중지 API 추가

New Feature

UserViewManager

CVR 파일에 저장되어 있는 스냅샷 이미지 불러오기

New Feature

GeometryUtilityManager

Osnap - NodeIndex 반환하도록 추가

New Feature

MeshEditManager

MeshEdit - API 지연속도 단축 (50% 향상)

Enhancement

VertexColorManager

View - VertexColor API 지연속도 단축 (50% 향상)

Enhancement

SectionManager

Box 유형의 단면 생성 후 기본 단면 추가 시, Box 유형의 단면이 사라지는 현상 보완을 위해 Add 함수 파라미터 추가(visibleOthers)

New Feature

SectionManager

Box유형의 단면 숨기기 후 보이기 실행 시, Box유형의 단면이 보이지 않는 현상 보완하기 위해 Show 함수 파라미터 추가(visibleOthers)

New Feature

ViewManager

빛 방향 설정하는 API 추가

New Feature

NoteManager

표면 노트, 2D 노트, 3D 노트 추가하는 API 추가

New Feature

ClashTest

이동검사 End Position 설정하여 Path 구하는 API 추가

New Feature

LockedHiddenManager

개체 숨김 상태 변경 이벤트 추가

New Feature

AvatarModels

설정 - 탐색 - 아바타 고급 - 모델 - MAN3 추가

New Feature

ClashManager

간섭 검사 진행 중 OnClashProgressEvent 콜백 함수에서 현재까지 검출된 결과 확인할 수 있도록 구현

https://github.com/softhills3d/VIZCore3D.NET/tree/master/WinForms/VIZCore3D.NET.ClashTest

New Feature

ViewManager

RotateCamera로 모델 회전 시 모델이 사라지는 현상 개선

https://github.com/softhills3d/VIZCore3D.NET/tree/master/WinForms/VIZCore3D.NET.RotateModel

Enhancement

Resource

Figure 1: 기준선 단면형상 거리 측정기능 추가

RELEASE_2.8.23.1128.001.png

    Figure 2: 빛 방향 설정하는 API 추가

    RELEASE_2.8.23.1128.002.png

      Figure 3 : 아바타 (Data.AvatarModels.MAN3 에서만 아래 동작 수행)

      ReleaseNote_2.8.23.1218_1.gif
      ReleaseNote_2.8.23.1218_2.gif

        Sample

        투영 면적 중심점 기능 추가

        // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { VIZCore3D.NET.Data.MeasureProjectedArea area = vizcore3d.Review.Measure.GetProjectedArea(plane); txtProjectionArea.Text = area.Projected.ToString(); txtTotalArea.Text = area.Outer.ToString(); txtEmptyArea.Text = area.Inner.ToString(); txtCenter.Text = area.Center.ToString(); //투영 면적 중심점 pbProjection.Image = area.Image; VIZCore3D.NET.Data.CameraData camera = vizcore3d.View.GetCameraData(); switch (plane) { case Data.Planes.YZ: vizcore3d.View.MoveCamera(VIZCore3D.NET.Data.CameraDirection.X_MINUS); break; case Data.Planes.ZX: vizcore3d.View.MoveCamera(VIZCore3D.NET.Data.CameraDirection.Y_MINUS); break; case Data.Planes.XY: vizcore3d.View.MoveCamera(VIZCore3D.NET.Data.CameraDirection.Z_MINUS); break; default: break; } List<VIZCore3D.NET.Data.Line3D> lines = vizcore3d.Projection.GetProjection2DLines(); vizcore3d.View.SetCameraData(camera, false); StringBuilder sb3D = new StringBuilder(); StringBuilder sb2D = new StringBuilder(); foreach (VIZCore3D.NET.Data.Line3D line in lines) { sb3D.AppendLine(line.ToString(VIZCore3D.NET.Data.Dimensions.D3)); sb2D.AppendLine(line.ToString(VIZCore3D.NET.Data.Dimensions.D2)); } txtPoints3D.Text = sb3D.ToString(); txtPoints2D.Text = sb2D.ToString(); DrawingControl.SetData(lines); }

          기준선 단면형상 거리 측정기능 추가

          // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { if (vizcore3d.Model.IsOpen() == false) return; vizcore3d.Review.Measure.AddGeoISPlaneEdgeHeight(); }

            Json 파일 읽는 API 추가/ Json 파일 저장하는 API 추가

            // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example1() { if (vizcore3d.Model.IsOpen() == false) return; vizcore3d.Review.SaveAsJson(@"D:\test\test1.json"); //Json 리뷰파일 저장 OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "JSON File (*.json)|*.json"; dlg.Multiselect = false; if (dlg.ShowDialog() != DialogResult.OK) return; vizcore3d.Review.Open(dlg.FileName); //Json 리뷰파일 읽기 }

              PrimitiveManager에 Pyramid유형 추가/ PrimitiveManager에 Cone유형 추가

              // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { if (vizcore3d.Model.IsOpen() == false) return; // Color Index : rev2bst.config.rev 파일 참고 VIZCore3D.NET.Manager.PrimitiveObject root = vizcore3d.Primitive.AddNode("Root", 4 /* Yellow Color*/); VIZCore3D.NET.Manager.PrimitiveObject child1 = root.AddNode("CHILD1", 7 /* Blue Color */); { VIZCore3D.NET.Manager.PrimitiveBox box1 = new VIZCore3D.NET.Manager.PrimitiveBox(); box1.Set2Point( new float[] { 0, 0, 0 }, new float[] { 100, 100, 100 }, 50.0f ); child1.AddPrimitive(box1); VIZCore3D.NET.Manager.PrimitiveBox box2 = new VIZCore3D.NET.Manager.PrimitiveBox(); VIZCore3D.NET.Data.BoundBox3D boundBox1 = new VIZCore3D.NET.Data.BoundBox3D( new VIZCore3D.NET.Data.Vertex3D( 200, 200, 200 ), new VIZCore3D.NET.Data.Vertex3D( 300, 300, 300 )); box2.SetMinMaxPoints(boundBox1); child1.AddPrimitive(box2); } VIZCore3D.NET.Manager.PrimitiveObject child2 = root.AddNode("CHILD2", 11 /* Pink Color */); { VIZCore3D.NET.Manager.PrimitiveCylinder cylinder1 = new VIZCore3D.NET.Manager.PrimitiveCylinder(); cylinder1.Set2Point( new float[] { 400, 400, 400 }, new float[] { 600, 600, 600 }, 50.0f ); child2.AddPrimitive(cylinder1); } VIZCore3D.NET.Manager.PrimitiveObject child3 = root.AddNode("CHILD3", 11 /* Pink Color */); { VIZCore3D.NET.Manager.PrimitivePyramid pyramid1 = new VIZCore3D.NET.Manager.PrimitivePyramid(); float[] matrix = new float[] { 1.0f, 0.0f, 0.0f, 12550.0f , 0.0f, 1.0f, 0.0f, 31857.0f , 0.0f, 0.0f, 1.0f, 1300.0f }; pyramid1.Matrix = matrix; float[] parameter = new float[] { 10f /* X Top */ , 20f /* Y Top */ , 30f /* X Bottom */ , 40f /* Y Bottom */ , 2.5f /* X Offset */ , 4.5f /* Y Offset */ , 50f /* Height */ }; pyramid1.Parameter = parameter; child3.AddPrimitive(pyramid1); } VIZCore3D.NET.Manager.PrimitiveObject child4 = root.AddNode("CHILD4", 11 /* Pink Color */); { VIZCore3D.NET.Manager.PrimitiveCone cone1 = new VIZCore3D.NET.Manager.PrimitiveCone(); float[] matrix = new float[] { 1.0f, 0.0f, 0.0f, 6572.2214f , 0.0f, 1.0f, 0.0f, 25308.0577f , 0.0f, 0.0f, 1.0f, 3587.6716f }; cone1.Matrix = matrix; float[] parameter1 = new float[] { 100.0f /* Bottom Radius */ , 0.0f /* Top Radius */ , 200.0f /* Height */ , 0.0f /* X Offset */ , 0.0f /* Y Offset */ , 0.0f /* Bottom X Shear */ , 0.0f /* Bottom Y Shear */ , 0.0f /* Top X Shear */ , 0.0f /* Top Y Shear */ }; float[] parameter2 = new float[] { 100.0f /* Bottom Radius */ , 30.0f /* Top Radius */ , 200.0f /* Height */ , 0.0f /* X Offset */ , 0.0f /* Y Offset */ , 0.0f /* Bottom X Shear */ , 0.0f /* Bottom Y Shear */ , 0.0f /* Top X Shear */ , 0.0f /* Top Y Shear */ }; float[] parameter3 = new float[] { 100.0f /* Bottom Radius */ , 30.0f /* Top Radius */ , 200.0f /* Height */ , 50.0f /* X Offset */ , 50.0f /* Y Offset */ , 0.0f /* Bottom X Shear */ , 0.0f /* Bottom Y Shear */ , 0.0f /* Top X Shear */ , 0.0f /* Top Y Shear */ }; cone1.Parameter = parameter3; child4.AddPrimitive(cone1); } // Open Model vizcore3d.Primitive.OpenModel("Primitive", false); }

                그리기 마크업 종료 시, 스냅샷 이미지 저장 API 추가 (추가된 스냅샷 이미지는 CVR 파일 저장 시 해당 파일에 포함)

                // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example1() { //스냅샷 이미지 320 x 240 자동 추가 vizcore3d.Review.DrawingMarkup.ExitDrawMode(true); vizcore3d.Review.Save("D:\\TEST\\Test.cvr"); } private void Example2() { //스냅샷 이미지 추가하지 않음 vizcore3d.Review.DrawingMarkup.ExitDrawMode(false); vizcore3d.Review.Save("D:\\TEST\\Test.cvr"); } private void Example3() { //스냅샷 이미지 1024 x 768 크기로 추가 vizcore3d.Review.DrawingMarkup.ExitDrawMode(1024, 768); vizcore3d.Review.Save("D:\\TEST\\Test.cvr"); }

                  CVR 파일에 저장되어 있는 스냅샷 이미지 불러오기

                  // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { List<VIZCore3D.NET.Data.ReviewItem> items = vizcore3d.Review.Items; if (items.Count == 0) return; VIZCore3D.NET.Data.ReviewItem item = items[items.Count - 1]; if (item.Kind != VIZCore3D.NET.Manager.ReviewManager.ReviewKind.RK_USER_VIEW) return; int id = item.ID; System.Drawing.Image img = vizcore3d.Review.UserView.GetUserViewImage(id); //스냅샷 이미지 불러오기 if (img == null) return; SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "Image (*.jpg)|*.jpg"; if (dlg.ShowDialog() != DialogResult.OK) return; img.Save(dlg.FileName); }

                    Osnap - NodeIndex 반환하도록 추가

                    // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { List<VIZCore3D.NET.Data.Node> items = vizcore3d.Object3D.FromFilter( VIZCore3D.NET.Data.Object3dFilter.SELECTED_TOP ); if (items.Count == 0) return; vizcore3d.GeometryUtility.OnOsnapPickingItem += GeometryUtility_OnOsnapPickingItem; vizcore3d.GeometryUtility.ShowOsnap( items[0].Index /* Node Index */ , false /* Item : Surface */ , true /* Item : Vertex */ , true /* Item : Line */ , true /* Item : Circle */ ); } private void GeometryUtility_OnOsnapPickingItem(object sender, VIZCore3D.NET.Event.EventManager.OsnapPickingItemEventArgs e) { int nodeIndex = e.NodeIndex; // 선택한 부재의 인덱스 VIZCore3D.NET.Data.OsnapKind kind = e.Kind; VIZCore3D.NET.Data.Vertex3D point = e.Point; VIZCore3D.NET.Data.Vertex3D start = e.Start; VIZCore3D.NET.Data.Vertex3D end = e.End; VIZCore3D.NET.Data.Vertex3D normal = e.Normal; }

                      빛 방향 설정하는 API추가

                      // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { //X = 카메라 좌우 //Y = 카메라 상하 //Z = 카메라 앞뒤 //범위 설정: X, Y, Z축마다 -1 ~ +1 //Z축: -1에 가까울 수록 모델의 앞이 어두어짐 // 빛 방향 설정 // 카메라 우측 vizcore3d.View.LightDirection = new Data.Vector3D(-1, 0, 1); }

                        설정 - 탐색 - 아바타 고급 - 모델 - MAN3 추가

                        // VIZCore3D.NET Control private VIZCore3D.NET.VIZCore3DControl vizcore3d; private void Example() { vizcore3d.Walkthrough.AvatarModel = (int)Data.AvatarModels.MAN3; vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.HANDS_UP); // 양손 위로 /* vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.KNEEL_IDLE); // 엎드리기 vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.SIT1_IDLE); // 앉기1 vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.SIT2_IDLE); // 앉기2 vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.SIT3_IDLE); // 앉기3 vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.CLIMBING_DOWN); // 내려감 vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.CLIMBING); // 올라감 vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.HANDS_HALF_UP_IDLE); // 한 손 위로 vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.HANDS_HALF_UP_READY); // 한 손 위로 올림 vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.LAY_DOWN_IDLE); // 눕기 vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.LAY_DOWN_READY); // 눕기 준비자세 vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.SEEING90_IDLE); // 많이 굽힘 vizcore3d.Walkthrough.SetAvatarPose(Data.AvatarPose.SEEING90_READY); // 많이 굽힘 준비자세 */ }
                          Last modified: 03 12월 2024