// ================================================ // 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(); })); }
// ================================================ // 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(); }
// ================================================ // 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(); }
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(); }