/// <summary> /// 개체 선택 이벤트 /// </summary> /// <param name="sender">sender</param> /// <param name="e">Event Args</param> private void Object3D_OnSelectedObject3D(object sender, VIZCore3D.NET.Event.EventManager.SelectedObject3DEventArgs e) { if (e.Node.Count > 0) { // 선택된 개체가 있음 //MessageBox.Show(e.Node.Count.ToString()); if (EnableMessage == true) { vizcore3d.BeginUpdate(); Data.Object3DProperty prop = vizcore3d.Object3D.GeometryProperty.FromIndex(e.Node[0].Index, true); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_01, string.Format("Name : {0}", e.Node[0].NodeName), 5, 5, VIZCore3D.NET.Data.FontSize.Size_14_Bold, Color.Red); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_02, string.Format("Path : {0}", prop.AssemblyPath), 5, 20, VIZCore3D.NET.Data.FontSize.Size_14, Color.Orange); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_03, string.Format("Center : {0}", prop.CenterPoint.ToString()), 5, 35, VIZCore3D.NET.Data.FontSize.Size_14, Color.Yellow); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_04, string.Format("Min. : {0}", prop.MinPoint.ToString()), 5, 50, VIZCore3D.NET.Data.FontSize.Size_14, Color.Green); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_05, string.Format("Max. : {0}", prop.MaxPoint.ToString()), 5, 65, VIZCore3D.NET.Data.FontSize.Size_14, Color.Blue); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_06, string.Format("Mass : {0}", prop.Mass), 5, 80, VIZCore3D.NET.Data.FontSize.Size_14, Color.Indigo); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_07, string.Format("Area : {0}", prop.SurfaceArea), 5, 95, VIZCore3D.NET.Data.FontSize.Size_14, Color.Purple); vizcore3d.EndUpdate(); } } else { //모든 개체 선택 해제 if (EnableMessage == true) { vizcore3d.BeginUpdate(); vizcore3d.View.Message.Clear(); VIZCore3D.NET.Data.BoundBox3D bbox = vizcore3d.Model.BoundBox; vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_01, string.Format("Min. X : {0}", bbox.MinX), 5, 5, VIZCore3D.NET.Data.FontSize.Size_14, Color.Red); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_02, string.Format("Min. Y : {0}", bbox.MinY), 5, 20, VIZCore3D.NET.Data.FontSize.Size_14, Color.Orange); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_03, string.Format("Min. Z : {0}", bbox.MinZ), 5, 35, VIZCore3D.NET.Data.FontSize.Size_14, Color.Yellow); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_04, string.Format("Max. X : {0}", bbox.MaxX), 5, 50, VIZCore3D.NET.Data.FontSize.Size_14, Color.Green); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_05, string.Format("Max. Y : {0}", bbox.MaxY), 5, 65, VIZCore3D.NET.Data.FontSize.Size_14, Color.Blue); vizcore3d.View.Message.Show(VIZCore3D.NET.Data.MessageId.ID_06, string.Format("Max. Z : {0}", bbox.MaxZ), 5, 80, VIZCore3D.NET.Data.FontSize.Size_14, Color.Indigo); vizcore3d.EndUpdate(); } } }
private void btnGenerateAnimation_Click(object sender, EventArgs e) { if (vizcore3d.Model.IsOpen() == false) { return; } // 모델 데이터 맵핑 GetNodes(); ObjectProperty = new Dictionary <int, VIZCore3D.NET.Data.Object3DProperty>(); Transform = new Dictionary <int, Data.Vertex3D>(); vizcore3d.View.EnableAutoFit = false; /* 자동 화면맞춤 비활성 */ //vizcore3d.View.Projection = VIZCore3D.NET.Data.Projections.Perspective; /* 원근 뷰 설정 */ vizcore3d.Animation.UseEffect = false; /* 기본 효과 사용안함 설정 */ vizcore3d.Animation.Clear(); vizcore3d.Animation.Add("Animation"); //vizcore3d.ShowWaitForm(); vizcore3d.Object3D.Select(Data.Object3dSelectionModes.DESELECT_ALL); VIZCore3D.NET.Data.Vertex3D bay = new Data.Vertex3D(83772, -41271, 8664); vizcore3d.BeginUpdate(); foreach (KeyValuePair <int, List <VIZCore3D.NET.Data.Node> > item in Nodes) { if (item.Key <= 0) { continue; } VIZCore3D.NET.Data.Object3DProperty prop = vizcore3d.Object3D.GeometryProperty.FromNode(Nodes[item.Key], false); if (ObjectProperty.ContainsKey(item.Key) == false) { ObjectProperty.Add(item.Key, prop); } VIZCore3D.NET.Data.Vertex3D vec = new Data.Vertex3D(bay.X - prop.CenterPoint.X, bay.Y - prop.CenterPoint.Y, bay.Z - prop.MinPoint.Z); vizcore3d.Object3D.Transform.Move( Nodes[item.Key] , bay.X - prop.CenterPoint.X , bay.Y - prop.CenterPoint.Y , bay.Z - prop.MinPoint.Z , false ); Transform.Add(item.Key, vec); } foreach (KeyValuePair <int, List <VIZCore3D.NET.Data.Node> > item in Nodes) { if (item.Key <= 0) { continue; } vizcore3d.Object3D.Show(item.Value, false); } // 애니메이션 키 추가 AddKey(true, false, TimeInterval); Data.Object3DProperty propCrane = vizcore3d.Object3D.GeometryProperty.FromNode(Nodes[-7]); //for (int i = 1; i < 13; i++) foreach (KeyValuePair <int, List <VIZCore3D.NET.Data.Node> > item in Nodes) { if (item.Key <= 0) { continue; } int i = item.Key; Data.Vertex3D vecTrans = Transform[i]; // 블록 조회 vizcore3d.Object3D.Show(Nodes[i], true); // 애니메이션 키 추가 AddKey(true, false, TimeInterval); // 크레인 이동 (BAY) : 블록 위치로... MoveCrane(true, bay.X, 0.0f, 0.0f); // 크레인 호이스트 이동 : 블록 위치로... MoveCrane(false, bay.X, bay.Y, 0.0f); Data.Object3DProperty propModel = vizcore3d.Object3D.GeometryProperty.FromNode(Nodes[i]); float fOffset = propCrane.MinPoint.Z - propModel.MaxPoint.Z - 5000f; // 크레인 호이스트 : Bring To Bottom DownCrane(false, Nodes[i], fOffset); // 블록 : Bring To Top UpCrane(true, Nodes[i], fOffset); // 블록 : Bring To Center(Y) VIZCore3D.NET.Data.Vector3D tran3 = new VIZCore3D.NET.Data.Vector3D(0, -vecTrans.Y, 0); vizcore3d.Object3D.Transform.Move(Nodes[i], tran3, false); // 크레인 호이스트 이동 MoveCrane(false, bay.X, ObjectProperty[i].CenterPoint.Y, 0.0f); VIZCore3D.NET.Data.Vector3D tran4 = new VIZCore3D.NET.Data.Vector3D(-vecTrans.X, 0, 0); vizcore3d.Object3D.Transform.Move(Nodes[i], tran4, false); // 크레인 이동 (BAY) // 크레인 호이스트 이동 MoveCrane(true, ObjectProperty[i].CenterPoint.X, 0.0f, 0.0f); Data.Object3DProperty propModelO = ObjectProperty[i]; Data.Object3DProperty propModelC = vizcore3d.Object3D.GeometryProperty.FromNode(Nodes[i]); fOffset = propCrane.MinPoint.Z - propModelO.MaxPoint.Z - 5000f; // 크레인 호이스트 : Bring To Bottom DownCrane(true, Nodes[i], fOffset); // 블록 : Bring To Top UpCrane(false, null, fOffset); } AddKey(true, false, TimeInterval); vizcore3d.EndUpdate(); //vizcore3d.CloseWaitForm(); MessageBox.Show("Animation Created.", "VIZCore3D.NET", MessageBoxButtons.OK, MessageBoxIcon.Information); }