From e880c8806442d87f405a206c2dd843ca3c1ea23b Mon Sep 17 00:00:00 2001 From: Mans Date: Tue, 27 Apr 2021 12:10:49 +0200 Subject: [PATCH] Small fixes --- HLCt/Parts/START.SLDPRT | Bin 48548 -> 48826 bytes Wardrobe/GUI/AppForm.vb | 7 + Wardrobe/GUI/Individual.Designer.vb | 201 ++++++++++-------- Wardrobe/GUI/Individual.vb | 5 + Wardrobe/Gratings Data/User_Input.vb | 19 ++ Wardrobe/SolidWorks/Frame_3D.vb | 22 +- Wardrobe/SolidWorks/Frame_Drawing.vb | 10 +- Wardrobe/SolidWorks/Individual_3D.vb | 80 +++---- .../SolidWorks/Individual_3D_Simplified.vb | 94 ++++---- Wardrobe/SolidWorks/Instructions.vb | 99 ++++++--- Wardrobe/SolidWorks/Multiple_3D.vb | 54 ++++- Wardrobe/SolidWorks/Multiple_3D_Simplified.vb | 71 ++++++- 12 files changed, 435 insertions(+), 227 deletions(-) diff --git a/HLCt/Parts/START.SLDPRT b/HLCt/Parts/START.SLDPRT index 2f43324ece83a5bcfba929dde3c4c73b2aeeb4fd..d0abf65b9dfb7f82a9cd4bfb5e9652dc1b31aa9d 100644 GIT binary patch delta 25398 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�}n++Q!{i%89+n}|}U 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 delta 25197 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 diff --git a/Wardrobe/GUI/AppForm.vb b/Wardrobe/GUI/AppForm.vb index 67c90c9..f7b407d 100644 --- a/Wardrobe/GUI/AppForm.vb +++ b/Wardrobe/GUI/AppForm.vb @@ -66,6 +66,13 @@ Public Class AppForm Individual.ComboBox_Type.Items.Add("Pressure Welded") Individual.ComboBox_Type.Items.Add("Type A") + + For i = 25 To 55 Step 5 + Individual.ComboBox_Frame.Items.Add(i & " x " & i) + Next + For i = 65 To 85 Step 10 + Individual.ComboBox_Frame.Items.Add(i & " x " & i) + Next End Sub End Class \ No newline at end of file diff --git a/Wardrobe/GUI/Individual.Designer.vb b/Wardrobe/GUI/Individual.Designer.vb index 33cd770..3a42695 100644 --- a/Wardrobe/GUI/Individual.Designer.vb +++ b/Wardrobe/GUI/Individual.Designer.vb @@ -24,6 +24,11 @@ Partial Class Individual Private Sub InitializeComponent() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Individual)) Me.Panel_Data = New System.Windows.Forms.Panel() + Me.CheckBox_3DModel = New System.Windows.Forms.CheckBox() + Me.CheckBox_FrameDrawing = New System.Windows.Forms.CheckBox() + Me.CheckBox_GratingDrawing = New System.Windows.Forms.CheckBox() + Me.CheckBox_Frames = New System.Windows.Forms.CheckBox() + Me.CheckBox_Instructions = New System.Windows.Forms.CheckBox() Me.Button_Back = New System.Windows.Forms.Button() Me.TextBox_Width = New System.Windows.Forms.TextBox() Me.ComboBox_Width = New System.Windows.Forms.ComboBox() @@ -59,11 +64,8 @@ Partial Class Individual Me.Panel_Grating = New System.Windows.Forms.Panel() Me.Label2 = New System.Windows.Forms.Label() Me.Label1 = New System.Windows.Forms.Label() - Me.CheckBox_Instructions = New System.Windows.Forms.CheckBox() - Me.CheckBox_Frames = New System.Windows.Forms.CheckBox() - Me.CheckBox_GratingDrawing = New System.Windows.Forms.CheckBox() - Me.CheckBox_FrameDrawing = New System.Windows.Forms.CheckBox() - Me.CheckBox_3DModel = New System.Windows.Forms.CheckBox() + Me.ComboBox_Frame = New System.Windows.Forms.ComboBox() + Me.Label8 = New System.Windows.Forms.Label() Me.Panel_Data.SuspendLayout() Me.Panel_Recesses.SuspendLayout() Me.Panel_Grating.SuspendLayout() @@ -72,6 +74,8 @@ Partial Class Individual 'Panel_Data ' Me.Panel_Data.BackColor = System.Drawing.SystemColors.GradientActiveCaption + Me.Panel_Data.Controls.Add(Me.Label8) + Me.Panel_Data.Controls.Add(Me.ComboBox_Frame) Me.Panel_Data.Controls.Add(Me.CheckBox_3DModel) Me.Panel_Data.Controls.Add(Me.CheckBox_FrameDrawing) Me.Panel_Data.Controls.Add(Me.CheckBox_GratingDrawing) @@ -107,6 +111,57 @@ Partial Class Individual Me.Panel_Data.Size = New System.Drawing.Size(420, 950) Me.Panel_Data.TabIndex = 0 ' + 'CheckBox_3DModel + ' + Me.CheckBox_3DModel.AutoSize = True + Me.CheckBox_3DModel.Location = New System.Drawing.Point(235, 727) + Me.CheckBox_3DModel.Name = "CheckBox_3DModel" + Me.CheckBox_3DModel.Size = New System.Drawing.Size(131, 20) + Me.CheckBox_3DModel.TabIndex = 32 + Me.CheckBox_3DModel.Text = "3D Grating Model" + Me.CheckBox_3DModel.UseVisualStyleBackColor = True + ' + 'CheckBox_FrameDrawing + ' + Me.CheckBox_FrameDrawing.AutoSize = True + Me.CheckBox_FrameDrawing.Enabled = False + Me.CheckBox_FrameDrawing.Location = New System.Drawing.Point(235, 808) + Me.CheckBox_FrameDrawing.Name = "CheckBox_FrameDrawing" + Me.CheckBox_FrameDrawing.Size = New System.Drawing.Size(118, 20) + Me.CheckBox_FrameDrawing.TabIndex = 31 + Me.CheckBox_FrameDrawing.Text = "Frame Drawing" + Me.CheckBox_FrameDrawing.UseVisualStyleBackColor = True + ' + 'CheckBox_GratingDrawing + ' + Me.CheckBox_GratingDrawing.AutoSize = True + Me.CheckBox_GratingDrawing.Location = New System.Drawing.Point(235, 754) + Me.CheckBox_GratingDrawing.Name = "CheckBox_GratingDrawing" + Me.CheckBox_GratingDrawing.Size = New System.Drawing.Size(122, 20) + Me.CheckBox_GratingDrawing.TabIndex = 30 + Me.CheckBox_GratingDrawing.Text = "Grating Drawing" + Me.CheckBox_GratingDrawing.UseVisualStyleBackColor = True + ' + 'CheckBox_Frames + ' + Me.CheckBox_Frames.AutoSize = True + Me.CheckBox_Frames.Location = New System.Drawing.Point(235, 781) + Me.CheckBox_Frames.Name = "CheckBox_Frames" + Me.CheckBox_Frames.Size = New System.Drawing.Size(101, 20) + Me.CheckBox_Frames.TabIndex = 29 + Me.CheckBox_Frames.Text = "Add Frames" + Me.CheckBox_Frames.UseVisualStyleBackColor = True + ' + 'CheckBox_Instructions + ' + Me.CheckBox_Instructions.AutoSize = True + Me.CheckBox_Instructions.Location = New System.Drawing.Point(235, 835) + Me.CheckBox_Instructions.Name = "CheckBox_Instructions" + Me.CheckBox_Instructions.Size = New System.Drawing.Size(156, 20) + Me.CheckBox_Instructions.TabIndex = 28 + Me.CheckBox_Instructions.Text = "Assembly Instructions" + Me.CheckBox_Instructions.UseVisualStyleBackColor = True + ' 'Button_Back ' Me.Button_Back.Location = New System.Drawing.Point(12, 12) @@ -120,7 +175,7 @@ Partial Class Individual 'TextBox_Width ' Me.TextBox_Width.Location = New System.Drawing.Point(147, 572) - Me.TextBox_Width.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.TextBox_Width.Margin = New System.Windows.Forms.Padding(4) Me.TextBox_Width.Name = "TextBox_Width" Me.TextBox_Width.Size = New System.Drawing.Size(205, 22) Me.TextBox_Width.TabIndex = 26 @@ -130,7 +185,7 @@ Partial Class Individual Me.ComboBox_Width.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Width.FormattingEnabled = True Me.ComboBox_Width.Location = New System.Drawing.Point(147, 572) - Me.ComboBox_Width.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.ComboBox_Width.Margin = New System.Windows.Forms.Padding(4) Me.ComboBox_Width.Name = "ComboBox_Width" Me.ComboBox_Width.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Width.TabIndex = 25 @@ -142,7 +197,7 @@ Partial Class Individual Me.Label7.Location = New System.Drawing.Point(359, 495) Me.Label7.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label7.Name = "Label7" - Me.Label7.Size = New System.Drawing.Size(30, 17) + Me.Label7.Size = New System.Drawing.Size(23, 13) Me.Label7.TabIndex = 24 Me.Label7.Text = "mm" ' @@ -153,7 +208,7 @@ Partial Class Individual Me.Label6.Location = New System.Drawing.Point(359, 576) Me.Label6.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(30, 17) + Me.Label6.Size = New System.Drawing.Size(23, 13) Me.Label6.TabIndex = 23 Me.Label6.Text = "mm" ' @@ -164,7 +219,7 @@ Partial Class Individual Me.Label5.Location = New System.Drawing.Point(359, 404) Me.Label5.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(30, 17) + Me.Label5.Size = New System.Drawing.Size(23, 13) Me.Label5.TabIndex = 22 Me.Label5.Text = "mm" ' @@ -175,7 +230,7 @@ Partial Class Individual Me.Label4.Location = New System.Drawing.Point(359, 346) Me.Label4.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(30, 17) + Me.Label4.Size = New System.Drawing.Size(23, 13) Me.Label4.TabIndex = 21 Me.Label4.Text = "mm" ' @@ -186,7 +241,7 @@ Partial Class Individual Me.Label3.Location = New System.Drawing.Point(359, 292) Me.Label3.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(30, 17) + Me.Label3.Size = New System.Drawing.Size(23, 13) Me.Label3.TabIndex = 20 Me.Label3.Text = "mm" ' @@ -194,7 +249,7 @@ Partial Class Individual ' Me.Button_Export_GUI.BackColor = System.Drawing.Color.Transparent Me.Button_Export_GUI.Location = New System.Drawing.Point(65, 866) - Me.Button_Export_GUI.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Button_Export_GUI.Margin = New System.Windows.Forms.Padding(4) Me.Button_Export_GUI.Name = "Button_Export_GUI" Me.Button_Export_GUI.Size = New System.Drawing.Size(100, 28) Me.Button_Export_GUI.TabIndex = 18 @@ -205,7 +260,7 @@ Partial Class Individual ' Me.Button_Export_SW.BackColor = System.Drawing.Color.Transparent Me.Button_Export_SW.Location = New System.Drawing.Point(235, 866) - Me.Button_Export_SW.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Button_Export_SW.Margin = New System.Windows.Forms.Padding(4) Me.Button_Export_SW.Name = "Button_Export_SW" Me.Button_Export_SW.Size = New System.Drawing.Size(100, 28) Me.Button_Export_SW.TabIndex = 17 @@ -219,7 +274,7 @@ Partial Class Individual Me.Label_Heading.Location = New System.Drawing.Point(93, 46) Me.Label_Heading.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label_Heading.Name = "Label_Heading" - Me.Label_Heading.Size = New System.Drawing.Size(198, 25) + Me.Label_Heading.Size = New System.Drawing.Size(166, 20) Me.Label_Heading.TabIndex = 15 Me.Label_Heading.Text = "Grating Parameters" ' @@ -230,7 +285,7 @@ Partial Class Individual Me.Label_Material.Location = New System.Drawing.Point(61, 176) Me.Label_Material.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label_Material.Name = "Label_Material" - Me.Label_Material.Size = New System.Drawing.Size(69, 20) + Me.Label_Material.Size = New System.Drawing.Size(58, 17) Me.Label_Material.TabIndex = 14 Me.Label_Material.Text = "Material" ' @@ -241,7 +296,7 @@ Partial Class Individual Me.Label_Mesh.Location = New System.Drawing.Point(41, 287) Me.Label_Mesh.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label_Mesh.Name = "Label_Mesh" - Me.Label_Mesh.Size = New System.Drawing.Size(88, 20) + Me.Label_Mesh.Size = New System.Drawing.Size(73, 17) Me.Label_Mesh.TabIndex = 13 Me.Label_Mesh.Text = "Mesh Size" ' @@ -252,7 +307,7 @@ Partial Class Individual Me.Label_Height.Location = New System.Drawing.Point(73, 343) Me.Label_Height.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label_Height.Name = "Label_Height" - Me.Label_Height.Size = New System.Drawing.Size(58, 20) + Me.Label_Height.Size = New System.Drawing.Size(49, 17) Me.Label_Height.TabIndex = 12 Me.Label_Height.Text = "Height" ' @@ -263,7 +318,7 @@ Partial Class Individual Me.Label_Thickness.Location = New System.Drawing.Point(43, 399) Me.Label_Thickness.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label_Thickness.Name = "Label_Thickness" - Me.Label_Thickness.Size = New System.Drawing.Size(85, 20) + Me.Label_Thickness.Size = New System.Drawing.Size(72, 17) Me.Label_Thickness.TabIndex = 11 Me.Label_Thickness.Text = "Thickness" ' @@ -274,7 +329,7 @@ Partial Class Individual Me.Label_Width.Location = New System.Drawing.Point(80, 572) Me.Label_Width.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label_Width.Name = "Label_Width" - Me.Label_Width.Size = New System.Drawing.Size(52, 20) + Me.Label_Width.Size = New System.Drawing.Size(44, 17) Me.Label_Width.TabIndex = 10 Me.Label_Width.Text = "Width" ' @@ -285,7 +340,7 @@ Partial Class Individual Me.Label_Length.Location = New System.Drawing.Point(69, 490) Me.Label_Length.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label_Length.Name = "Label_Length" - Me.Label_Length.Size = New System.Drawing.Size(60, 20) + Me.Label_Length.Size = New System.Drawing.Size(52, 17) Me.Label_Length.TabIndex = 9 Me.Label_Length.Text = "Length" ' @@ -296,14 +351,14 @@ Partial Class Individual Me.Label_Type.Location = New System.Drawing.Point(85, 124) Me.Label_Type.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label_Type.Name = "Label_Type" - Me.Label_Type.Size = New System.Drawing.Size(45, 20) + Me.Label_Type.Size = New System.Drawing.Size(40, 16) Me.Label_Type.TabIndex = 8 Me.Label_Type.Text = "Type" ' 'TextBox_Length ' Me.TextBox_Length.Location = New System.Drawing.Point(147, 490) - Me.TextBox_Length.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.TextBox_Length.Margin = New System.Windows.Forms.Padding(4) Me.TextBox_Length.Name = "TextBox_Length" Me.TextBox_Length.Size = New System.Drawing.Size(205, 22) Me.TextBox_Length.TabIndex = 7 @@ -313,7 +368,7 @@ Partial Class Individual Me.ComboBox_Mesh.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Mesh.FormattingEnabled = True Me.ComboBox_Mesh.Location = New System.Drawing.Point(147, 287) - Me.ComboBox_Mesh.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.ComboBox_Mesh.Margin = New System.Windows.Forms.Padding(4) Me.ComboBox_Mesh.Name = "ComboBox_Mesh" Me.ComboBox_Mesh.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Mesh.TabIndex = 6 @@ -323,7 +378,7 @@ Partial Class Individual Me.ComboBox_Thickness.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Thickness.FormattingEnabled = True Me.ComboBox_Thickness.Location = New System.Drawing.Point(147, 398) - Me.ComboBox_Thickness.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.ComboBox_Thickness.Margin = New System.Windows.Forms.Padding(4) Me.ComboBox_Thickness.Name = "ComboBox_Thickness" Me.ComboBox_Thickness.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Thickness.TabIndex = 3 @@ -333,7 +388,7 @@ Partial Class Individual Me.ComboBox_Height.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Height.FormattingEnabled = True Me.ComboBox_Height.Location = New System.Drawing.Point(147, 342) - Me.ComboBox_Height.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.ComboBox_Height.Margin = New System.Windows.Forms.Padding(4) Me.ComboBox_Height.Name = "ComboBox_Height" Me.ComboBox_Height.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Height.TabIndex = 2 @@ -343,7 +398,7 @@ Partial Class Individual Me.ComboBox_Material.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Material.FormattingEnabled = True Me.ComboBox_Material.Location = New System.Drawing.Point(147, 175) - Me.ComboBox_Material.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.ComboBox_Material.Margin = New System.Windows.Forms.Padding(4) Me.ComboBox_Material.Name = "ComboBox_Material" Me.ComboBox_Material.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Material.TabIndex = 1 @@ -353,7 +408,7 @@ Partial Class Individual Me.ComboBox_Type.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Type.FormattingEnabled = True Me.ComboBox_Type.Location = New System.Drawing.Point(147, 124) - Me.ComboBox_Type.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.ComboBox_Type.Margin = New System.Windows.Forms.Padding(4) Me.ComboBox_Type.Name = "ComboBox_Type" Me.ComboBox_Type.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Type.TabIndex = 0 @@ -369,7 +424,7 @@ Partial Class Individual Me.Panel_Recesses.Controls.Add(Me.Button_Angle_Corner) Me.Panel_Recesses.Controls.Add(Me.Label_Recesses) Me.Panel_Recesses.Location = New System.Drawing.Point(0, 0) - Me.Panel_Recesses.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Panel_Recesses.Margin = New System.Windows.Forms.Padding(4) Me.Panel_Recesses.Name = "Panel_Recesses" Me.Panel_Recesses.Size = New System.Drawing.Size(1860, 148) Me.Panel_Recesses.TabIndex = 1 @@ -383,7 +438,7 @@ Partial Class Individual Me.Button_Radius.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Radius.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button_Radius.Location = New System.Drawing.Point(1341, 31) - Me.Button_Radius.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Button_Radius.Margin = New System.Windows.Forms.Padding(4) Me.Button_Radius.Name = "Button_Radius" Me.Button_Radius.Size = New System.Drawing.Size(93, 86) Me.Button_Radius.TabIndex = 22 @@ -397,7 +452,7 @@ Partial Class Individual Me.Button_Square_Middle.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Square_Middle.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button_Square_Middle.Location = New System.Drawing.Point(1201, 31) - Me.Button_Square_Middle.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Button_Square_Middle.Margin = New System.Windows.Forms.Padding(4) Me.Button_Square_Middle.Name = "Button_Square_Middle" Me.Button_Square_Middle.Size = New System.Drawing.Size(93, 86) Me.Button_Square_Middle.TabIndex = 21 @@ -411,7 +466,7 @@ Partial Class Individual Me.Button_Square_Side.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Square_Side.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button_Square_Side.Location = New System.Drawing.Point(1061, 31) - Me.Button_Square_Side.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Button_Square_Side.Margin = New System.Windows.Forms.Padding(4) Me.Button_Square_Side.Name = "Button_Square_Side" Me.Button_Square_Side.Size = New System.Drawing.Size(93, 86) Me.Button_Square_Side.TabIndex = 20 @@ -425,7 +480,7 @@ Partial Class Individual Me.Button_Angle_Side.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Angle_Side.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button_Angle_Side.Location = New System.Drawing.Point(781, 31) - Me.Button_Angle_Side.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Button_Angle_Side.Margin = New System.Windows.Forms.Padding(4) Me.Button_Angle_Side.Name = "Button_Angle_Side" Me.Button_Angle_Side.Size = New System.Drawing.Size(93, 86) Me.Button_Angle_Side.TabIndex = 19 @@ -439,7 +494,7 @@ Partial Class Individual Me.Button_Square_Corner.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Square_Corner.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button_Square_Corner.Location = New System.Drawing.Point(921, 31) - Me.Button_Square_Corner.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Button_Square_Corner.Margin = New System.Windows.Forms.Padding(4) Me.Button_Square_Corner.Name = "Button_Square_Corner" Me.Button_Square_Corner.Size = New System.Drawing.Size(93, 86) Me.Button_Square_Corner.TabIndex = 18 @@ -453,7 +508,7 @@ Partial Class Individual Me.Button_Angle_Corner.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Angle_Corner.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button_Angle_Corner.Location = New System.Drawing.Point(641, 31) - Me.Button_Angle_Corner.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Button_Angle_Corner.Margin = New System.Windows.Forms.Padding(4) Me.Button_Angle_Corner.Name = "Button_Angle_Corner" Me.Button_Angle_Corner.Size = New System.Drawing.Size(93, 86) Me.Button_Angle_Corner.TabIndex = 17 @@ -466,7 +521,7 @@ Partial Class Individual Me.Label_Recesses.Location = New System.Drawing.Point(439, 44) Me.Label_Recesses.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label_Recesses.Name = "Label_Recesses" - Me.Label_Recesses.Size = New System.Drawing.Size(106, 25) + Me.Label_Recesses.Size = New System.Drawing.Size(88, 20) Me.Label_Recesses.TabIndex = 16 Me.Label_Recesses.Text = "Recesses" ' @@ -476,7 +531,7 @@ Partial Class Individual Me.Panel_Grating.Controls.Add(Me.Label2) Me.Panel_Grating.Controls.Add(Me.Label1) Me.Panel_Grating.Location = New System.Drawing.Point(420, 148) - Me.Panel_Grating.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Panel_Grating.Margin = New System.Windows.Forms.Padding(4) Me.Panel_Grating.Name = "Panel_Grating" Me.Panel_Grating.Size = New System.Drawing.Size(1440, 802) Me.Panel_Grating.TabIndex = 2 @@ -488,7 +543,7 @@ Partial Class Individual Me.Label2.Location = New System.Drawing.Point(85, 769) Me.Label2.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(16, 17) + Me.Label2.Size = New System.Drawing.Size(13, 13) Me.Label2.TabIndex = 1 Me.Label2.Text = "L" ' @@ -499,60 +554,30 @@ Partial Class Individual Me.Label1.Location = New System.Drawing.Point(17, 708) Me.Label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(21, 17) + Me.Label1.Size = New System.Drawing.Size(18, 13) Me.Label1.TabIndex = 0 Me.Label1.Text = "W" ' - 'CheckBox_Instructions + 'ComboBox_Frame ' - Me.CheckBox_Instructions.AutoSize = True - Me.CheckBox_Instructions.Location = New System.Drawing.Point(235, 835) - Me.CheckBox_Instructions.Name = "CheckBox_Instructions" - Me.CheckBox_Instructions.Size = New System.Drawing.Size(166, 21) - Me.CheckBox_Instructions.TabIndex = 28 - Me.CheckBox_Instructions.Text = "Assembly Instructions" - Me.CheckBox_Instructions.UseVisualStyleBackColor = True + Me.ComboBox_Frame.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.ComboBox_Frame.FormattingEnabled = True + Me.ComboBox_Frame.Location = New System.Drawing.Point(147, 656) + Me.ComboBox_Frame.Margin = New System.Windows.Forms.Padding(4) + Me.ComboBox_Frame.Name = "ComboBox_Frame" + Me.ComboBox_Frame.Size = New System.Drawing.Size(205, 24) + Me.ComboBox_Frame.TabIndex = 33 ' - 'CheckBox_Frames + 'Label8 ' - Me.CheckBox_Frames.AutoSize = True - Me.CheckBox_Frames.Location = New System.Drawing.Point(235, 781) - Me.CheckBox_Frames.Name = "CheckBox_Frames" - Me.CheckBox_Frames.Size = New System.Drawing.Size(106, 21) - Me.CheckBox_Frames.TabIndex = 29 - Me.CheckBox_Frames.Text = "Add Frames" - Me.CheckBox_Frames.UseVisualStyleBackColor = True - ' - 'CheckBox_GratingDrawing - ' - Me.CheckBox_GratingDrawing.AutoSize = True - Me.CheckBox_GratingDrawing.Location = New System.Drawing.Point(235, 754) - Me.CheckBox_GratingDrawing.Name = "CheckBox_GratingDrawing" - Me.CheckBox_GratingDrawing.Size = New System.Drawing.Size(132, 21) - Me.CheckBox_GratingDrawing.TabIndex = 30 - Me.CheckBox_GratingDrawing.Text = "Grating Drawing" - Me.CheckBox_GratingDrawing.UseVisualStyleBackColor = True - ' - 'CheckBox_FrameDrawing - ' - Me.CheckBox_FrameDrawing.AutoSize = True - Me.CheckBox_FrameDrawing.Enabled = False - Me.CheckBox_FrameDrawing.Location = New System.Drawing.Point(235, 808) - Me.CheckBox_FrameDrawing.Name = "CheckBox_FrameDrawing" - Me.CheckBox_FrameDrawing.Size = New System.Drawing.Size(125, 21) - Me.CheckBox_FrameDrawing.TabIndex = 31 - Me.CheckBox_FrameDrawing.Text = "Frame Drawing" - Me.CheckBox_FrameDrawing.UseVisualStyleBackColor = True - ' - 'CheckBox_3DModel - ' - Me.CheckBox_3DModel.AutoSize = True - Me.CheckBox_3DModel.Location = New System.Drawing.Point(235, 727) - Me.CheckBox_3DModel.Name = "CheckBox_3DModel" - Me.CheckBox_3DModel.Size = New System.Drawing.Size(141, 21) - Me.CheckBox_3DModel.TabIndex = 32 - Me.CheckBox_3DModel.Text = "3D Grating Model" - Me.CheckBox_3DModel.UseVisualStyleBackColor = True + Me.Label8.AutoSize = True + Me.Label8.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label8.Location = New System.Drawing.Point(53, 656) + Me.Label8.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(81, 17) + Me.Label8.TabIndex = 34 + Me.Label8.Text = "Frame WxH" ' 'Individual ' @@ -564,7 +589,7 @@ Partial Class Individual Me.Controls.Add(Me.Panel_Recesses) Me.Controls.Add(Me.Panel_Grating) Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None - Me.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4) + Me.Margin = New System.Windows.Forms.Padding(4) Me.Name = "Individual" Me.Text = "Individual" Me.Panel_Data.ResumeLayout(False) @@ -618,4 +643,6 @@ Partial Class Individual Friend WithEvents CheckBox_Frames As CheckBox Friend WithEvents CheckBox_Instructions As CheckBox Friend WithEvents CheckBox_3DModel As CheckBox + Friend WithEvents Label8 As Label + Friend WithEvents ComboBox_Frame As ComboBox End Class diff --git a/Wardrobe/GUI/Individual.vb b/Wardrobe/GUI/Individual.vb index 0980d98..6baf338 100644 --- a/Wardrobe/GUI/Individual.vb +++ b/Wardrobe/GUI/Individual.vb @@ -184,6 +184,10 @@ Public Class Individual User_Input.Check_IfNumber(e) End Sub + Private Sub ComboBox_Frame_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Frame.TextChanged + User_Input.FrameChanged(sender, e) + End Sub + ' --- Grating width changed --- Private Sub TextBox_Width_TextChanged(sender As Object, e As EventArgs) Handles TextBox_Width.TextChanged User_Input.WidthChanged(sender, e) @@ -392,4 +396,5 @@ Public Class Individual Main_Menu.Show() End Sub + End Class \ No newline at end of file diff --git a/Wardrobe/Gratings Data/User_Input.vb b/Wardrobe/Gratings Data/User_Input.vb index f2e64e3..3cdf846 100644 --- a/Wardrobe/Gratings Data/User_Input.vb +++ b/Wardrobe/Gratings Data/User_Input.vb @@ -17,6 +17,8 @@ Public Shared addGratingDrawing As Boolean = False Public Shared addFrameDrawing As Boolean = False Public Shared addInstructions As Boolean = False + + Public Shared frameSize As Integer Public Shared Sub TypeChanged(sender As Object, e As EventArgs) Individual.ComboBox_Material.Enabled = True Individual.ComboBox_Material.Items.Clear() @@ -275,6 +277,15 @@ For i = 0 To tempList.Count - 1 Individual.ComboBox_Thickness.Items.Add(tempList(i)) Next + + For i = 0 To Individual.ComboBox_Frame.Items.Count - 1 + Dim item As String = Individual.ComboBox_Frame.Items(i) + If CInt(item.Split(" ")(0)) = gratingHeight + 5 Then + Individual.ComboBox_Frame.Text = Individual.ComboBox_Frame.Items(i) + Exit For + End If + Next + End Sub @@ -415,6 +426,12 @@ End If End Sub + Public Shared Sub FrameChanged(Sender As Object, e As EventArgs) + If Individual.ComboBox_Frame.Text <> "" Then + frameSize = CInt(Individual.ComboBox_Frame.Text.Split(" ")(0)) + End If + End Sub + Private Shared Sub Enable_Buttons() If AppForm.fillMode Then If Individual.TextBox_Width.Text <> "" AndAlso Individual.TextBox_Length.Text <> "" Then @@ -465,6 +482,7 @@ gratingTable.Columns.Add("CROSSBAR_DIAMETER", GetType(Integer)) gratingTable.Columns.Add("CROSSBAR_THICKNESS", GetType(Integer)) gratingTable.Columns.Add("CROSSBAR_HEIGHT", GetType(Integer)) + gratingTable.Columns.Add("FRAME_SIZE", GetType(Integer)) gratingTable.Rows.Add() @@ -478,6 +496,7 @@ gratingTable.Rows(0)("LOADBAR_HEIGHT") = CInt(Individual.ComboBox_Height.Text) gratingTable.Rows(0)("LOADBAR_SPACING") = CInt(lSpacing) gratingTable.Rows(0)("CROSSBAR_SPACING") = CInt(cSpacing) + gratingTable.Rows(0)("FRAME_SIZE") = frameSize If Individual.ComboBox_Type.Text = "Pressure Welded" Then If gratingSerrated = True Then diff --git a/Wardrobe/SolidWorks/Frame_3D.vb b/Wardrobe/SolidWorks/Frame_3D.vb index 7c33dce..ec83947 100644 --- a/Wardrobe/SolidWorks/Frame_3D.vb +++ b/Wardrobe/SolidWorks/Frame_3D.vb @@ -5,8 +5,10 @@ Public Class Frame_3D Public Shared frameDT As New DataTable Public Shared cuttingList As New Dictionary(Of Integer, Integer()) Public Shared sideFrameLengths As New Dictionary(Of String, Integer) + Private Shared gParameters As DataRow Public Shared Sub Build_Frame(gratingParameters As DataRow, parentID As Integer) + gParameters = gratingParameters frameDT = Generate_FrameData(gratingParameters) For i = 0 To frameDT.Rows.Count - 1 @@ -28,8 +30,8 @@ Public Class Frame_3D HLCtName = "frame_l_straight" End If inst_ = ExternalClass.instantiate_parts(parentID, HLCtName, "") - ExternalClass.modify_parameter_value("DP_HEIGHT", inst_, 40) 'FIXA: Dropdown i GUI med alla alternativ - ExternalClass.modify_parameter_value("DP_WIDTH", inst_, 40) 'FIXA + ExternalClass.modify_parameter_value("DP_HEIGHT", inst_, gratingParameters("FRAME_SIZE")) + ExternalClass.modify_parameter_value("DP_WIDTH", inst_, gratingParameters("FRAME_SIZE")) ExternalClass.modify_parameter_value("DP_ROTATION", inst_, frameDT.Rows(i)("ROTATION")) ExternalClass.modify_parameter_value("DP_OFFSET_W", inst_, frameDT.Rows(i)("OFFSET_W")) @@ -121,10 +123,10 @@ Public Class Frame_3D DTRow("CORNER") = Data.gratingPoints.Rows(i)("QUADRANT") DTRow("ROTATION") = (Data.gratingPoints.Rows(i)("QUADRANT") - 1) * 90 If DTRow("CORNER") = 1 Then - DTRow("OFFSET_W") = Data.gratingW 'gratingParameters("WIDTH") + DTRow("OFFSET_W") = Data.gratingW DTRow("OFFSET_L") = 0 ElseIf DTRow("CORNER") = 2 Then - DTRow("OFFSET_W") = Data.gratingW 'gratingParameters("WIDTH") + DTRow("OFFSET_W") = Data.gratingW DTRow("OFFSET_L") = gratingParameters("LENGTH") ElseIf DTRow("CORNER") = 3 Then DTRow("OFFSET_W") = 0 @@ -188,7 +190,7 @@ Public Class Frame_3D If Data.gratingPoints.Rows(i)("X") = Data.gratingPoints.Rows(i2)("X") Then If Data.gratingPoints.Rows(i)("Y") > Data.gratingPoints.Rows(i2)("Y") Then - DTRow("SIDE") = 3 + DTRow("SIDE") = 3 'Side 2 DTRow("LENGTH") = (Data.gratingPoints.Rows(i)("Y") - Data.gratingPoints.Rows(i2)("Y")) * 1000 - 20 - numOfP * 200 + extraCorner1 + extraCorner2 If Data.gratingPoints.Rows(i2)("NAME").substring(0, 1) = "P" Then DTRow("OFFSET_W") = 210 - extraCorner2 @@ -197,7 +199,7 @@ Public Class Frame_3D End If DTRow("OFFSET_L") = gratingParameters("LENGTH") Else - DTRow("SIDE") = 1 + DTRow("SIDE") = 1 ' Side 4 DTRow("LENGTH") = (Data.gratingPoints.Rows(i2)("Y") - Data.gratingPoints.Rows(i)("Y")) * 1000 - 20 - numOfP * 200 + extraCorner1 + extraCorner2 If Data.gratingPoints.Rows(i)("NAME").substring(0, 1) = "P" Then DTRow("OFFSET_W") = DTRow("LENGTH") + 210 - extraCorner1 @@ -208,7 +210,7 @@ Public Class Frame_3D End If Else If Data.gratingPoints.Rows(i)("X") > Data.gratingPoints.Rows(i2)("X") Then - DTRow("SIDE") = 4 + DTRow("SIDE") = 4 'Side 3 DTRow("LENGTH") = (Data.gratingPoints.Rows(i)("X") - Data.gratingPoints.Rows(i2)("X")) * 1000 - 20 - numOfP * 200 + extraCorner1 + extraCorner2 DTRow("OFFSET_W") = 0 If Data.gratingPoints.Rows(i2)("NAME").substring(0, 1) = "P" Then @@ -217,7 +219,7 @@ Public Class Frame_3D DTRow("OFFSET_L") = Data.gratingL / 2 + Data.gratingPoints.Rows(i2)("X") * 1000 + 10 End If Else - DTRow("SIDE") = 2 + DTRow("SIDE") = 2 ' Side 1 DTRow("LENGTH") = (Data.gratingPoints.Rows(i2)("X") - Data.gratingPoints.Rows(i)("X")) * 1000 - 20 - numOfP * 200 + extraCorner1 + extraCorner2 DTRow("OFFSET_W") = Data.gratingW 'gratingParameters("WIDTH") If Data.gratingPoints.Rows(i)("NAME").substring(0, 1) = "P" Then @@ -484,10 +486,10 @@ Public Class Frame_3D equationName = equationName.Split("=")(0) & "= " If tempName = "DP_HEIGHT" Then - swEquationMgr.Equation(i) = equationName & 30 'FIXA + swEquationMgr.Equation(i) = equationName & gParameters("FRAME_SIZE") counter += 1 ElseIf tempName = "DP_WIDTH" Then - swEquationMgr.Equation(i) = equationName & 40 'FIXA + swEquationMgr.Equation(i) = equationName & gParameters("FRAME_SIZE") counter += 1 ElseIf tempName = "DP_CUTOFFSET1" Then Dim cutLength As Integer = 0 diff --git a/Wardrobe/SolidWorks/Frame_Drawing.vb b/Wardrobe/SolidWorks/Frame_Drawing.vb index 8544f3d..2cc4b13 100644 --- a/Wardrobe/SolidWorks/Frame_Drawing.vb +++ b/Wardrobe/SolidWorks/Frame_Drawing.vb @@ -45,12 +45,7 @@ Public Class Frame_Drawing Dim transMatrix As Object = Nothing For j = 0 To compNames.Count - 2 + endPieceExist Dim frameID = Frame_3D.cuttingList.ElementAt(i).Value(j) - 1 - - If frameInSimplified = True Then - compNames(j) = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\" & frameComponents(frameID)("partName") & ".SLDPRT" - Else - compNames(j) = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\" & frameComponents(frameID)("partName") & ".SLDPRT" - End If + compNames(j) = Settings.folderPaths("object_" & Data.objectNum & "_models3D_frames_sw") & "\" & frameComponents(frameID)("partName") & ".SLDPRT" coordNames(j) = "" Next @@ -62,11 +57,10 @@ Public Class Frame_Drawing Dim assemComps As Object assemComps = assembly.AddComponents3((compNames), (transMatrix), (coordNames)) - Dim config As Configuration config = assembly.GetActiveConfiguration Dim swCustPropMgr = config.CustomPropertyManager - longstatus = swCustPropMgr.Add3("Benämning", 30, "Whole L Straight Frame", 1) 'Lägg till storlek på frames + longstatus = swCustPropMgr.Add3("Benämning", 30, "Whole L Straight Frame " & Individual.ComboBox_Frame.Text & " x 3", 1) longstatus = swCustPropMgr.Add3("ExtraBenämning1", 30, "Cutting Instructions for Whole Frame ", 1) longstatus = swCustPropMgr.Add3("Materialsort", 30, "Hot Dip Galvanized Steel", 1) longstatus = swCustPropMgr.Add3("Art. Nr", 30, "TBD", 1) diff --git a/Wardrobe/SolidWorks/Individual_3D.vb b/Wardrobe/SolidWorks/Individual_3D.vb index 3c07c14..97ecc94 100644 --- a/Wardrobe/SolidWorks/Individual_3D.vb +++ b/Wardrobe/SolidWorks/Individual_3D.vb @@ -61,55 +61,61 @@ Public Class Individual_3D Dim status As Integer Dim Assembly = swApp.ActiveDoc() - Dim newName As String - newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\grating_assembly.SLDASM" + 'Dim newName As String + 'newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\grating_assembly.SLDASM" + + 'Dim swExtensions As IModelDocExtension + 'swExtensions = Assembly.Extension + 'Dim Errors As Integer + 'Dim Warnings As Integer + + 'status = swExtensions.SaveAs2(newName, 0, 4, Nothing, "", True, Errors, Warnings) - Dim swExtensions As IModelDocExtension - swExtensions = Assembly.Extension Dim Errors As Integer Dim Warnings As Integer + Dim model As IModelDoc2 + model = Assembly + status = model.Save3(1, Errors, Warnings) - status = swExtensions.SaveAs2(newName, 0, 4, Nothing, "", True, Errors, Warnings) + Dim sourcePath, destPath As String + Dim childrenSourcePaths As New List(Of String) + Dim childrenDestPaths As New List(Of String) - 'Dim sourcePath, destPath As String - 'Dim childrenSourcePaths As New List(Of String) - 'Dim childrenDestPaths As New List(Of String) + sourcePath = Settings.filesFolder & "\Files\CADStart\" & designName & ".SLDASM" + destPath = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\GRATING_ASSEMBLY.SLDASM" - 'sourcePath = Settings.filesFolder & "\Files\CADStart\" & designName & ".SLDASM" - 'destPath = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\GRATING_ASSEMBLY.SLDASM" + childrenSourcePaths.Add(Settings.HLCtFolder & "\HLCt\Parts\START.SLDPRT") + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\MASTER.SLDPRT") - 'childrenSourcePaths.Add(Settings.HLCtFolder & "\HLCt\Parts\START.SLDPRT") - 'childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\MASTER.SLDPRT") + Dim instanceCounter As New Dictionary(Of String, Integer) + For i = 0 To partDT.Rows.Count - 1 + childrenSourcePaths.Add(Settings.filesFolder & "\Files\CADStart\" & partDT.Rows(i)("partName") & ".SLDPRT") - 'Dim instanceCounter As New Dictionary(Of String, Integer) - 'For i = 0 To partDT.Rows.Count - 1 - ' childrenSourcePaths.Add(Settings.filesFolder & "\Files\CADStart\" & partDT.Rows(i)("partName") & ".SLDPRT") + Dim partName As String = partDT.Rows(i)("partName") + Dim partNameArray As String() = partName.Split("_") - ' Dim partName As String = partDT.Rows(i)("partName") - ' Dim partNameArray As String() = partName.Split("_") + Dim newName As String = "" + For j = 0 To partNameArray.Length - 4 + newName += partNameArray(j) & "_" + Next - ' Dim newName As String = "" - ' For j = 0 To partNameArray.Length - 4 - ' newName += partNameArray(j) & "_" - ' Next + Try + instanceCounter(newName.Substring(0, newName.Length - 1)) += 1 + Catch ex As Exception + instanceCounter.Add(newName.Substring(0, newName.Length - 1), 1) + End Try - ' Try - ' instanceCounter(newName.Substring(0, newName.Length - 1)) += 1 - ' Catch ex As Exception - ' instanceCounter.Add(newName.Substring(0, newName.Length - 1), 1) - ' End Try + If partNameArray(0) = "FRAME" Then + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_frames_sw") & "\" & newName & + instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") + Else + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\" & newName & + instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") + End If + Next - ' If partNameArray(0) = "FRAME" Then - ' childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_frames_sw") & "\" & newName & - ' instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") - ' Else - ' childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\" & newName & - ' instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") - ' End If - 'Next - - 'swApp.CloseAllDocuments(True) - 'status = swApp.CopyDocument(sourcePath, destPath, childrenSourcePaths.ToArray(), childrenDestPaths.ToArray(), 2) + swApp.CloseAllDocuments(True) + status = swApp.CopyDocument(sourcePath, destPath, childrenSourcePaths.ToArray(), childrenDestPaths.ToArray(), 2) End Sub Private Shared Sub Inst_Recesses(parentID As Integer, gratingParameters As DataRow, recessDR As DataRow) diff --git a/Wardrobe/SolidWorks/Individual_3D_Simplified.vb b/Wardrobe/SolidWorks/Individual_3D_Simplified.vb index c83a9ba..b17d1bd 100644 --- a/Wardrobe/SolidWorks/Individual_3D_Simplified.vb +++ b/Wardrobe/SolidWorks/Individual_3D_Simplified.vb @@ -84,60 +84,70 @@ Public Class Individual_3D_Simplified status = swCustPropMgr.Add3("Revision", 30, "", 1) - Dim newName As String - If withFrame = True Then - newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\grating_assembly_simplified_with_frame.SLDASM" - Else - newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\grating_assembly_simplified.SLDASM" - End If - Dim swExtensions As IModelDocExtension - swExtensions = Assembly.Extension + 'Dim newName As String + 'If withFrame = True Then + ' newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\grating_assembly_simplified_with_frame.SLDASM" + 'Else + ' newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\grating_assembly_simplified.SLDASM" + 'End If + 'Dim swExtensions As IModelDocExtension + 'swExtensions = Assembly.Extension + 'Dim Errors As Integer + 'Dim Warnings As Integer + + 'status = swExtensions.SaveAs2(newName, 0, 4, Nothing, "", True, Errors, Warnings) + Dim Errors As Integer Dim Warnings As Integer - - status = swExtensions.SaveAs2(newName, 0, 4, Nothing, "", True, Errors, Warnings) + Dim model As IModelDoc2 + model = Assembly + status = model.Save3(1, Errors, Warnings) + Dim sourcePath, destPath As String + Dim childrenSourcePaths As New List(Of String) + Dim childrenDestPaths As New List(Of String) - 'Dim sourcePath, destPath As String - 'Dim childrenSourcePaths As New List(Of String) - 'Dim childrenDestPaths As New List(Of String) + sourcePath = Settings.filesFolder & "\Files\CADStart\" & designName & ".SLDASM" - 'sourcePath = Settings.filesFolder & "\Files\CADStart\" & designName & ".SLDASM" - 'destPath = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\GRATING_ASSEMBLY.SLDASM" + childrenSourcePaths.Add(Settings.HLCtFolder & "\HLCt\Parts\START.SLDPRT") + If withFrame = True Then + destPath = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\GRATING_ASSEMBLY_SIMPLIFIED_WITH_FRAME.SLDASM" + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\MASTER_SIMPLIFIED_WITH_FRAME.SLDPRT") + Else + destPath = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\GRATING_ASSEMBLY_SIMPLIFIED.SLDASM" + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\MASTER_SIMPLIFIED.SLDPRT") + End If - 'childrenSourcePaths.Add(Settings.HLCtFolder & "\HLCt\Parts\START.SLDPRT") - 'childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\MASTER.SLDPRT") + Dim instanceCounter As New Dictionary(Of String, Integer) + For i = 0 To partDT.Rows.Count - 1 + childrenSourcePaths.Add(Settings.filesFolder & "\Files\CADStart\" & partDT.Rows(i)("partName") & ".SLDPRT") - 'Dim instanceCounter As New Dictionary(Of String, Integer) - 'For i = 0 To partDT.Rows.Count - 1 - ' childrenSourcePaths.Add(Settings.filesFolder & "\Files\CADStart\" & partDT.Rows(i)("partName") & ".SLDPRT") + Dim partName As String = partDT.Rows(i)("partName") + Dim partNameArray As String() = partName.Split("_") - ' Dim partName As String = partDT.Rows(i)("partName") - ' Dim partNameArray As String() = partName.Split("_") + Dim newName As String = "" + For j = 0 To partNameArray.Length - 4 + newName += partNameArray(j) & "_" + Next - ' Dim newName As String = "" - ' For j = 0 To partNameArray.Length - 4 - ' newName += partNameArray(j) & "_" - ' Next + Try + instanceCounter(newName.Substring(0, newName.Length - 1)) += 1 + Catch ex As Exception + instanceCounter.Add(newName.Substring(0, newName.Length - 1), 1) + End Try - ' Try - ' instanceCounter(newName.Substring(0, newName.Length - 1)) += 1 - ' Catch ex As Exception - ' instanceCounter.Add(newName.Substring(0, newName.Length - 1), 1) - ' End Try + If partNameArray(0) = "FRAME" Then + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_frames_sw") & "\" & newName & + instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") + Else + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\" & newName & + instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") + End If + Next - ' If partNameArray(0) = "FRAME" Then - ' childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_frames_sw") & "\" & newName & - ' instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") - ' Else - ' childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\" & newName & - ' instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") - ' End If - 'Next - - 'swApp.CloseAllDocuments(True) - 'status = swApp.CopyDocument(sourcePath, destPath, childrenSourcePaths.ToArray(), childrenDestPaths.ToArray(), 2) + swApp.CloseAllDocuments(True) + status = swApp.CopyDocument(sourcePath, destPath, childrenSourcePaths.ToArray(), childrenDestPaths.ToArray(), 2) End Sub Private Shared Sub Inst_Recesses(parentID As Integer, gratingParameters As DataRow, recessDR As DataRow) diff --git a/Wardrobe/SolidWorks/Instructions.vb b/Wardrobe/SolidWorks/Instructions.vb index 8763712..8a67507 100644 --- a/Wardrobe/SolidWorks/Instructions.vb +++ b/Wardrobe/SolidWorks/Instructions.vb @@ -28,15 +28,15 @@ Public Class Instructions Dim drawName As String If AppForm.fillMode = True Then If withFrame = True Then - drawName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\gratings_assembly_simplified_with_frame.SLDASM" + drawName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\GRATINGS_ASSEMBLY_SIMPLIFIED_WITH_FRAME.SLDASM" Else - drawName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\gratings_assembly_simplified.SLDASM" + drawName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\GRATINGS_ASSEMBLY_SIMPLIFIED.SLDASM" End If Else If withFrame = True Then - drawName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\grating_assembly_simplified_with_frame.SLDASM" + drawName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\GRATING_ASSEMBLY_SIMPLIFIED_WITH_FRAME.SLDASM" Else - drawName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\grating_assembly_simplified.SLDASM" + drawName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\GRATING_ASSEMBLY_SIMPLIFIED.SLDASM" End If End If @@ -114,6 +114,8 @@ Public Class Instructions Dim straightFramesDT As New DataTable straightFramesDT.Columns.Add("LENGTH", GetType(Integer)) straightFramesDT.Columns.Add("SIDE", GetType(Integer)) + straightFramesDT.Columns.Add("OFFSET_W", GetType(Integer)) + straightFramesDT.Columns.Add("OFFSET_L", GetType(Integer)) For i = 1 To 4 Dim sideNum = i + 1 If sideNum = 5 Then @@ -125,53 +127,37 @@ Public Class Instructions Dim newDR As DataRow = straightFramesDT.NewRow newDR("LENGTH") = DR("LENGTH") newDR("SIDE") = i + newDR("OFFSET_W") = DR("OFFSET_W") + newDR("OFFSET_L") = DR("OFFSET_L") straightFramesDT.Rows.Add(newDR) End If Next Next - Dim sideOffsets(3) As Double - Dim cornerFrames = Frame_3D.frameDT.Select("TYPE = 'CORNER'") - For i = 0 To 3 - Dim cornerFrameExist As Boolean = False - For j = 0 To cornerFrames.Length - 1 - If cornerFrames(j)("CORNER") = i + 1 Then - cornerFrameExist = True - Exit For - End If - Next - If cornerFrameExist = True Then - sideOffsets(i) = 0.21 - Else - sideOffsets(i) = 0 - End If - Next - Dim worldX, worldY, offsetX, offsetY As Double Dim scale As Double = myView.ScaleDecimal For i = 0 To straightFramesDT.Rows.Count - 1 + Dim offsetL As Double = straightFramesDT.Rows(i)("OFFSET_L") / 1000 + Dim offsetW As Double = straightFramesDT.Rows(i)("OFFSET_W") / 1000 + Dim length As Double = straightFramesDT.Rows(i)("LENGTH") / 1000 If straightFramesDT.Rows(i)("SIDE") = 1 Then - worldX = swSheetWidth / 2 + (-(Data.gratingL / 1000) / 2 + sideOffsets(0) + (straightFramesDT.Rows(i)("LENGTH") / 1000) / 2) * scale - sideOffsets(0) += straightFramesDT.Rows(i)("LENGTH") / 1000 + worldX = swSheetWidth / 2 + (-(Data.gratingL / 1000) / 2 + offsetL - length / 2) * scale worldY = swSheetHeight / 2 + ((Data.gratingW / 1000) / 2 + 0.001) * scale offsetX = worldX - 0.01 - 0.0045 offsetY = worldY + 0.02 + 0.0015 ElseIf straightFramesDT.Rows(i)("SIDE") = 2 Then worldX = swSheetWidth / 2 + ((Data.gratingL / 1000) / 2 + 0.001) * scale - worldY = swSheetHeight / 2 + ((Data.gratingW / 1000) / 2 - sideOffsets(1) - (straightFramesDT.Rows(i)("LENGTH") / 1000) / 2) * scale - sideOffsets(1) += straightFramesDT.Rows(i)("LENGTH") / 1000 + worldY = swSheetHeight / 2 + (-(Data.gratingW / 1000) / 2 + offsetW + length / 2) * scale offsetX = worldX + 0.02 - 0.0045 offsetY = worldY + 0.01 + 0.0015 ElseIf straightFramesDT.Rows(i)("SIDE") = 3 Then - worldX = swSheetWidth / 2 + ((Data.gratingL / 1000) / 2 - sideOffsets(2) - (straightFramesDT.Rows(i)("LENGTH") / 1000) / 2) * scale - sideOffsets(2) += straightFramesDT.Rows(i)("LENGTH") / 1000 + worldX = swSheetWidth / 2 + (-(Data.gratingL / 1000) / 2 + offsetL + length / 2) * scale worldY = swSheetHeight / 2 - ((Data.gratingW / 1000) / 2 + 0.001) * scale offsetX = worldX + 0.01 - 0.0045 offsetY = worldY - 0.02 + 0.0015 Else worldX = swSheetWidth / 2 - ((Data.gratingL / 1000) / 2 + 0.001) * scale - worldY = swSheetHeight / 2 + (-(Data.gratingW / 1000) / 2 + sideOffsets(3) + (straightFramesDT.Rows(i)("LENGTH") / 1000) / 2) * scale - sideOffsets(3) += straightFramesDT.Rows(i)("LENGTH") / 1000 + worldY = swSheetHeight / 2 + (-(Data.gratingW / 1000) / 2 + offsetW - length / 2) * scale offsetX = worldX - 0.02 - 0.0045 offsetY = worldY - 0.01 + 0.0015 End If @@ -203,6 +189,61 @@ Public Class Instructions status = swExtensions.SelectByID2(balloonName & "@" & myView.GetName2, "NOTE", 0, 0, 0, False, 0, Nothing, 0) editedNote = swExtensions.EditBalloonProperties2(1, 3, 0, "F-" & i + 1, 0, "", 0, False, 1, "X", 0.001) Next + + Dim cornerFrames = Frame_3D.frameDT.Select("TYPE = 'CORNER'") + For i = 0 To cornerFrames.Length - 1 + If cornerFrames(i)("CORNER") = 1 Then + worldX = swSheetWidth / 2 - ((Data.gratingL / 1000) / 2 + 0.001) * scale + worldY = swSheetHeight / 2 + ((Data.gratingW / 1000) / 2 + 0.001) * scale + offsetX = worldX - 0.022 - 0.01 + offsetY = worldY + 0.002 + 0.01 + + ElseIf cornerFrames(i)("CORNER") = 2 Then + worldX = swSheetWidth / 2 + ((Data.gratingL / 1000) / 2 + 0.001) * scale + worldY = swSheetHeight / 2 + ((Data.gratingW / 1000) / 2 + 0.001) * scale + offsetX = worldX + 0.01 + offsetY = worldY + 0.002 + 0.01 + ElseIf cornerFrames(i)("CORNER") = 3 Then + worldX = swSheetWidth / 2 + ((Data.gratingL / 1000) / 2 + 0.001) * scale + worldY = swSheetHeight / 2 - ((Data.gratingW / 1000) / 2 + 0.001) * scale + offsetX = worldX + 0.01 + offsetY = worldY - 0.002 - 0.01 + Else + worldX = swSheetWidth / 2 - ((Data.gratingL / 1000) / 2 + 0.001) * scale + worldY = swSheetHeight / 2 - ((Data.gratingW / 1000) / 2 + 0.001) * scale + offsetX = worldX - 0.022 - 0.01 + offsetY = worldY - 0.002 - 0.01 + End If + + status = swExtensions.SelectByRay(worldX, worldY, 0, 0, 0, -1, 0.0005, 2, False, 0, 0) + + Dim BomBalloonParams As Object + BomBalloonParams = swExtensions.CreateBalloonOptions() + BomBalloonParams.Style = 0 + BomBalloonParams.Size = 3 + BomBalloonParams.UpperTextContent = 1 + BomBalloonParams.UpperText = """" + BomBalloonParams.ShowQuantity = False + BomBalloonParams.QuantityPlacement = 1 + BomBalloonParams.QuantityDenotationText = "X" + BomBalloonParams.QuantityOverride = False + Dim myNote = swExtensions.InsertBOMBalloon2(BomBalloonParams) + + noteAnnotation = myNote.GetAnnotation() + + textFormat = noteAnnotation.GetTextFormat(0) + textFormat.CharHeight = 0.0025 + status = noteAnnotation.SetTextFormat(0, False, textFormat) + + noteAnnotation.SetPosition2(offsetX, offsetY, 0) + + iDrawing.ClearSelection2(True) + balloonName = myNote.GetName() + status = swExtensions.SelectByID2(balloonName & "@" & myView.GetName2, "NOTE", 0, 0, 0, False, 0, Nothing, 0) + editedNote = swExtensions.EditBalloonProperties2(0, 3, 0, "Frame Corner", 0, "", 0, False, 1, "X", 0.001) + Next + + End If diff --git a/Wardrobe/SolidWorks/Multiple_3D.vb b/Wardrobe/SolidWorks/Multiple_3D.vb index fc48a53..08a2ead 100644 --- a/Wardrobe/SolidWorks/Multiple_3D.vb +++ b/Wardrobe/SolidWorks/Multiple_3D.vb @@ -82,12 +82,58 @@ Public Class Multiple_3D Dim status As Boolean Dim Assembly = swApp.ActiveDoc() - Dim swExtensions As IModelDocExtension - swExtensions = Assembly.Extension + 'Dim swExtensions As IModelDocExtension + 'swExtensions = Assembly.Extension + 'Dim Errors As Integer + 'Dim Warnings As Integer + 'status = swExtensions.SaveAs2(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\gratings_assembly.SLDASM", + ' 0, 4, Nothing, "", True, Errors, Warnings) 'FIXA + Dim Errors As Integer Dim Warnings As Integer - status = swExtensions.SaveAs2(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\gratings_assembly.SLDASM", - 0, 4, Nothing, "", True, Errors, Warnings) 'FIXA + Dim model As IModelDoc2 + model = Assembly + status = model.Save3(1, Errors, Warnings) + + Dim sourcePath, destPath As String + Dim childrenSourcePaths As New List(Of String) + Dim childrenDestPaths As New List(Of String) + + sourcePath = Settings.filesFolder & "\Files\CADStart\" & designName & ".SLDASM" + destPath = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\GRATINGS_ASSEMBLY.SLDASM" + + childrenSourcePaths.Add(Settings.HLCtFolder & "\HLCt\Parts\START.SLDPRT") + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\MASTER.SLDPRT") + + Dim instanceCounter As New Dictionary(Of String, Integer) + For i = 0 To partDT.Rows.Count - 1 + childrenSourcePaths.Add(Settings.filesFolder & "\Files\CADStart\" & partDT.Rows(i)("partName") & ".SLDPRT") + + Dim partName As String = partDT.Rows(i)("partName") + Dim partNameArray As String() = partName.Split("_") + + Dim newName As String = "" + For j = 0 To partNameArray.Length - 4 + newName += partNameArray(j) & "_" + Next + + Try + instanceCounter(newName.Substring(0, newName.Length - 1)) += 1 + Catch ex As Exception + instanceCounter.Add(newName.Substring(0, newName.Length - 1), 1) + End Try + + If partNameArray(0) = "FRAME" Then + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_frames_sw") & "\" & newName & + instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") + Else + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\" & newName & + instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") + End If + Next + + swApp.CloseAllDocuments(True) + status = swApp.CopyDocument(sourcePath, destPath, childrenSourcePaths.ToArray(), childrenDestPaths.ToArray(), 2) End Sub Private Shared Sub Inst_Recesses(parentID As Integer, gratingParameters As DataRow, recessDR As DataRow) diff --git a/Wardrobe/SolidWorks/Multiple_3D_Simplified.vb b/Wardrobe/SolidWorks/Multiple_3D_Simplified.vb index b18e3ff..5f82777 100644 --- a/Wardrobe/SolidWorks/Multiple_3D_Simplified.vb +++ b/Wardrobe/SolidWorks/Multiple_3D_Simplified.vb @@ -145,19 +145,70 @@ Public Class Multiple_3D_Simplified status = swCustPropMgr.Add3("epdmid", 30, "", 1) status = swCustPropMgr.Add3("Revision", 30, "", 1) - Dim Assebmly = swApp.ActiveDoc() - Dim newName As String - If withFrame = True Then - newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\gratings_assembly_simplified_with_frame.SLDASM" - Else - newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\gratings_assembly_simplified.SLDASM" - End If - Dim swExtensions As IModelDocExtension - swExtensions = assembly.Extension + 'Dim Assebmly = swApp.ActiveDoc() + 'Dim newName As String + 'If withFrame = True Then + ' newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\gratings_assembly_simplified_with_frame.SLDASM" + 'Else + ' newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\gratings_assembly_simplified.SLDASM" + 'End If + 'Dim swExtensions As IModelDocExtension + 'swExtensions = assembly.Extension + 'Dim Errors As Integer + 'Dim Warnings As Integer + + 'status = swExtensions.SaveAs2(newName, 0, 4, Nothing, "", True, Errors, Warnings) + Dim Errors As Integer Dim Warnings As Integer + Dim model As IModelDoc2 + model = assembly + status = model.Save3(1, Errors, Warnings) - status = swExtensions.SaveAs2(newName, 0, 4, Nothing, "", True, Errors, Warnings) + Dim sourcePath, destPath As String + Dim childrenSourcePaths As New List(Of String) + Dim childrenDestPaths As New List(Of String) + + sourcePath = Settings.filesFolder & "\Files\CADStart\" & designName & ".SLDASM" + + childrenSourcePaths.Add(Settings.HLCtFolder & "\HLCt\Parts\START.SLDPRT") + If withFrame = True Then + destPath = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\GRATINGS_ASSEMBLY_SIMPLIFIED_WITH_FRAME.SLDASM" + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\MASTER_SIMPLIFIED_WITH_FRAME.SLDPRT") + Else + destPath = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\GRATINGS_ASSEMBLY_SIMPLIFIED.SLDASM" + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\MASTER_SIMPLIFIED.SLDPRT") + End If + + Dim instanceCounter As New Dictionary(Of String, Integer) + For i = 0 To partDT.Rows.Count - 1 + childrenSourcePaths.Add(Settings.filesFolder & "\Files\CADStart\" & partDT.Rows(i)("partName") & ".SLDPRT") + + Dim partName As String = partDT.Rows(i)("partName") + Dim partNameArray As String() = partName.Split("_") + + Dim newName As String = "" + For j = 0 To partNameArray.Length - 4 + newName += partNameArray(j) & "_" + Next + + Try + instanceCounter(newName.Substring(0, newName.Length - 1)) += 1 + Catch ex As Exception + instanceCounter.Add(newName.Substring(0, newName.Length - 1), 1) + End Try + + If partNameArray(0) = "FRAME" Then + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_frames_sw") & "\" & newName & + instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") + Else + childrenDestPaths.Add(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\" & newName & + instanceCounter(newName.Substring(0, newName.Length - 1)) & ".SLDPRT") + End If + Next + + swApp.CloseAllDocuments(True) + status = swApp.CopyDocument(sourcePath, destPath, childrenSourcePaths.ToArray(), childrenDestPaths.ToArray(), 2) End Sub Private Shared Sub Inst_Recesses(parentID As Integer, gratingParameters As DataRow, recessDR As DataRow)