// ================================================
        // Function - GUI
        // ================================================
        private void InitTransform()
        {
            vizcore3d.Object3D.Transform.RestoreTransform(new List <int>()
            {
                0
            });

            string matrix = txtMatrix.Text;

            if (String.IsNullOrEmpty(matrix) == false)
            {
                VIZCore3D.NET.Data.Matrix3D m = new VIZCore3D.NET.Data.Matrix3D(matrix);
                vizcore3d.Object3D.FromIndex(0).Transform(m);
            }
        }
        private void btnApply_Click(object sender, EventArgs e)
        {
            {
                VIZCore3D.NET.Data.CameraData camera = vizcore3d.View.GetCameraData();

                VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D(camera.Matrix);
                VIZCore3D.NET.Data.Vector3D vector = matrix.GetRotation();

                tbX.Value = (360 + Convert.ToInt32(vector.X)) % 360;
                tbY.Value = (360 + Convert.ToInt32(vector.Y)) % 360;
                tbZ.Value = (360 + Convert.ToInt32(vector.Z)) % 360;
            }

            this.DialogResult = DialogResult.OK;
            this.Close();
        }
        private void OpenModel()
        {
            string file = System.IO.Path.Combine(Application.StartupPath, "SAMPLE.viz");

            vizcore3d.Model.OpenStream(Block, System.IO.File.ReadAllBytes(file));

            string matrix = txtMatrix.Text;

            if (String.IsNullOrEmpty(matrix) == false)
            {
                VIZCore3D.NET.Data.Matrix3D m = new VIZCore3D.NET.Data.Matrix3D(matrix);
                vizcore3d.Object3D.FromIndex(0).Transform(m);
            }

            vizcore3d.View.RotateCamera(VIZCore3D.NET.Data.ShipbuildingCameraDirection.TOP);
            vizcore3d.View.FitToView();
        }
        private void View_OnViewDefaultMouseMoveEvent(object sender, MouseEventArgs e)
        {
            VIZCore3D.NET.Data.CameraData camera = vizcore3d.View.GetCameraData();

            VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D(camera.Matrix);
            VIZCore3D.NET.Data.Vector3D vector = matrix.GetRotation();

            int x = Convert.ToInt32(vector.X); // X축 회전 각도
            int y = Convert.ToInt32(vector.Y); // Y축 회전 각도
            int z = Convert.ToInt32(vector.Z); // Z축 회전 각도

            x = Math.Abs((360 + x)) % 360;
            y = Math.Abs((360 + y)) % 360;
            z = Math.Abs((360 + z)) % 360;

            tbX.Value = x;
            tbY.Value = y;
            tbZ.Value = z;

            XOffset = x;
            YOffset = y;
            ZOffset = z;

            txtX.Invoke(new EventHandler(delegate
            {
                txtX.Text = x.ToString();
            }));

            txtY.Invoke(new EventHandler(delegate
            {
                txtY.Text = y.ToString();
            }));

            txtZ.Invoke(new EventHandler(delegate
            {
                txtZ.Text = z.ToString();
            }));
        }
