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(); } } }
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); } }
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; } }
public HullControl() { m_editableHull = null; m_bulkheadGeometry = new List <Geometry>(); m_handles = new List <RectangleGeometry>(); }