Example #1
0
        private void ResizeClick(object sender, RoutedEventArgs e)
        {
            if (myHull.Bulkheads.Count == 0)
            {
                MessageBox.Show("Can't resize a non-existant hull.");
                return;
            }

            EditableHull hull = new EditableHull(myHull);

            Size3D originalSize = hull.GetSize();

            ResizeWindow resize = new ResizeWindow(hull);

            resize.ShowDialog();

            if (resize.OK)
            {
                ResizeWindowData resizeData = (ResizeWindowData)resize.FindResource("ResizeData");
                double           scale_x    = 1.0;
                double           scale_y    = 1.0;
                double           scale_z    = 1.0;

                if (resizeData != null)
                {
                    scale_x = resizeData.Width / originalSize.X;
                    scale_y = resizeData.Height / originalSize.Y;
                    scale_z = resizeData.Length / originalSize.Z;

                    myHull.Scale(scale_x, scale_y, scale_z);
                    UpdateViews();
                }
            }
        }
Example #2
0
        private void UpdateViews()
        {
            EditableHull topView = new EditableHull(myHull);

            topView.Rotate(0, 90, 90);
            TopView.editableHull = topView;
            TopView.perspective  = HullControl.PerspectiveType.TOP;

            EditableHull sideView = new EditableHull(myHull);

            sideView.Rotate(0, 90, 180);
            SideView.editableHull = sideView;
            SideView.perspective  = HullControl.PerspectiveType.SIDE;

            EditableHull frontView = new EditableHull(myHull);

            frontView.Rotate(0, 0, 180);
            FrontView.editableHull = frontView;
            FrontView.perspective  = HullControl.PerspectiveType.FRONT;

            EditableHull perspectiveView = new EditableHull(myHull);

            switch (PerspectiveView.perspective)
            {
            case HullControl.PerspectiveType.FRONT:
                perspectiveView.Rotate(0, 0, 180);
                break;

            case HullControl.PerspectiveType.TOP:
                perspectiveView.Rotate(0, 90, 90);
                break;

            case HullControl.PerspectiveType.SIDE:
                perspectiveView.Rotate(0, 90, 180);
                break;

            case HullControl.PerspectiveType.PERSPECTIVE:
                perspectiveView.Rotate(10, 30, 190);
                break;
            }
            PerspectiveView.editableHull = perspectiveView;

            TopView.InvalidateVisual();
            FrontView.InvalidateVisual();
            SideView.InvalidateVisual();
            PerspectiveView.InvalidateVisual();
        }
        public PanelLayoutWindow(Hull myHull)
        {
            InitializeComponent();

            m_panels = new List <Panel>();

            // Initialize the panels
            if (myHull != null && myHull.Bulkheads.Count != 0)
            {
                EditableHull eHull = new EditableHull(myHull);
                for (int index = 0; index < eHull.Chines.Count / 2; index++)
                {
                    Panel p = new Panel(eHull.Chines[index], eHull.Chines[index + 1]);
                    p.name = "Panel " + (index + 1);
                    m_panels.Add(p);
                }

                int bulkheadIndex = 1;

                foreach (Bulkhead bulk in eHull.Bulkheads)
                {
                    if (bulk.Type != Bulkhead.BulkheadType.BOW)
                    {
                        Panel p = new Panel(bulk);
                        p.name = "Bulkhead " + bulkheadIndex;
                        bulkheadIndex++;
                        m_panels.Add(p);
                    }
                }
            }

            foreach (Panel panel in m_panels)
            {
                MenuItem item = new MenuItem();
                item.Header = panel.name;
                item.Click += AddPanelClick;
                PanelContextMenu.Items.Add(item);
            }
        }
Example #4
0
        public ResizeWindow(EditableHull hull)
        {
            InitializeComponent();
            ResizeWindowData resizeData = (ResizeWindowData)this.FindResource("ResizeData");

            if (resizeData != null)
            {
                bool proportional = resizeData.Proportional;

                // Need to turn off Proportional for initial setup
                resizeData.Proportional = false;

                Size3D size = hull.GetSize();
                resizeData.Width        = size.X; // multiply by 2 because this is half-hull
                resizeData.Height       = size.Y;
                resizeData.Length       = size.Z;
                resizeData.Proportional = true;

                // Reset proportional
                resizeData.Proportional = proportional;
            }
        }
Example #5
0
 public HullControl()
 {
     m_editableHull     = null;
     m_bulkheadGeometry = new List <Geometry>();
     m_handles          = new List <RectangleGeometry>();
 }