Exemple #5
0
        // ================================================
        // Function - DOCK
        // ================================================
        private void btnDockGenerate_Click(object sender, EventArgs e)
        {
            if (vizcore3d.Model.IsOpen() == false)
            {
                return;
            }

            vizcore3d.BeginUpdate();

            // Remove Dock Model
            ExistDockModel(true);

            string strDockLength  = txtDockLength.Text;  // m
            string strDockBreadth = txtDockBreadth.Text; // m
            string strDockDepth   = txtDockDepth.Text;   // m
            float  thickness      = 300.0f;

            float fDockLength  = Convert.ToSingle(strDockLength) * 1000.0f;
            float fDockBreadth = Convert.ToSingle(strDockBreadth) * 1000.0f;
            float fDockDepth   = Convert.ToSingle(strDockDepth) * 1000.0f;

            bool dockSingleModel = ckDockSingle.Checked;
            bool dockSideAll     = ckDockSideAll.Checked;

            VIZCore3D.NET.Data.Node dockAssy = vizcore3d.Structure.CreateNode(
                0
                , VIZCore3D.NET.Data.NodeKind.ASSEMBLY
                , "DOCK_ASSY"
                );

            if (dockSingleModel == true)
            {
                VIZCore3D.NET.Data.Node dockPart = vizcore3d.Structure.CreateNode(
                    dockAssy.Index
                    , VIZCore3D.NET.Data.NodeKind.PART
                    , "DOCK_PART"
                    );

                int bodyId    = vizcore3d.Structure.CreateBody(dockPart.Index, "BODY");
                int bodyIndex = vizcore3d.Structure.GetBodyIndex(bodyId);

                // 바닥면
                {
                    List <float> length = new List <float>();
                    length.Add(fDockLength);
                    length.Add(fDockBreadth);
                    length.Add(thickness);

                    VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                    matrix.Identity();
                    matrix.SetTranslate(
                        MODEL_BOUNDBOX.CenterX
                        , MODEL_BOUNDBOX.CenterY
                        , MODEL_BOUNDBOX.MinZ - (thickness / 2.0f)
                        );

                    Color dockColor = Color.FromArgb(50, 128, 128, 128);

                    vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
                }

                // 뒷면
                if (dockSideAll == true)
                {
                    List <float> length = new List <float>();
                    length.Add(fDockLength);
                    length.Add(thickness);
                    length.Add(fDockDepth);

                    VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                    matrix.Identity();
                    matrix.SetTranslate(
                        MODEL_BOUNDBOX.CenterX
                        , MODEL_BOUNDBOX.CenterY + (fDockBreadth / 2)
                        , MODEL_BOUNDBOX.MinZ + (fDockDepth / 2)
                        );

                    Color dockColor = Color.FromArgb(50, 128, 128, 128);

                    vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
                }

                // 앞면
                if (dockSideAll == true)
                {
                    List <float> length = new List <float>();
                    length.Add(fDockLength);
                    length.Add(thickness);
                    length.Add(fDockDepth);

                    VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                    matrix.Identity();
                    matrix.SetTranslate(
                        MODEL_BOUNDBOX.CenterX
                        , MODEL_BOUNDBOX.CenterY - (fDockBreadth / 2)
                        , MODEL_BOUNDBOX.MinZ + (fDockDepth / 2)
                        );

                    Color dockColor = Color.FromArgb(50, 128, 128, 128);

                    vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
                }

                // 왼쪽면
                if (dockSideAll == true)
                {
                    List <float> length = new List <float>();
                    length.Add(thickness);
                    length.Add(fDockBreadth);
                    length.Add(fDockDepth);

                    VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                    matrix.Identity();
                    matrix.SetTranslate(
                        MODEL_BOUNDBOX.CenterX - (fDockLength / 2)
                        , MODEL_BOUNDBOX.CenterY
                        , MODEL_BOUNDBOX.MinZ + (fDockDepth / 2)
                        );

                    Color dockColor = Color.FromArgb(50, 128, 128, 128);

                    vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
                }

                // 오른쪽면
                if (dockSideAll == true)
                {
                    List <float> length = new List <float>();
                    length.Add(thickness);
                    length.Add(fDockBreadth);
                    length.Add(fDockDepth);

                    VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                    matrix.Identity();
                    matrix.SetTranslate(
                        MODEL_BOUNDBOX.CenterX + (fDockLength / 2)
                        , MODEL_BOUNDBOX.CenterY
                        , MODEL_BOUNDBOX.MinZ + (fDockDepth / 2)
                        );

                    Color dockColor = Color.FromArgb(50, 128, 128, 128);

                    vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
                }
            }
            else
            {
                // 바닥면
                {
                    VIZCore3D.NET.Data.Node dockPart = vizcore3d.Structure.CreateNode(
                        dockAssy.Index
                        , VIZCore3D.NET.Data.NodeKind.PART
                        , "DOCK_PART_BOTTOM"
                        );

                    int bodyId    = vizcore3d.Structure.CreateBody(dockPart.Index, "BODY");
                    int bodyIndex = vizcore3d.Structure.GetBodyIndex(bodyId);

                    List <float> length = new List <float>();
                    length.Add(fDockLength);
                    length.Add(fDockBreadth);
                    length.Add(thickness);

                    VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                    matrix.Identity();
                    matrix.SetTranslate(
                        MODEL_BOUNDBOX.CenterX
                        , MODEL_BOUNDBOX.CenterY
                        , MODEL_BOUNDBOX.MinZ - (thickness / 2.0f)
                        );

                    Color dockColor = Color.FromArgb(50, 128, 128, 128);

                    vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
                }

                // 뒷면
                if (dockSideAll == true)
                {
                    VIZCore3D.NET.Data.Node dockPart = vizcore3d.Structure.CreateNode(
                        dockAssy.Index
                        , VIZCore3D.NET.Data.NodeKind.PART
                        , "DOCK_PART_LEFT"
                        );

                    int bodyId    = vizcore3d.Structure.CreateBody(dockPart.Index, "BODY");
                    int bodyIndex = vizcore3d.Structure.GetBodyIndex(bodyId);

                    List <float> length = new List <float>();
                    length.Add(fDockLength);
                    length.Add(thickness);
                    length.Add(fDockDepth);

                    VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                    matrix.Identity();
                    matrix.SetTranslate(
                        MODEL_BOUNDBOX.CenterX
                        , MODEL_BOUNDBOX.CenterY + (fDockBreadth / 2)
                        , MODEL_BOUNDBOX.MinZ + (fDockDepth / 2)
                        );

                    Color dockColor = Color.FromArgb(50, 128, 128, 128);

                    vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
                }

                // 앞면
                if (dockSideAll == true)
                {
                    VIZCore3D.NET.Data.Node dockPart = vizcore3d.Structure.CreateNode(
                        dockAssy.Index
                        , VIZCore3D.NET.Data.NodeKind.PART
                        , "DOCK_PART_RIGHT"
                        );

                    int bodyId    = vizcore3d.Structure.CreateBody(dockPart.Index, "BODY");
                    int bodyIndex = vizcore3d.Structure.GetBodyIndex(bodyId);

                    List <float> length = new List <float>();
                    length.Add(fDockLength);
                    length.Add(thickness);
                    length.Add(fDockDepth);

                    VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                    matrix.Identity();
                    matrix.SetTranslate(
                        MODEL_BOUNDBOX.CenterX
                        , MODEL_BOUNDBOX.CenterY - (fDockBreadth / 2)
                        , MODEL_BOUNDBOX.MinZ + (fDockDepth / 2)
                        );

                    Color dockColor = Color.FromArgb(50, 128, 128, 128);

                    vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
                }

                // 왼쪽면
                if (dockSideAll == true)
                {
                    VIZCore3D.NET.Data.Node dockPart = vizcore3d.Structure.CreateNode(
                        dockAssy.Index
                        , VIZCore3D.NET.Data.NodeKind.PART
                        , "DOCK_PART_BACK"
                        );

                    int bodyId    = vizcore3d.Structure.CreateBody(dockPart.Index, "BODY");
                    int bodyIndex = vizcore3d.Structure.GetBodyIndex(bodyId);

                    List <float> length = new List <float>();
                    length.Add(thickness);
                    length.Add(fDockBreadth);
                    length.Add(fDockDepth);

                    VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                    matrix.Identity();
                    matrix.SetTranslate(
                        MODEL_BOUNDBOX.CenterX - (fDockLength / 2)
                        , MODEL_BOUNDBOX.CenterY
                        , MODEL_BOUNDBOX.MinZ + (fDockDepth / 2)
                        );

                    Color dockColor = Color.FromArgb(50, 128, 128, 128);

                    vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
                }

                // 오른쪽면
                if (dockSideAll == true)
                {
                    VIZCore3D.NET.Data.Node dockPart = vizcore3d.Structure.CreateNode(
                        dockAssy.Index
                        , VIZCore3D.NET.Data.NodeKind.PART
                        , "DOCK_PART_FRONT"
                        );

                    int bodyId    = vizcore3d.Structure.CreateBody(dockPart.Index, "BODY");
                    int bodyIndex = vizcore3d.Structure.GetBodyIndex(bodyId);

                    List <float> length = new List <float>();
                    length.Add(thickness);
                    length.Add(fDockBreadth);
                    length.Add(fDockDepth);

                    VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                    matrix.Identity();
                    matrix.SetTranslate(
                        MODEL_BOUNDBOX.CenterX + (fDockLength / 2)
                        , MODEL_BOUNDBOX.CenterY
                        , MODEL_BOUNDBOX.MinZ + (fDockDepth / 2)
                        );

                    Color dockColor = Color.FromArgb(50, 128, 128, 128);

                    vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
                }
            }

            // 데이터 재구성
            vizcore3d.Structure.RebuildData();

            vizcore3d.EndUpdate();
        }
