Example #1
0
        /// <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();
                }
            }
        }
Example #2
0
        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);
        }