Exemple #6
0
        // ================================================
        // Function
        // ================================================
        private void btnAddModel_Click(object sender, EventArgs e)
        {
            vizcore3d.Model.Close();

            vizcore3d.BeginUpdate();

            float fDockLength  = 260 * 1000.0f;
            float fDockBreadth = 43 * 1000.0f;
            float fDockDepth   = 12 * 1000.0f;

            float thickness   = 300.0f;
            bool  dockSideAll = true;

            int rootIndex = vizcore3d.Model.NewEmptyModel("SAMPLE");

            VIZCore3D.NET.Data.Node dockAssy = vizcore3d.Structure.CreateNode(
                0
                , VIZCore3D.NET.Data.NodeKind.ASSEMBLY
                , "DOCK_ASSY"
                );


            // 바닥면
            {
                VIZCore3D.NET.Data.Node dockPart = vizcore3d.Structure.CreateNode(
                    dockAssy.Index
                    , VIZCore3D.NET.Data.NodeKind.PART
                    , "DOCK_PART_BOTTOM"
                    );

                int bodyId    = vizcore3d.Structure.CreateBody(dockPart.Index, "BODY");
                int bodyIndex = vizcore3d.Structure.GetBodyIndex(bodyId);

                List <float> length = new List <float>();
                length.Add(fDockLength);
                length.Add(fDockBreadth);
                length.Add(thickness);

                VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                matrix.SetTranslate(0, 0, -fDockDepth * 0.5f);

                Color dockColor = Color.FromArgb(50, 128, 128, 128);

                vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
            }

            // 뒷면
            if (dockSideAll == true)
            {
                VIZCore3D.NET.Data.Node dockPart = vizcore3d.Structure.CreateNode(
                    dockAssy.Index
                    , VIZCore3D.NET.Data.NodeKind.PART
                    , "DOCK_PART_LEFT"
                    );

                int bodyId    = vizcore3d.Structure.CreateBody(dockPart.Index, "BODY");
                int bodyIndex = vizcore3d.Structure.GetBodyIndex(bodyId);

                List <float> length = new List <float>();
                length.Add(fDockLength);
                length.Add(thickness);
                length.Add(fDockDepth);

                VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                matrix.SetTranslate(0, fDockBreadth * 0.5f, 0);

                Color dockColor = Color.FromArgb(50, 128, 128, 128);

                vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
            }

            // 앞면
            if (dockSideAll == true)
            {
                VIZCore3D.NET.Data.Node dockPart = vizcore3d.Structure.CreateNode(
                    dockAssy.Index
                    , VIZCore3D.NET.Data.NodeKind.PART
                    , "DOCK_PART_RIGHT"
                    );

                int bodyId    = vizcore3d.Structure.CreateBody(dockPart.Index, "BODY");
                int bodyIndex = vizcore3d.Structure.GetBodyIndex(bodyId);

                List <float> length = new List <float>();
                length.Add(fDockLength);
                length.Add(thickness);
                length.Add(fDockDepth);

                VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                matrix.SetTranslate(0, -fDockBreadth * 0.5f, 0);

                Color dockColor = Color.FromArgb(50, 128, 128, 128);

                vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
            }

            // 왼쪽면
            if (dockSideAll == true)
            {
                VIZCore3D.NET.Data.Node dockPart = vizcore3d.Structure.CreateNode(
                    dockAssy.Index
                    , VIZCore3D.NET.Data.NodeKind.PART
                    , "DOCK_PART_BACK"
                    );

                int bodyId    = vizcore3d.Structure.CreateBody(dockPart.Index, "BODY");
                int bodyIndex = vizcore3d.Structure.GetBodyIndex(bodyId);

                List <float> length = new List <float>();
                length.Add(thickness);
                length.Add(fDockBreadth);
                length.Add(fDockDepth);

                VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                matrix.SetTranslate(-fDockLength * 0.5f, 0, 0);

                Color dockColor = Color.FromArgb(50, 128, 128, 128);

                vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
            }

            // 오른쪽면
            if (dockSideAll == true)
            {
                VIZCore3D.NET.Data.Node dockPart = vizcore3d.Structure.CreateNode(
                    dockAssy.Index
                    , VIZCore3D.NET.Data.NodeKind.PART
                    , "DOCK_PART_FRONT"
                    );

                int bodyId    = vizcore3d.Structure.CreateBody(dockPart.Index, "BODY");
                int bodyIndex = vizcore3d.Structure.GetBodyIndex(bodyId);

                List <float> length = new List <float>();
                length.Add(thickness);
                length.Add(fDockBreadth);
                length.Add(fDockDepth);

                VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                matrix.SetTranslate(fDockLength * 0.5f, 0, 0);

                Color dockColor = Color.FromArgb(50, 128, 128, 128);

                vizcore3d.MeshEdit.AddPrimitiveBox(bodyIndex, length, matrix, dockColor, false);
            }

            // 데이터 재구성
            vizcore3d.Structure.RebuildData();

            vizcore3d.EndUpdate();
        }
Exemple #7
0
        private void CreateGridView()
        {
            vizcore3dGrid.BeginUpdate();

            int rootIndex = vizcore3dGrid.Model.NewEmptyModel("GRID");

            int xCount = Convert.ToInt32(txtBoxX.Text);
            int yCount = Convert.ToInt32(txtBoxY.Text);
            int zCount = Convert.ToInt32(txtBoxZ.Text);

            VIZCore3D.NET.Data.BoundBox3D box = vizcore3dMain.Model.BoundBox;

            float xWidth = box.LengthX / xCount;
            float yWidth = box.LengthY / yCount;
            float zWidth = box.LengthZ / zCount;

            for (int z = zCount; z > 0; z--)
            {
                string assemblyName = string.Format("Z-AXIS-#{0}", z);
                VIZCore3D.NET.Data.Node assemblyNode =
                    vizcore3dGrid.Structure.CreateNode(
                        rootIndex                               /* Parent Node Index */
                        , VIZCore3D.NET.Data.NodeKind.ASSEMBLY  /* Node Kind */
                        , assemblyName                          /* Node Name */
                        );

                foreach (KeyValuePair <int, string> item in BoxKey)
                {
                    string zLabel = item.Value.Substring(item.Value.Length - 1);
                    if (zLabel != z.ToString())
                    {
                        continue;
                    }

                    string partName = item.Value;
                    VIZCore3D.NET.Data.Node partNode =
                        vizcore3dGrid.Structure.CreateNode(
                            assemblyNode.Index                      /* Parent Node Index */
                            , VIZCore3D.NET.Data.NodeKind.PART      /* Node Kind */
                            , partName                              /* Node Name */
                            );

                    string bodyName = string.Format("BODY-{0}", item.Value);
                    int    bodyId   =
                        vizcore3dGrid.Structure.CreateBody(
                            partNode.Index                          /* Parent Node Index */
                            , bodyName                              /* Node Name */
                            );

                    int bodyIndex = vizcore3dGrid.Object3D.GetBodyIndex(bodyId);

                    VIZCore3D.NET.Data.SelectionBox selectionBox = vizcore3dMain.SelectionBox.GetItem(item.Key);
                    List <float> length = new List <float>()
                    {
                        selectionBox.BoundBox.LengthX
                        , selectionBox.BoundBox.LengthY
                        , selectionBox.BoundBox.LengthZ
                    };

                    VIZCore3D.NET.Data.Matrix3D matrix = new VIZCore3D.NET.Data.Matrix3D();
                    matrix.SetTranslate(selectionBox.BoundBox.GetCenter().ToVector3D());

                    vizcore3dGrid.MeshEdit.AddPrimitiveBox(
                        bodyIndex              /* Body Node Index */
                        , length               /* Length */
                        , matrix               /* Matrix */
                        , Color.White          /* Color */
                        , false                /* Rebuild Data */
                        );
                }
            }


            vizcore3dGrid.Structure.RebuildData();

            vizcore3dGrid.View.SilhouetteEdge = true;
            vizcore3dGrid.View.XRay.Enable    = true;

            vizcore3dGrid.View.ResetView();

            vizcore3dGrid.EndUpdate();
        }