diff --git a/Wardrobe/GUI/Individual.Designer.vb b/Wardrobe/GUI/Individual.Designer.vb index e045128..33cd770 100644 --- a/Wardrobe/GUI/Individual.Designer.vb +++ b/Wardrobe/GUI/Individual.Designer.vb @@ -59,6 +59,11 @@ 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.Panel_Data.SuspendLayout() Me.Panel_Recesses.SuspendLayout() Me.Panel_Grating.SuspendLayout() @@ -67,6 +72,11 @@ Partial Class Individual 'Panel_Data ' Me.Panel_Data.BackColor = System.Drawing.SystemColors.GradientActiveCaption + Me.Panel_Data.Controls.Add(Me.CheckBox_3DModel) + Me.Panel_Data.Controls.Add(Me.CheckBox_FrameDrawing) + Me.Panel_Data.Controls.Add(Me.CheckBox_GratingDrawing) + Me.Panel_Data.Controls.Add(Me.CheckBox_Frames) + Me.Panel_Data.Controls.Add(Me.CheckBox_Instructions) Me.Panel_Data.Controls.Add(Me.Button_Back) Me.Panel_Data.Controls.Add(Me.TextBox_Width) Me.Panel_Data.Controls.Add(Me.ComboBox_Width) @@ -94,42 +104,45 @@ Partial Class Individual Me.Panel_Data.Location = New System.Drawing.Point(0, 0) Me.Panel_Data.Margin = New System.Windows.Forms.Padding(0) Me.Panel_Data.Name = "Panel_Data" - Me.Panel_Data.Size = New System.Drawing.Size(315, 772) + Me.Panel_Data.Size = New System.Drawing.Size(420, 950) Me.Panel_Data.TabIndex = 0 ' 'Button_Back ' - Me.Button_Back.Location = New System.Drawing.Point(9, 10) - Me.Button_Back.Margin = New System.Windows.Forms.Padding(2) + Me.Button_Back.Location = New System.Drawing.Point(12, 12) + Me.Button_Back.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2) Me.Button_Back.Name = "Button_Back" - Me.Button_Back.Size = New System.Drawing.Size(42, 33) + Me.Button_Back.Size = New System.Drawing.Size(56, 41) Me.Button_Back.TabIndex = 27 Me.Button_Back.Text = "Back" Me.Button_Back.UseVisualStyleBackColor = True ' 'TextBox_Width ' - Me.TextBox_Width.Location = New System.Drawing.Point(110, 465) + 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.Name = "TextBox_Width" - Me.TextBox_Width.Size = New System.Drawing.Size(155, 20) + Me.TextBox_Width.Size = New System.Drawing.Size(205, 22) Me.TextBox_Width.TabIndex = 26 ' 'ComboBox_Width ' Me.ComboBox_Width.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Width.FormattingEnabled = True - Me.ComboBox_Width.Location = New System.Drawing.Point(110, 465) + 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.Name = "ComboBox_Width" - Me.ComboBox_Width.Size = New System.Drawing.Size(155, 21) + Me.ComboBox_Width.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Width.TabIndex = 25 ' 'Label7 ' Me.Label7.AutoSize = True Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label7.Location = New System.Drawing.Point(269, 402) + 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(23, 13) + Me.Label7.Size = New System.Drawing.Size(30, 17) Me.Label7.TabIndex = 24 Me.Label7.Text = "mm" ' @@ -137,9 +150,10 @@ Partial Class Individual ' Me.Label6.AutoSize = True Me.Label6.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label6.Location = New System.Drawing.Point(269, 468) + 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(23, 13) + Me.Label6.Size = New System.Drawing.Size(30, 17) Me.Label6.TabIndex = 23 Me.Label6.Text = "mm" ' @@ -147,9 +161,10 @@ Partial Class Individual ' Me.Label5.AutoSize = True Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label5.Location = New System.Drawing.Point(269, 328) + 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(23, 13) + Me.Label5.Size = New System.Drawing.Size(30, 17) Me.Label5.TabIndex = 22 Me.Label5.Text = "mm" ' @@ -157,9 +172,10 @@ Partial Class Individual ' Me.Label4.AutoSize = True Me.Label4.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label4.Location = New System.Drawing.Point(269, 281) + 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(23, 13) + Me.Label4.Size = New System.Drawing.Size(30, 17) Me.Label4.TabIndex = 21 Me.Label4.Text = "mm" ' @@ -167,18 +183,20 @@ Partial Class Individual ' Me.Label3.AutoSize = True Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label3.Location = New System.Drawing.Point(269, 237) + 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(23, 13) + Me.Label3.Size = New System.Drawing.Size(30, 17) Me.Label3.TabIndex = 20 Me.Label3.Text = "mm" ' 'Button_Export_GUI ' Me.Button_Export_GUI.BackColor = System.Drawing.Color.Transparent - Me.Button_Export_GUI.Location = New System.Drawing.Point(49, 704) + 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.Name = "Button_Export_GUI" - Me.Button_Export_GUI.Size = New System.Drawing.Size(75, 23) + Me.Button_Export_GUI.Size = New System.Drawing.Size(100, 28) Me.Button_Export_GUI.TabIndex = 18 Me.Button_Export_GUI.Text = "Export GUI" Me.Button_Export_GUI.UseVisualStyleBackColor = False @@ -186,9 +204,10 @@ Partial Class Individual 'Button_Export_SW ' Me.Button_Export_SW.BackColor = System.Drawing.Color.Transparent - Me.Button_Export_SW.Location = New System.Drawing.Point(176, 704) + 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.Name = "Button_Export_SW" - Me.Button_Export_SW.Size = New System.Drawing.Size(75, 23) + Me.Button_Export_SW.Size = New System.Drawing.Size(100, 28) Me.Button_Export_SW.TabIndex = 17 Me.Button_Export_SW.Text = "Export SW" Me.Button_Export_SW.UseVisualStyleBackColor = False @@ -197,9 +216,10 @@ Partial Class Individual ' Me.Label_Heading.AutoSize = True Me.Label_Heading.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label_Heading.Location = New System.Drawing.Point(70, 37) + 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(166, 20) + Me.Label_Heading.Size = New System.Drawing.Size(198, 25) Me.Label_Heading.TabIndex = 15 Me.Label_Heading.Text = "Grating Parameters" ' @@ -207,9 +227,10 @@ Partial Class Individual ' Me.Label_Material.AutoSize = True Me.Label_Material.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label_Material.Location = New System.Drawing.Point(46, 143) + 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(58, 17) + Me.Label_Material.Size = New System.Drawing.Size(69, 20) Me.Label_Material.TabIndex = 14 Me.Label_Material.Text = "Material" ' @@ -217,9 +238,10 @@ Partial Class Individual ' Me.Label_Mesh.AutoSize = True Me.Label_Mesh.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label_Mesh.Location = New System.Drawing.Point(31, 233) + 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(73, 17) + Me.Label_Mesh.Size = New System.Drawing.Size(88, 20) Me.Label_Mesh.TabIndex = 13 Me.Label_Mesh.Text = "Mesh Size" ' @@ -227,9 +249,10 @@ Partial Class Individual ' Me.Label_Height.AutoSize = True Me.Label_Height.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label_Height.Location = New System.Drawing.Point(55, 279) + 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(49, 17) + Me.Label_Height.Size = New System.Drawing.Size(58, 20) Me.Label_Height.TabIndex = 12 Me.Label_Height.Text = "Height" ' @@ -237,9 +260,10 @@ Partial Class Individual ' Me.Label_Thickness.AutoSize = True Me.Label_Thickness.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label_Thickness.Location = New System.Drawing.Point(32, 324) + 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(72, 17) + Me.Label_Thickness.Size = New System.Drawing.Size(85, 20) Me.Label_Thickness.TabIndex = 11 Me.Label_Thickness.Text = "Thickness" ' @@ -247,9 +271,10 @@ Partial Class Individual ' Me.Label_Width.AutoSize = True Me.Label_Width.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label_Width.Location = New System.Drawing.Point(60, 465) + 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(44, 17) + Me.Label_Width.Size = New System.Drawing.Size(52, 20) Me.Label_Width.TabIndex = 10 Me.Label_Width.Text = "Width" ' @@ -257,9 +282,10 @@ Partial Class Individual ' Me.Label_Length.AutoSize = True Me.Label_Length.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label_Length.Location = New System.Drawing.Point(52, 398) + 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(52, 17) + Me.Label_Length.Size = New System.Drawing.Size(60, 20) Me.Label_Length.TabIndex = 9 Me.Label_Length.Text = "Length" ' @@ -267,62 +293,69 @@ Partial Class Individual ' Me.Label_Type.AutoSize = True Me.Label_Type.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label_Type.Location = New System.Drawing.Point(64, 101) + 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(40, 16) + Me.Label_Type.Size = New System.Drawing.Size(45, 20) Me.Label_Type.TabIndex = 8 Me.Label_Type.Text = "Type" ' 'TextBox_Length ' - Me.TextBox_Length.Location = New System.Drawing.Point(110, 398) + 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.Name = "TextBox_Length" - Me.TextBox_Length.Size = New System.Drawing.Size(155, 20) + Me.TextBox_Length.Size = New System.Drawing.Size(205, 22) Me.TextBox_Length.TabIndex = 7 ' 'ComboBox_Mesh ' Me.ComboBox_Mesh.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Mesh.FormattingEnabled = True - Me.ComboBox_Mesh.Location = New System.Drawing.Point(110, 233) + 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.Name = "ComboBox_Mesh" - Me.ComboBox_Mesh.Size = New System.Drawing.Size(155, 21) + Me.ComboBox_Mesh.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Mesh.TabIndex = 6 ' 'ComboBox_Thickness ' Me.ComboBox_Thickness.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Thickness.FormattingEnabled = True - Me.ComboBox_Thickness.Location = New System.Drawing.Point(110, 323) + 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.Name = "ComboBox_Thickness" - Me.ComboBox_Thickness.Size = New System.Drawing.Size(155, 21) + Me.ComboBox_Thickness.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Thickness.TabIndex = 3 ' 'ComboBox_Height ' Me.ComboBox_Height.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Height.FormattingEnabled = True - Me.ComboBox_Height.Location = New System.Drawing.Point(110, 278) + 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.Name = "ComboBox_Height" - Me.ComboBox_Height.Size = New System.Drawing.Size(155, 21) + Me.ComboBox_Height.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Height.TabIndex = 2 ' 'ComboBox_Material ' Me.ComboBox_Material.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Material.FormattingEnabled = True - Me.ComboBox_Material.Location = New System.Drawing.Point(110, 142) + 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.Name = "ComboBox_Material" - Me.ComboBox_Material.Size = New System.Drawing.Size(155, 21) + Me.ComboBox_Material.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Material.TabIndex = 1 ' 'ComboBox_Type ' Me.ComboBox_Type.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Type.FormattingEnabled = True - Me.ComboBox_Type.Location = New System.Drawing.Point(110, 101) + 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.Name = "ComboBox_Type" - Me.ComboBox_Type.Size = New System.Drawing.Size(155, 21) + Me.ComboBox_Type.Size = New System.Drawing.Size(205, 24) Me.ComboBox_Type.TabIndex = 0 ' 'Panel_Recesses @@ -336,8 +369,9 @@ 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.Name = "Panel_Recesses" - Me.Panel_Recesses.Size = New System.Drawing.Size(1395, 120) + Me.Panel_Recesses.Size = New System.Drawing.Size(1860, 148) Me.Panel_Recesses.TabIndex = 1 ' 'Button_Radius @@ -348,9 +382,10 @@ Partial Class Individual Me.Button_Radius.Enabled = False 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(1006, 25) + 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.Name = "Button_Radius" - Me.Button_Radius.Size = New System.Drawing.Size(70, 70) + Me.Button_Radius.Size = New System.Drawing.Size(93, 86) Me.Button_Radius.TabIndex = 22 Me.Button_Radius.UseVisualStyleBackColor = False ' @@ -361,9 +396,10 @@ Partial Class Individual Me.Button_Square_Middle.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom 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(901, 25) + 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.Name = "Button_Square_Middle" - Me.Button_Square_Middle.Size = New System.Drawing.Size(70, 70) + Me.Button_Square_Middle.Size = New System.Drawing.Size(93, 86) Me.Button_Square_Middle.TabIndex = 21 Me.Button_Square_Middle.UseVisualStyleBackColor = False ' @@ -374,9 +410,10 @@ Partial Class Individual Me.Button_Square_Side.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom 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(796, 25) + 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.Name = "Button_Square_Side" - Me.Button_Square_Side.Size = New System.Drawing.Size(70, 70) + Me.Button_Square_Side.Size = New System.Drawing.Size(93, 86) Me.Button_Square_Side.TabIndex = 20 Me.Button_Square_Side.UseVisualStyleBackColor = False ' @@ -387,9 +424,10 @@ Partial Class Individual Me.Button_Angle_Side.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom 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(586, 25) + 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.Name = "Button_Angle_Side" - Me.Button_Angle_Side.Size = New System.Drawing.Size(70, 70) + Me.Button_Angle_Side.Size = New System.Drawing.Size(93, 86) Me.Button_Angle_Side.TabIndex = 19 Me.Button_Angle_Side.UseVisualStyleBackColor = False ' @@ -400,9 +438,10 @@ Partial Class Individual Me.Button_Square_Corner.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom 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(691, 25) + 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.Name = "Button_Square_Corner" - Me.Button_Square_Corner.Size = New System.Drawing.Size(70, 70) + Me.Button_Square_Corner.Size = New System.Drawing.Size(93, 86) Me.Button_Square_Corner.TabIndex = 18 Me.Button_Square_Corner.UseVisualStyleBackColor = False ' @@ -413,9 +452,10 @@ Partial Class Individual Me.Button_Angle_Corner.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom 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(481, 25) + 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.Name = "Button_Angle_Corner" - Me.Button_Angle_Corner.Size = New System.Drawing.Size(70, 70) + Me.Button_Angle_Corner.Size = New System.Drawing.Size(93, 86) Me.Button_Angle_Corner.TabIndex = 17 Me.Button_Angle_Corner.UseVisualStyleBackColor = False ' @@ -423,9 +463,10 @@ Partial Class Individual ' Me.Label_Recesses.AutoSize = True Me.Label_Recesses.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label_Recesses.Location = New System.Drawing.Point(329, 36) + 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(88, 20) + Me.Label_Recesses.Size = New System.Drawing.Size(106, 25) Me.Label_Recesses.TabIndex = 16 Me.Label_Recesses.Text = "Recesses" ' @@ -434,18 +475,20 @@ Partial Class Individual Me.Panel_Grating.BackColor = System.Drawing.Color.White Me.Panel_Grating.Controls.Add(Me.Label2) Me.Panel_Grating.Controls.Add(Me.Label1) - Me.Panel_Grating.Location = New System.Drawing.Point(315, 120) + 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.Name = "Panel_Grating" - Me.Panel_Grating.Size = New System.Drawing.Size(1080, 652) + Me.Panel_Grating.Size = New System.Drawing.Size(1440, 802) Me.Panel_Grating.TabIndex = 2 ' 'Label2 ' Me.Label2.AutoSize = True Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.8!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label2.Location = New System.Drawing.Point(64, 625) + 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(13, 13) + Me.Label2.Size = New System.Drawing.Size(16, 17) Me.Label2.TabIndex = 1 Me.Label2.Text = "L" ' @@ -453,22 +496,75 @@ Partial Class Individual ' Me.Label1.AutoSize = True Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.8!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label1.Location = New System.Drawing.Point(13, 575) + 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(18, 13) + Me.Label1.Size = New System.Drawing.Size(21, 17) Me.Label1.TabIndex = 0 Me.Label1.Text = "W" ' + '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(166, 21) + Me.CheckBox_Instructions.TabIndex = 28 + Me.CheckBox_Instructions.Text = "Assembly Instructions" + Me.CheckBox_Instructions.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(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 + ' 'Individual ' - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.BackColor = System.Drawing.SystemColors.Control - Me.ClientSize = New System.Drawing.Size(1167, 718) + Me.ClientSize = New System.Drawing.Size(1556, 884) Me.Controls.Add(Me.Panel_Data) 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.Name = "Individual" Me.Text = "Individual" Me.Panel_Data.ResumeLayout(False) @@ -517,4 +613,9 @@ Partial Class Individual Friend WithEvents ComboBox_Width As ComboBox Friend WithEvents Button_Back As Button Friend WithEvents Button_Radius As Button + Friend WithEvents CheckBox_FrameDrawing As CheckBox + Friend WithEvents CheckBox_GratingDrawing As CheckBox + Friend WithEvents CheckBox_Frames As CheckBox + Friend WithEvents CheckBox_Instructions As CheckBox + Friend WithEvents CheckBox_3DModel As CheckBox End Class diff --git a/Wardrobe/GUI/Individual.resx b/Wardrobe/GUI/Individual.resx index 09c2fb7..49ef412 100644 --- a/Wardrobe/GUI/Individual.resx +++ b/Wardrobe/GUI/Individual.resx @@ -120,59 +120,61 @@ - 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 @@ -231,251 +233,249 @@ uOqa1j0JBv3QeGSnwtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa 1j0JBv3QeGSnwtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa1j0J Bv3QeGSnwtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa1j0JBv3Q - eGSnwtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa1j0JBv3QeGSn - wtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa1j0JBv3QeGSnwtnC - mmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZOcrnD+3sCbUHw31oQEkfcc/KD9PXcrOeGTn - K5y/tLAC8OyXqUvZGY/sVDhbWAF4ZtAPjUd2KpwtrAA8M+iHxiM7Fc4WVgCeGfRD45GdCmcLKwDPDPqh - 8chOhbOFFYBnBv3QeGSnwtnCCsAzg35oPLJT4WxhBeCZQT80HtmpcLawAvDMoB8aj+xUOFtYAXhm0A+N - R3YqnC2sADwz6IfGIzsVzhZWAJ4Z9EPjkZ0KZwsrAM8M+qHxyE6Fs4UVgGcG/dB4ZKfC2cIKwDODfmg8 - slPhbGEF4JlBPzQe2alwtrAC8MygHxqP7FQ4W1gBeGbQD41HdiqcLawAPDPoh8YjOxXOFlYAnhn0Q+OR - nQpnCysAzwz6ofHIToWzhRWAZwb90Hhkp8LZwgrAM4N+aDyyU+FsYQXgmUE/NB7Z+QrnTxXQsJ+//AgQ - Vl0zddCln6YuZWc8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZ - jwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EI - ALzLeAQA3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDA - u4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzL - eAQA3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDAu4xH - AOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA - 3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDAm/z6w/8A - /5LainB3TgwAAAAASUVORK5CYII= + eGSnwtnCmmDQgbjqmtY9CQb90Hhk5yucP7ewJtQfDfWhASR9xz8oP09dys54ZOcrnL+0sALw7JepS9kZ + j+xUOFtYAXhm0A+NR3YqnC2sADwz6IfGIzsVzhZWAJ4Z9EPjkZ0KZwsrAM8M+qHxyE6Fs4UVgGcG/dB4 + ZKfC2cIKwDODfmg8slPhbGEF4JlBPzQe2alwtrAC8MygHxqP7FQ4W1gBeGbQD41HdiqcLawAPDPoh8Yj + OxXOFlYAnhn0Q+ORnQpnCysAzwz6ofHIToWzhRWAZwb90Hhkp8LZwgrAM4N+aDyyU+FsYQXgmUE/NB7Z + qXC2sALwzKAfGo/sVDhbWAF4ZtAPjUd2KpwtrAA8M+iHxiM7Fc4WVgCeGfRD45GdCmcLKwDPDPqh8chO + hbOFFYBnBv3QeGSnwtnCCsAzg35oPLJT4WxhBeCZQT80Htn5CudPFdCwn7/8CBBWXTN10KWfpi5lZzwC + AO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDw + LuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8y + HgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMR + AHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGA + dxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX + 8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmP + AMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMCb/PrD/wD/ktqKcHdODAAAAABJ + RU5ErkJggg== - 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 - Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eD - Qb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0 - i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8o - hsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LI - TJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxU - OVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWz - lXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZ - Nxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWD - QQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0 - YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW - 1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3d - mnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1p - t2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7 - Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eD - Qb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0 - i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8o - hsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LI - TJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxU - OVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWz - lXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZ - Nxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWD - QQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0 - YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW - 1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3d - mnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1p - t2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7 - Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eD - Qb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0 - i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8o - hsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LI - TJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxU - OVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWz - lXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZ - Nxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWD - QQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0 - YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsyccv6zlXVD/aOh/qIBbPpP/Afln+mWMhNDZk45 - /9XKCsDf/pVuKTMxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUx - ZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUx - ZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUx - ZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUx - ZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZOaU83+qoMv+efw3 - wLK6NekG3fQ/6ZYyE0MA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA - 4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADe - EkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0x - BADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA - 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 + Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2 + GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NB + vyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSL + YshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiG + zFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshM + lbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5 + W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOV + dYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3 + GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNB + B9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRg + Xd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bV + rWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2a + dns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3 + Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2 + GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NB + vyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSL + YshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiG + zFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshM + lbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5 + W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOV + dYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3 + GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNB + B9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRg + Xd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bV + rWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2a + dns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3 + Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2 + GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NB + vyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSL + YshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiG + zFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshM + lbOVdYNBB9bVrWm3Z4NBvyiGzJxy/rOVdUP9o6H+ogFs+k/8B+Wf6ZYyE0NmTjn/1coKwN/+lW4pMzFk + psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk + psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk + psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk + psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk + psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk5pTzf6qgy/55/DfAsro16Qbd9D/pljIT + QwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEE + AN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDg + LTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4S + QwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEE + AN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDg + LTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4S + QwDgLTEEAN4SQwDgJf/+r/8LaLxoKagskSkAAAAASUVORK5CYII= - iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - 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 - aftn76hJMrIAAAAASUVORK5CYII= + iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAu + IwAALiMBeKU/dgAAGL1JREFUeF7t19FtrddxhmGVkA4SIA2kRJXgktSBc6kulA6cNXbg2OOhdM6cNeQ/ + ez8XD0B8N5sAh+slf/rLX/4CACxXjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDA + LuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxS + jgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUI + AOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDA + LuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxS + jgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUI + AOxSjgDALuUIAOxSjgDALuUIAOxSjgDALuUIAOxSjjT99NOfjl/gaf7z3/8Dvtevx2/D/ly+pbSUI01/ + ezzPV/As5+GEJ/qtfEtpKUeaBJ2HKh5SeAJBv6gcaRJ0Hqp4SOEJBP2icqRJ0Hmo4iGFJxD0i8qRJkHn + oYqHFJ5A0C8qR5oEnYcqHlJ4AkG/qBxpEnQeqnhI4QkE/aJypEnQeajiIYUnEPSLypEmQeehiocUnkDQ + LypHmgSdhyoeUngCQb+oHGkSdB6qeEjhCQT9onKkSdB5qOIhhScQ9IvKkSZB56GKhxSeQNAvKkeaBJ2H + Kh5SeAJBv6gcaRJ0Hqp4SOEJBP2icqRJ0Hmo4iGFJxD0i8qRJkHnoYqHFJ5A0C8qR5oEnYcqHlJ4AkG/ + qBxpEnQeqnhI4QkE/aJypEnQeajiIYUnEPSLypEmQeehiocUnkDQLypHmgSdhyoeUngCQb+oHGkSdB6q + eEjhCQT9onKkSdB5qOIhhScQ9IvKkabPCXp8xs882p+O6mf3Vf7nPJw/w3f65agifNOv5VtKSznS9DlB + /7n8bJ7hp5/+7fjvf/h5fbX/Of6r/F7hd5zYRtSrCN/0S/XZ9JQjTYL+3sScF3JiK+jLlCNNgv6+xJwX + c2Ir6MuUI02C/p7EnBd0Yivoy5QjTYL+fsScF3ViK+jLlCNNgv5exJwXdmIr6MuUI02C/j7EnBd3Yivo + y5QjTYL+HsScN3BiK+jLlCNNgv76xJw3cWIr6MuUI02C/trEnDdyYivoy5QjTYL+usScN3NiK+jLlCNN + gv6axJw3dGIr6MuUI02C/nrEnDd1Yivoy5QjTYL+WsScN3ZiK+jLlCNNgv46xJw3d2Ir6MuUI02C/hrE + HAR9oXKkSdD3E3P4qxNbQV+mHGkS9N3EHP7uxFbQlylHmgR9LzGHf3JiK+jLlCNNgr6TmMO/OLEV9GXK + kSZB30fMoXRiK+jLlCNNgr6LmMOHTmwFfZlypEnQ9xBz+F0ntoK+TDnSJOg7iDn8oRNbQV+mHGkS9OcT + c/gmJ7aCvkw50iTozybm8M1ObAV9mXKkSdCfS8zhu5zYCvoy5UiToD+TmMN3O7EV9GXKkSZBfx4xh5YT + W0FfphxpEvRnEXNoO7EV9GXKkSZBfw4xhx9yYivoy5QjTYL+DGIOP+zEVtCXKUeaBP3riTlccWIr6MuU + I02C/rXEHK45sRX0ZcqRJkH/OmIOV53YCvoy5UiToH8NMYfrTmwFfZlypEnQP5+Yw4gTW0FfphxpEvTP + JeYw5sRW0JcpR5oE/fOIOYw6sRX0ZcqRJkH/HGIO405sBX2ZcqRJ0OeJOXyKE1tBX6YcaRL0WWIOn+bE + VtCXKUeaBH2OmMOnOrEV9GXKkSZBnyHm8OlObAV9mXKkSdDvE3P4Eie2gr5MOdIk6HeJOXyZE1tBX6Yc + aRL0e8QcvtSJraAvU440CfodYg5f7sRW0JcpR5oE/ceJOTzCia2gL1OONAn6jxFzeIwTW0FfphxpEvQ+ + MYdHObEV9GXKkSZB7xFzeJwTW0FfphxpEvTvJ+bwSCe2gr5MOdIk6N9HzOGxTmwFfZlypEnQv52Yw6Od + 2Ar6MuVIk6B/GzGHxzuxFfRlypEmQf9jYg4rnNgK+jLlSJOg/z4xhzVObAV9mXKkSdA/JuawyomtoC9T + jjQJek3MYZ0TW0FfphxpEvR/Jeaw0omtoC9TjjQJ+j8Tc1jrxFbQlylHmgT9/4k5rHZiK+jLlCNNgv43 + Yg7rndgK+jLlSJOgizm8iBNbQV+mHGl696CLObyME1tBX6YcaXrnoIs5vJQTW0Ffphxpetegizm8nBNb + QV+mHGl6x6CLObykE1tBX6YcaXq3oIs5vKwTW0Ffphxpeqegizm8tBNbQV+mHGl6l6CLOby8E1tBX6Yc + aXqHoIs5vIUTW0FfphxpevWgizm8jRNbQV+mHGl65aCLObyVE1tBX6YcaXrVoIs5vJ0TW0FfphxpesWg + izm8pRNbQV+mHGl6taCLObytE1tBX6YcaXqloIs5vLUTW0FfphxpepWgizm8vRNbQV+mHGl6haCLOXCc + 2Ar6MuVI0/agiznwf05sBX2ZcqRpc9DFHPgHJ7aCvkw50rQ16GIOJCe2gr5MOdK0MehiDhRObAV9mXKk + aVvQxRz4wImtoC9TjjRtCrqYA7/jxFbQlylHmrYEXcyBP3BiK+jLlCNNG4Iu5sA3OLEV9GXKkaanB13M + gW90Yivoy5QjTU8OupgD3+HEVtCXKUeanhp0MQe+04mtoC9TjjQ9MehiDjSc2Ar6MuVI09OCLuZA04mt + oC9TjjQ9KehiDvyAE1tBX6YcaXpK0MUc+EEntoK+TDnS9ISgizlwwYmtoC9TjjR9ddDFHLjkxFbQlylH + mr4y6GIOXHRiK+jLlCNNXxV0MQcuO7EV9GXKkaavCLqYAwNObAV9mXKk6bODLubAkBNbQV+mHGn6zKCL + OTDoxFbQlylHmj4r6GIODDuxFfRlypGmzwn6nw4xB0ad2Ar6MuVI0+cE/UnEHF7Uia2gL1OONL1X0MUc + XtiJraAvU440vU/QxRxe3ImtoC9TjjS9R9DFHN7Aia2gL1OONL1+0MUc3sSJraAvU440vXbQxRzeyImt + oC9TjjS9btDFHN7Mia2gL1OONL1m0MUc3tCJraAvU440vV7QxRze1ImtoC9TjjS9VtDFHN7Yia2gL1OO + NL1O0MUc3tyJraAvU440vUbQxRwQ9IXKkab9QRdz4K9ObAV9mXKkaXfQxRz4uxNbQV+mHGnaG3QxB/7J + ia2gL1OONO0MupgD/+LEVtCXKUea9gVdzIHSia2gL1OONO0KupgDHzqxFfRlypGmPUEXc+B3ndgK+jLl + SNOOoIs58IdObAV9mXKk6flBF3Pgm5zYCvoy5UjTs4Mu5sA3O7EV9GXKkabnBl3Mge9yYivoy5QjTc8M + upgD3+3EVtCXKUeanhd0MQdaTmwFfZlypOlZQRdzoO3EVtCXKUeanhN0MQd+yImtoC9TjjQ9I+hiDvyw + E1tBX6Ycafr6oIs5cMWJraAvU440fW3QxRy45sRW0JcpR5q+LuhiDlx1Yivoy5QjTV8TdDEHrjuxFfRl + ypGmzw+6mAMjTmwFfZlypOlzgy7mwJgTW0Ffphxp+rygizkw6sRW0JcpR5o+J+hiDow7sRX0ZcqRnjjO + dKwTfq4+G+CmeGvS2zNB0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc6VgnCDowLt6a9PZMEPSLypGe + OM50rBMEHRgXb016eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9onKkJ44zHesEQQfGxVuT3p4Jgn5ROdIT + x5mOdYKgA+PirUlvzwRBv6gc6YnjTMc6QdCBcfHWpLdngqBfVI70xHGmY50g6MC4eGvS2zNB0C8qR3ri + ONOxThB0YFy8NentmSDoF5UjPXGc6VgnCDowLt6a9PZMEPSLypGeOM50rBMEHRgXb016eyYI+kXlSE8c + ZzrWCYIOjIu3Jr09EwT9onKkJ44zHesEQQfGxVuT3p4Jgn5ROdITx5mOdYKgA+PirUlvzwRBv6gc6Ynj + TMc6QdCBcfHWpLdngqBfVI70xHGmY50g6MC4eGvS2zNB0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc + 6VgnCDowLt6a9PZMEPSLypGeOM50rBMEHRgXb016eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9onKkJ44z + HesEQQfGxVuT3p4Jgn5ROdITx5mOdYKgA+PirUlvzwRBv6gc6YnjTMc6QdCBcfHWpLdngqBfVI70xHGm + Y50g6MC4eGvS2zNB0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc6VgnCDowLt6a9PZMEPSLypGeOM50 + rBMEHRgXb016eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9onKkJ44zHesEQQfGxVuT3p4Jgn5ROdITx5mO + dYKgA+PirUlvzwRBv6gc6YnjTMc6QdCBcfHWpLdngqBfVI70xHGmY50g6MC4eGvS2zNB0C8qR3riONOx + ThB0YFy8NentmSDoF5UjPXGc6VgnCDowLt6a9PZMEPSLypGeOM50rBMEHRgXb016eyYI+kXlSE8cZzrW + CYIOjIu3Jr09EwT9onKkJ44zHesEQQfGxVuT3p4Jgn5ROdITx5mOdYKgA+PirUlvzwRBv6gc6YnjTMc6 + QdCBcfHWpLdngqBfVI70xHGmY50g6MC4eGvS2zNB0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc6Vgn + CDowLt6a9PZMEPSLypGeOM50rBMEHRgXb016eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9onKkJ44zHesE + QQfGxVuT3p4Jgn5ROdITx5mOdYKgA+PirUlvzwRBv6gc6YnjTMc6QdCBcfHWpLdngqBfVI70xHGmY50g + 6MC4eGvS2zNB0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc6VgnCDowLt6a9PZMEPSLypGeOM50rBME + HRgXb016eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9onKkJ44zHesEQQfGxVuT3p4Jgn5ROdITx5mOdYKg + A+PirUlvzwRBv6gc6YnjTMc6QdCBcfHWpLdngqBfVI70xHGmY50g6MC4eGvS2zNB0C8qR3riONOxThB0 + YFy8NentmSDoF5UjPXGc6VgnCDowLt6a9PZMEPSLypGeOM50rBMEHRgXb016eyYI+kXlSE8cZzrWCYIO + jIu3Jr09EwT9onKkJ44zHesEQQfGxVuT3p4Jgn5ROdITx5mOdYKgA+PirUlvzwRBv6gc6YnjTMc6QdCB + cfHWpLdngqBfVI70xHGmY50g6MC4eGvS2zNB0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc6VgnCDow + Lt6a9PZMEPSLypGeOM50rBMEHRgXb016eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9onKkJ44zHesEQQfG + xVuT3p4Jgn5ROdITx5mOdYKgA+PirUlvzwRBv6gc6YnjTMc6QdCBcfHWpLdngqBfVI70xHGmY50g6MC4 + eGvS2zNB0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc6VgnCDowLt6a9PZMEPSLypGeOM50rBMEHRgX + b016eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9onKkJ44zHesEQQfGxVuT3p4Jgn5ROdITx5mOdYKgA+Pi + rUlvzwRBv6gc6YnjTMc6QdCBcfHWpLdngqBfVI70xHGmY50g6MC4eGvS2zNB0C8qR3riONOxThB0YFy8 + NentmSDoF5UjPXGc6VgnCDowLt6a9PZMEPSLypGeOM50rBMEHRgXb016eyYI+kXlSE8cZzrWCYIOjIu3 + Jr09EwT9onKkJ44zHesEQQfGxVuT3p4Jgn5ROdITx5mOdYKgA+PirUlvzwRBv6gc6YnjTMc6QdCBcfHW + pLdngqBfVI70xHGmY50g6MC4eGvS2zNB0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc6VgnCDowLt6a + 9PZMEPSLypGeOM50rBMEHRgXb016eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9onKkJ44zHesEQQfGxVuT + 3p4Jgn5ROdITx5mOdYKgA+PirUlvzwRBv6gc6YnjTMc6QdCBcfHWpLdngqBfVI70xHGmY50g6MC4eGvS + 2zNB0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc6VgnCDowLt6a9PZMEPSLypGeOM50rBMEHRgXb016 + eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9onKkJ44zHesEQQfGxVuT3p4Jgn5ROdITx5mOdYKgA+PirUlv + zwRBv6gc6YnjTMc6QdCBcfHWpLdngqBfVI70xHGmY50g6MC4eGvS2zNB0C8qR3riONOxThB0YFy8Nent + mSDoF5UjPXGc6VgnCDowLt6a9PZMEPSLypGeOM50rBMEHRgXb016eyYI+kXlSE8cZzrWCYIOjIu3Jr09 + EwT9onKkJ44zHesEQQfGxVuT3p4Jgn5ROdITx5mOdYKgA+PirUlvzwRBv6gc6YnjTMc6QdCBcfHWpLdn + gqBfVI70xHGmY50g6MC4eGvS2zNB0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc6VgnCDowLt6a9PZM + EPSLypGeOM50rBMEHRgXb016eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9onKkJ44zHesEQQfGxVuT3p4J + gn5ROdITx5mOdYKgA+PirUlvzwRBv6gc6YnjTMc6QdCBcfHWpLdngqBfVI70xHGmY50g6MC4eGvS2zNB + 0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc6VgnCDowLt6a9PZMEPSLypGeOM50rBMEHRgXb016eyYI + +kXlSE8cZzrWCYIOjIu3Jr09EwT9onKkJ44zHesEQQfGxVuT3p4Jgn5ROdITx5mOdYKgA+PirUlvzwRB + v6gc6YnjTMc6QdCBcfHWpLdngqBfVI70xHGmY50g6MC4eGvS2zNB0C8qR3riONOxThB0YFy8NentmSDo + F5UjPXGc6VgnCDowLt6a9PZMEPSLypGeOM50rBMEHRgXb016eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9 + onKkJ44zHesEQQfGxVuT3p4Jgn5ROdITx5mOdYKgA+PirUlvzwRBv6gc6YnjTMc6QdCBcfHWpLdngqBf + VI70xHGmY50g6MC4eGvS2zNB0C8qR3riONOxThB0YFy8NentmSDoF5UjPXGc6VgnCDowLt6a9PZMEPSL + ypGeOM50rBMEHRgXb016eyYI+kXlSE8cZzrWCYIOjIu3Jr09EwT9onKk5xznr+lYJ8QfDfGLBjDpM/5B + +bV6S+kpR3rOcf6WjhWAj/1WvaX0lCM9cZzpWAH4mKBfVI70xHGmYwXgY4J+UTnSE8eZjhWAjwn6ReVI + TxxnOlYAPiboF5UjPXGc6VgB+JigX1SO9MRxpmMF4GOCflE50hPHmY4VgI8J+kXlSE8cZzpWAD4m6BeV + Iz1xnOlYAfiYoF9UjvTEcaZjBeBjgn5ROdITx5mOFYCPCfpF5UhPHGc6VgA+JugXlSM9cZzpWAH4mKBf + VI70xHGmYwXgY4J+UTnSE8eZjhWAjwn6ReVITxxnOlYAPiboF5UjPXGc6VgB+JigX1SO9MRxpmMF4GOC + flE50hPHmY4VgI8J+kXlSE8cZzpWAD4m6BeVIz1xnOlYAfiYoF9UjvTEcaZjBeBjgn5ROdITx5mOFYCP + CfpF5UjPOc4/x4EO+/X4BWBYvDXVG3TTn6u3lJ5yBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2 + KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdy + BAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcA + YJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2 + KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdy + BAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcA + YJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAB2KUcAYJdyBAA2+ctP/wtp+2fvqEkysgAAAABJ + RU5ErkJggg== \ No newline at end of file diff --git a/Wardrobe/GUI/Individual.vb b/Wardrobe/GUI/Individual.vb index 7f55cf7..fe4cf25 100644 --- a/Wardrobe/GUI/Individual.vb +++ b/Wardrobe/GUI/Individual.vb @@ -232,6 +232,53 @@ Public Class Individual Middle_Rectangle.SquareMiddleButtton(sender, e) End Sub + + + Private Sub CheckBox_3DModel_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_3DModel.CheckedChanged + If User_Input.add3DGrating = True Then + User_Input.add3DGrating = False + Else + User_Input.add3DGrating = True + End If + End Sub + + Private Sub CheckBox_Frames_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_Frames.CheckedChanged + If User_Input.addFrame = True Then + User_Input.addFrame = False + CheckBox_FrameDrawing.Checked = False + CheckBox_FrameDrawing.Enabled = False + User_Input.addFrameDrawing = False + Else + User_Input.addFrame = True + CheckBox_FrameDrawing.Enabled = True + End If + End Sub + + Private Sub CheckBox_GratingDrawing_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_GratingDrawing.CheckedChanged + If User_Input.addGratingDrawing = True Then + User_Input.addGratingDrawing = False + Else + User_Input.addGratingDrawing = True + End If + End Sub + + Private Sub CheckBox_FrameDrawing_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_FrameDrawing.CheckedChanged + If User_Input.addFrameDrawing = True Then + User_Input.addFrameDrawing = False + Else + User_Input.addFrameDrawing = True + End If + End Sub + + Private Sub CheckBox_Instructions_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_Instructions.CheckedChanged + If User_Input.addInstructions = True Then + User_Input.addInstructions = False + Else + User_Input.addInstructions = True + End If + End Sub + + ' ---------------------------------- Calculate ---------------------------------- ' --- When calculate button is pressed --- Public Sub Button_Calculate_Click(sender As Object, e As EventArgs) @@ -244,10 +291,40 @@ Public Class Individual If AppForm.fillMode Then Grating_Fill.Calculate_Grid() - 'Multiple_3D.BuildGrid() + Dim frameCreated As Boolean = False + If User_Input.add3DGrating = True Then + Multiple_3D.BuildGrid() + frameCreated = True + End If + + If User_Input.addGratingDrawing = True Then + Multiple_3D_Simplified.Build_Grid(False) + Multiple_Drawing.Generate_Drawing() + End If + + Dim simplifiedWithFrameCreated As Boolean = False + If User_Input.addFrameDrawing = True Then + If frameCreated = False Then + Multiple_3D_Simplified.Build_Grid(True) + simplifiedWithFrameCreated = True + End If + For Each DR As DataRow In Frame_3D.frameDT.Rows + If DR("TYPE") = "SIDE" Then + Frame_3D.Generate_End_Frame_Pieces() + Frame_Drawing.Create_Assemblies(simplifiedWithFrameCreated) + Frame_Drawing.Generate_Drawings() + Exit For + End If + Next + End If + + If User_Input.addInstructions = True Then + If User_Input.addFrame = True AndAlso simplifiedWithFrameCreated = False Then + Multiple_3D_Simplified.Build_Grid(True) + End If + 'Skapa drawing filen här + End If - Multiple_3D_Simplified.Build_Grid() - Multiple_Drawing.Generate_Drawing() Else Individual_3D.BuildGrating() Individual_Drawing.Create_Model_For_Drawing() @@ -268,4 +345,5 @@ Public Class Individual AppForm.Panel_Start.Controls.Add(Main_Menu) 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 c068c8c..f2e64e3 100644 --- a/Wardrobe/Gratings Data/User_Input.vb +++ b/Wardrobe/Gratings Data/User_Input.vb @@ -12,7 +12,11 @@ Private Shared lacqueredCheckBox As New CheckBox Private Shared lacqueredCheckBoxBol As Boolean = False - + Public Shared add3DGrating As Boolean = False + Public Shared addFrame As Boolean = False + Public Shared addGratingDrawing As Boolean = False + Public Shared addFrameDrawing As Boolean = False + Public Shared addInstructions As Boolean = False Public Shared Sub TypeChanged(sender As Object, e As EventArgs) Individual.ComboBox_Material.Enabled = True Individual.ComboBox_Material.Items.Clear() diff --git a/Wardrobe/SolidWorks/Individual_Frame_3D.vb b/Wardrobe/SolidWorks/Frame_3D.vb similarity index 98% rename from Wardrobe/SolidWorks/Individual_Frame_3D.vb rename to Wardrobe/SolidWorks/Frame_3D.vb index 5ca3e01..03194b6 100644 --- a/Wardrobe/SolidWorks/Individual_Frame_3D.vb +++ b/Wardrobe/SolidWorks/Frame_3D.vb @@ -1,6 +1,6 @@ Imports XCCLibrary Imports SldWorks -Public Class Individual_Frame_3D +Public Class Frame_3D Private Shared designName As String Public Shared frameDT As New DataTable Public Shared cuttingList As New Dictionary(Of Integer, Integer()) @@ -28,7 +28,7 @@ Public Class Individual_Frame_3D HLCtName = "frame_l_straight" End If inst_ = ExternalClass.instantiate_parts(parentID, HLCtName, "") - ExternalClass.modify_parameter_value("DP_HEIGHT", inst_, 30) 'FIXA + 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_ROTATION", inst_, frameDT.Rows(i)("ROTATION")) @@ -121,10 +121,10 @@ Public Class Individual_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") = gratingParameters("WIDTH") + DTRow("OFFSET_W") = Data.gratingW 'gratingParameters("WIDTH") DTRow("OFFSET_L") = 0 ElseIf DTRow("CORNER") = 2 Then - DTRow("OFFSET_W") = gratingParameters("WIDTH") + DTRow("OFFSET_W") = Data.gratingW 'gratingParameters("WIDTH") DTRow("OFFSET_L") = gratingParameters("LENGTH") ElseIf DTRow("CORNER") = 3 Then DTRow("OFFSET_W") = 0 @@ -219,7 +219,7 @@ Public Class Individual_Frame_3D Else DTRow("SIDE") = 2 DTRow("LENGTH") = (Data.gratingPoints.Rows(i2)("X") - Data.gratingPoints.Rows(i)("X")) * 1000 - 20 - numOfP * 200 + extraCorner1 + extraCorner2 - DTRow("OFFSET_W") = gratingParameters("WIDTH") + DTRow("OFFSET_W") = Data.gratingW 'gratingParameters("WIDTH") If Data.gratingPoints.Rows(i)("NAME").substring(0, 1) = "P" Then DTRow("OFFSET_L") = DTRow("LENGTH") + 210 - extraCorner1 Else diff --git a/Wardrobe/SolidWorks/Individual_Frame_Drawing.vb b/Wardrobe/SolidWorks/Frame_Drawing.vb similarity index 78% rename from Wardrobe/SolidWorks/Individual_Frame_Drawing.vb rename to Wardrobe/SolidWorks/Frame_Drawing.vb index 0f68c46..3086aff 100644 --- a/Wardrobe/SolidWorks/Individual_Frame_Drawing.vb +++ b/Wardrobe/SolidWorks/Frame_Drawing.vb @@ -1,28 +1,42 @@ Imports SldWorks -Public Class Individual_Frame_Drawing +Public Class Frame_Drawing Private Shared frameComponents - Public Shared Sub Create_Assemblies() + Public Shared Sub Create_Assemblies(frameInSimplified As Boolean) Dim swApp As SldWorks.SldWorks swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks) Dim model As ModelDoc2 Dim assembly As IAssemblyDoc Dim longstatus As Integer - frameComponents = Individual_3D.partDT.Select("partType = 'frame_l_straight'") + If AppForm.fillMode = True Then + If User_Input.add3DGrating = True Then + frameComponents = Multiple_3D.partDT.Select("partType = 'frame_l_straight'") + Else + frameComponents = Multiple_3D_Simplified.partDT.Select("partType = 'frame_l_straight'") + End If + Else + If User_Input.add3DGrating = True Then + frameComponents = Individual_3D.partDT.Select("partType = 'frame_l_straight'") + Else + 'Finns inte -> FIXA, kan funka: frameComponents = Multiple_3D_Simplified.partDT.Select("partType = 'frame_l_straight'") + End If + End If - For i = 0 To Individual_Frame_3D.cuttingList.Count - 1 + + + For i = 0 To Frame_3D.cuttingList.Count - 1 model = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2020\templates\Assembly.asmdot", 0, 0, 0) assembly = model Dim endPieceLength As Integer = 2000 - For j = 0 To Individual_Frame_3D.cuttingList.ElementAt(i).Value.Count - 1 - endPieceLength -= Individual_Frame_3D.sideFrameLengths("Frame " & Individual_Frame_3D.cuttingList.ElementAt(i).Value(j)) + For j = 0 To Frame_3D.cuttingList.ElementAt(i).Value.Count - 1 + endPieceLength -= Frame_3D.sideFrameLengths("Frame " & Frame_3D.cuttingList.ElementAt(i).Value(j)) Next Dim numOfParts As Integer = 0 Dim endPieceExist As Integer = 0 If endPieceLength > 0 Then - numOfParts = Individual_Frame_3D.cuttingList.ElementAt(i).Value.Count + numOfParts = Frame_3D.cuttingList.ElementAt(i).Value.Count Else - numOfParts = Individual_Frame_3D.cuttingList.ElementAt(i).Value.Count - 1 + numOfParts = Frame_3D.cuttingList.ElementAt(i).Value.Count - 1 endPieceExist = 1 End If @@ -30,9 +44,13 @@ Public Class Individual_Frame_Drawing Dim coordNames(numOfParts) As String Dim transMatrix As Object = Nothing For j = 0 To compNames.Count - 2 + endPieceExist - Dim frameID = Individual_Frame_3D.cuttingList.ElementAt(i).Value(j) - 1 + Dim frameID = Frame_3D.cuttingList.ElementAt(i).Value(j) - 1 - compNames(j) = Settings.filesFolder & "\Files\CADStart\" & frameComponents(frameID)("partName") & ".SLDPRT" + 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 coordNames(j) = "" Next @@ -93,7 +111,7 @@ Public Class Individual_Frame_Drawing Dim layMgr As LayerMgr layMgr = iDrawing.GetLayerManager() - For i = 0 To Individual_Frame_3D.cuttingList.Count - 1 + For i = 0 To Frame_3D.cuttingList.Count - 1 If i > 0 Then status = iDrawing.NewSheet3("Frame" & i + 1, 12, 12, 1, 10, False, Settings.HLCtFolder & "\Files Needed\A3 Part.slddrt", swSheetWidth, swSheetHeight, "Same as sheet specified in Document Properties") @@ -117,10 +135,10 @@ Public Class Individual_Frame_Drawing Dim components = RootComp.GetChildren() For j = 0 To components.Length - 1 Dim frameComponentName As String - If j = Individual_Frame_3D.cuttingList.ElementAt(i).Value.Count Then + If j = Frame_3D.cuttingList.ElementAt(i).Value.Count Then frameComponentName = "frame_l_end_piece" & i + 1 Else - frameComponentName = frameComponents(Individual_Frame_3D.cuttingList.ElementAt(i).Value(j) - 1)("partName") + frameComponentName = frameComponents(Frame_3D.cuttingList.ElementAt(i).Value(j) - 1)("partName") End If Dim plane1Name As String = "OffPlane1@" & CompName & "@" & myView.GetName2 & "/" & frameComponentName & "-1@" & CompName.Split("-")(0) @@ -128,12 +146,12 @@ Public Class Individual_Frame_Drawing Dim xOffset As Double = 0 For k = 0 To j - If k = Individual_Frame_3D.cuttingList.ElementAt(i).Value.Count Then + If k = Frame_3D.cuttingList.ElementAt(i).Value.Count Then xOffset += (2000 / 10 - xOffset) / 2 ElseIf k = j Then - xOffset += (Individual_Frame_3D.sideFrameLengths("Frame " & Individual_Frame_3D.cuttingList.ElementAt(i).Value(k)) / 10) / 2 + xOffset += (Frame_3D.sideFrameLengths("Frame " & Frame_3D.cuttingList.ElementAt(i).Value(k)) / 10) / 2 Else - xOffset += Individual_Frame_3D.sideFrameLengths("Frame " & Individual_Frame_3D.cuttingList.ElementAt(i).Value(k)) / 10 + xOffset += Frame_3D.sideFrameLengths("Frame " & Frame_3D.cuttingList.ElementAt(i).Value(k)) / 10 End If Next xOffset = xOffset / 1000 @@ -154,10 +172,10 @@ Public Class Individual_Frame_Drawing Dim balloonStyle As Integer Dim balloonOffset As Double Dim balloonText As String - If j < Individual_Frame_3D.cuttingList.ElementAt(i).Value.Count Then + If j < Frame_3D.cuttingList.ElementAt(i).Value.Count Then balloonStyle = 1 balloonOffset = 0.01 - balloonText = Individual_Frame_3D.cuttingList.ElementAt(i).Value(j) + balloonText = Frame_3D.cuttingList.ElementAt(i).Value(j) Else balloonStyle = 0 balloonOffset = -0.03 diff --git a/Wardrobe/SolidWorks/Individual_3D.vb b/Wardrobe/SolidWorks/Individual_3D.vb index 6a51904..6736524 100644 --- a/Wardrobe/SolidWorks/Individual_3D.vb +++ b/Wardrobe/SolidWorks/Individual_3D.vb @@ -39,7 +39,7 @@ Public Class Individual_3D Inst_Recesses(parentID, gratingParameters, recessDR) Next - Individual_Frame_3D.Build_Frame(gratingParameters, parentID) + Frame_3D.Build_Frame(gratingParameters, parentID) importClass.copyGroupsByDataSet(ExternalClass.groupds_new) Dim grNr = groupClass.NewGroupID @@ -50,11 +50,11 @@ Public Class Individual_3D Recess_Indent() Save_Assembly() - For Each DR As DataRow In Individual_Frame_3D.frameDT.Rows + For Each DR As DataRow In Frame_3D.frameDT.Rows If DR("TYPE") = "SIDE" Then - Individual_Frame_3D.Generate_End_Frame_Pieces() - Individual_Frame_Drawing.Create_Assemblies() - Individual_Frame_Drawing.Generate_Drawings() + Frame_3D.Generate_End_Frame_Pieces() + Frame_Drawing.Create_Assemblies(False) 'Fixa False + Frame_Drawing.Generate_Drawings() Exit For End If Next diff --git a/Wardrobe/SolidWorks/Instructions.vb b/Wardrobe/SolidWorks/Instructions.vb new file mode 100644 index 0000000..1f3351e --- /dev/null +++ b/Wardrobe/SolidWorks/Instructions.vb @@ -0,0 +1,4 @@ +Imports SldWorks +Public Class Instructions + +End Class diff --git a/Wardrobe/SolidWorks/Multiple_3D.vb b/Wardrobe/SolidWorks/Multiple_3D.vb index f32f9c7..087027d 100644 --- a/Wardrobe/SolidWorks/Multiple_3D.vb +++ b/Wardrobe/SolidWorks/Multiple_3D.vb @@ -4,6 +4,8 @@ Imports SldWorks Public Class Multiple_3D Private Shared gratingParameters As DataRow Private Shared designName As String + + Public Shared partDT As New DataTable Public Shared Sub BuildGrid() Dim pointTable As DataTable pointTable = Data.gratingPoints @@ -55,6 +57,10 @@ Public Class Multiple_3D Inst_Recesses(parentID, gratingParameters, recessDR) Next + If User_Input.addFrame = True Then + Frame_3D.Build_Frame(gratingParameters, parentID) + End If + importClass.copyGroupsByDataSet(ExternalClass.groupds_new) Dim grNr = groupClass.NewGroupID Dim designTable = designModel.selectDesign("*") @@ -65,6 +71,7 @@ Public Class Multiple_3D Recess_Indent() Save_Assembly() + End Sub @@ -74,8 +81,13 @@ Public Class Multiple_3D Dim status As Boolean - Dim Assebmly = swApp.ActiveDoc() - status = Assebmly.SaveAs3(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\gratings_assembly.SLDASM", 0, 4) + Dim Assembly = swApp.ActiveDoc() + 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) End Sub Private Shared Sub Inst_Recesses(parentID As Integer, gratingParameters As DataRow, recessDR As DataRow) @@ -226,7 +238,6 @@ Public Class Multiple_3D AssemblyExtension = Assembly.Extension Dim sldata = SelMgr.CreateSelectData - Dim partDT As New DataTable partDT = partModel.selectPart("*") Dim gratingParts = partDT.Select("parentName = 'START'") diff --git a/Wardrobe/SolidWorks/Multiple_3D_Simplified.vb b/Wardrobe/SolidWorks/Multiple_3D_Simplified.vb index 26c67bb..a365933 100644 --- a/Wardrobe/SolidWorks/Multiple_3D_Simplified.vb +++ b/Wardrobe/SolidWorks/Multiple_3D_Simplified.vb @@ -6,7 +6,7 @@ Public Class Multiple_3D_Simplified Public Shared listOfObsolete As List(Of Integer) Public Shared partDT As New DataTable - Public Shared Sub Build_Grid() + Public Shared Sub Build_Grid(withFrame As Boolean) Dim exportTable As DataTable exportTable = User_Input.Create_ExportTable() @@ -41,6 +41,10 @@ Public Class Multiple_3D_Simplified Inst_Recesses(parentID, gratingParameters, recessDR) Next + If withFrame = True Then + Frame_3D.Build_Frame(gratingParameters, parentID) + End If + importClass.copyGroupsByDataSet(ExternalClass.groupds_new) Dim grNr = groupClass.NewGroupID Dim designTable = designModel.selectDesign("*") @@ -51,7 +55,7 @@ Public Class Multiple_3D_Simplified Recess_Indent() Suppress_Bodies() - Save_Assembly() + Save_Assembly(withFrame) End Sub Private Shared Sub Suppress_Bodies() @@ -101,7 +105,7 @@ Public Class Multiple_3D_Simplified Next End Sub - Private Shared Sub Save_Assembly() + Private Shared Sub Save_Assembly(withFrame As Boolean) Dim swApp As SldWorks.SldWorks swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks) Dim assembly = swApp.ActiveDoc @@ -134,7 +138,18 @@ Public Class Multiple_3D_Simplified status = swCustPropMgr.Add3("Revision", 30, "", 1) Dim Assebmly = swApp.ActiveDoc() - status = Assebmly.SaveAs3(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\gratings_assembly_simplified.SLDASM", 0, 4) + 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) End Sub Private Shared Sub Inst_Recesses(parentID As Integer, gratingParameters As DataRow, recessDR As DataRow) diff --git a/Wardrobe/SolidWorks/Multiple_Drawing.vb b/Wardrobe/SolidWorks/Multiple_Drawing.vb index 287d859..a2abfb9 100644 --- a/Wardrobe/SolidWorks/Multiple_Drawing.vb +++ b/Wardrobe/SolidWorks/Multiple_Drawing.vb @@ -390,10 +390,10 @@ Public Class Multiple_Drawing Dim sheetScale = sheetProp(3) For i = 0 To Draw_Grating.DirSymbolPoints.Count - 2 Dim x1, x2, y1, y2 As Double - x1 = CDbl((Draw_Grating.DirSymbolPoints(i)(0) - Data.guiPanelMidX) / (20 * sheetScale)) + (swSheetWidth - 0.05) * sheetScale - y1 = -CDbl((Draw_Grating.DirSymbolPoints(i)(1) - Data.guiPanelMidY) / (20 * sheetScale)) + (swSheetHeight / 2) * sheetScale - x2 = CDbl((Draw_Grating.DirSymbolPoints(i + 1)(0) - Data.guiPanelMidX) / (20 * sheetScale)) + (swSheetWidth - 0.05) * sheetScale - y2 = -CDbl((Draw_Grating.DirSymbolPoints(i + 1)(1) - Data.guiPanelMidY) / (20 * sheetScale)) + (swSheetHeight / 2) * sheetScale + x1 = CDbl((Draw_Grating.DirSymbolPoints(i)(0) - Data.guiPanelMidX) / 200) + (swSheetWidth - 0.05) * sheetScale + y1 = -CDbl((Draw_Grating.DirSymbolPoints(i)(1) - Data.guiPanelMidY) / 200) + (swSheetHeight / 2) * sheetScale + x2 = CDbl((Draw_Grating.DirSymbolPoints(i + 1)(0) - Data.guiPanelMidX) / 200) + (swSheetWidth - 0.05) * sheetScale + y2 = -CDbl((Draw_Grating.DirSymbolPoints(i + 1)(1) - Data.guiPanelMidY) / 200) + (swSheetHeight / 2) * sheetScale skSegment = swSkMgr.CreateLine(x1, y1, 0, x2, y2, 0) Next @@ -402,22 +402,6 @@ Public Class Multiple_Drawing Dim note = iDrawing.CreateText2("Load Bearing Direction", (swSheetWidth - 0.075), (swSheetHeight / 2 + 0.012), 0, 0.003, 0) - 'For i = 0 To (Grating_Fill.numOfHorizontal * Grating_Fill.numOfVertical - 1) - ' Dim obsoleteBool As Boolean = False - ' For j = 0 To Multiple_3D_Simplified.listOfObsolete.Count - 1 - ' If i = Multiple_3D_Simplified.listOfObsolete(j) Then - ' obsoleteBool = True - ' Exit For - ' End If - ' Next - ' If obsoleteBool = True Then - ' Continue For - ' End If - - - ' gratingCounter += 1 - 'Next - status = swExtensions.SelectByID2(myView.GetName2, "DRAWINGVIEW", 0, 0, 0, False, 0, Nothing, 0) Dim vNotes As Object Dim autoBalloonParams As Object @@ -451,50 +435,12 @@ Public Class Multiple_Drawing Dim editedNote = swExtensions.EditBalloonProperties2(1, 2, 0, gratingCounter, 0, "", 0, False, 1, "X", 0.001) gratingCounter += 1 Next - Dim a = 0 - 'Dim noteInfo = vNotes(0).GetLeaderInfo() - - - 'Dim noteAnnotation As IAnnotation - 'noteAnnotation = vNotes(0).GetAnnotation() - 'noteAnnotation.SetPosition2(noteInfo(3), noteInfo(4), 0) - 'noteInfo = vNotes(0).GetLeaderInfo() - 'Dim a = 0 - - - - - ''Balloons - 'Dim balloonStyle As Integer = 1 - 'Dim balloonText As String = gratingCounter - - - 'Dim worldX As Double = swSheetWidth / 2 + ((2000 / 2) / 10) / 1000 - xOffset - 'status = swExtensions.SelectByRay(worldX, 0.153, 0, 0, 0, -1, 0.0005, 2, False, 0, 0) - - 'Dim BomBalloonParams As Object - 'BomBalloonParams = swExtensions.CreateBalloonOptions() - 'BomBalloonParams.Style = balloonStyle - 'BomBalloonParams.Size = 2 - 'BomBalloonParams.UpperTextContent = 1 - 'BomBalloonParams.UpperText = """" - 'BomBalloonParams.ShowQuantity = False - 'BomBalloonParams.QuantityPlacement = 1 - 'BomBalloonParams.QuantityDenotationText = "X" - 'BomBalloonParams.QuantityOverride = False - 'Dim myNote = swExtensions.InsertBOMBalloon2(BomBalloonParams) - - 'Dim noteAnnotation As IAnnotation - 'noteAnnotation = myNote.GetAnnotation() - 'noteAnnotation.SetPosition2(worldX + balloonOffset, 0.13, 0) - - 'iDrawing.ClearSelection2(True) - 'Dim balloonName As String = myNote.GetName() - 'status = swExtensions.SelectByID2(balloonName & "@Drawing View" & i + 1, "NOTE", 0, 0, 0, False, 0, Nothing, 0) - 'Dim editedNote = swExtensions.EditBalloonProperties2(balloonStyle, 2, 0, balloonText, 0, "", 0, False, 1, "X", 0.001) - + Dim newName As String + newName = Settings.folderPaths("object_" & Data.objectNum & "_drawings_gratings_sw") & "\grating_drawing.SLDDRW" + status = iDrawing.SaveAs3(newName, 0, 0) + status = iDrawing.SaveAs3(Settings.folderPaths("object_" & Data.objectNum & "_drawings_gratings_pdf") & "\grating_drawing.pdf", 0, 2) End Sub diff --git a/Wardrobe/SolidWorks/Multiple_Drawing2.vb b/Wardrobe/SolidWorks/Multiple_Drawing2.vb deleted file mode 100644 index 226bc04..0000000 --- a/Wardrobe/SolidWorks/Multiple_Drawing2.vb +++ /dev/null @@ -1,786 +0,0 @@ -Imports SldWorks -Public Class Multiple_Drawing2 - - Public Shared Sub Create_Models_For_Drawing() - Dim gratingsPointsDS As DataSet = Create_GratingPoints() - - Dim gratingHeight As Decimal = User_Input.gratingHeight / 1000 - - Dim swApp As SldWorks.SldWorks - swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks) - Dim Model As ModelDoc2 - Dim RootPoint(2) As Decimal - Dim Normal(2) As Decimal - swApp.UserControl = True - - Dim swSkMgr As SketchManager - Dim longstatus As Integer - Dim boolstatus As Boolean - Dim swModelDocExtension As ModelDocExtension - Dim status As Boolean - Dim swFeatureMgr As FeatureManager - Dim swFeature As Feature - Dim iPart As PartDoc - - Dim numOfGratings As Integer = Grating_Fill.numOfVertical * Grating_Fill.numOfHorizontal - - For i = 0 To numOfGratings - 1 - Model = swApp.NewDocument("C:\ProgramData\SOLIDWORKS\SOLIDWORKS 2020\templates\part.prtdot", 0, 0, 0) - - swSkMgr = Model.SketchManager - swSkMgr.InsertSketch(True) - boolstatus = Model.Extension.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, 0) - Model.ClearSelection2(True) - - For Each DR As DataRow In gratingsPointsDS.Tables(i).Rows - Dim skPoint As SketchPoint - Dim pX = DR("X") - Dim pY = DR("Y") - skPoint = swSkMgr.CreatePoint(pX, pY, 0) - Next - - For Each DR1 As DataRow In gratingsPointsDS.Tables(i).Rows - Dim skLine As SketchLine - Dim rowIndex = gratingsPointsDS.Tables(i).Rows.IndexOf(DR1) - Dim DR2 As DataRow - - Try - DR2 = gratingsPointsDS.Tables(i).Rows(rowIndex + 1) - Catch ex As Exception - DR2 = gratingsPointsDS.Tables(i).Rows(0) - End Try - - Dim pX1 = DR1("X") - Dim pY1 = DR1("Y") - Dim pX2 = DR2("X") - Dim pY2 = DR2("Y") - - skLine = swSkMgr.CreateLine(pX1, pY1, 0, pX2, pY2, 0) - Next - - swSkMgr.InsertSketch(True) - - swModelDocExtension = Model.Extension - status = swModelDocExtension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0) - - swFeatureMgr = Model.FeatureManager - swFeature = swFeatureMgr.FeatureExtrusion3(True, False, False, 0, 0, gratingHeight, 0, False, False, False, False, 0, 0, False, False, False, False, True, True, True, 0, 0, False) - - - ' MIddle points if needed - - - Model.ClearSelection2(True) - boolstatus = Model.Extension.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, 0) - Model.FeatureManager.InsertRefPlane(8, gratingHeight, 0, 0, 0, 0) - - iPart = swApp.ActiveDoc - Dim newName As String - newName = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\simplified_grating_" & i + 1 & ".SLDPRT" - - - ' Title head data - - - longstatus = iPart.SaveAs3(newName, 0, 0) - swApp.CloseDoc(newName) - Next - - ' --- Assembly --- - Dim assembly As IAssemblyDoc - Dim AssemblyExtension As SldWorks.ModelDocExtension - Model = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2020\templates\Assembly.asmdot", 0, 0, 0) - assembly = Model - AssemblyExtension = assembly.Extension - - Dim compNames(numOfGratings - 1) As String - Dim coordNames(numOfGratings - 1) As String - Dim transMatrix As Object = Nothing - For i = 0 To numOfGratings - 1 - compNames(i) = Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\simplified_grating_" & i + 1 & ".SLDPRT" - coordNames(i) = "" - Next - - Dim assemComps As Object - assemComps = assembly.AddComponents3((compNames), (transMatrix), (coordNames)) - - Model.ViewZoomtofit2() - longstatus = Model.SaveAs3(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\simplified_grating_assembly.SLDASM", 0, 0) - - ' --- Delete Obsolete --- - Dim listOfObsolete As List(Of Integer) - listOfObsolete = Multiple_3D.Find_Obsolete() - - For i = 0 To listOfObsolete.Count - 1 - assembly.ClearSelection2(True) - boolstatus = AssemblyExtension.SelectByID2("simplified_grating_" & listOfObsolete(i) & "-1@simplified_grating_assembly", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) - assembly.EditDelete - - My.Computer.FileSystem.DeleteFile(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw_support") & "\simplified_grating_" & listOfObsolete(i) & ".SLDPRT") - Next - - Dim swErrors As Integer - Dim swWarnings As Integer - boolstatus = assembly.Save3(1, swErrors, swWarnings) - End Sub - - Private Shared Function Create_GratingPoints() - Dim pointsDS As New DataSet - - Dim numOfGratings As Integer = Grating_Fill.numOfVertical * Grating_Fill.numOfHorizontal - - For i = 0 To numOfGratings - 1 - Dim pointsDT As New DataTable - pointsDT.Columns.Add("NAME", GetType(String)) - pointsDT.Columns.Add("TYPE", GetType(String)) - pointsDT.Columns.Add("X", GetType(Decimal)) - pointsDT.Columns.Add("Y", GetType(Decimal)) - - Dim GAPointsDT As New DataTable - GAPointsDT.Columns.Add("NAME", GetType(String)) - GAPointsDT.Columns.Add("X", GetType(Decimal)) - GAPointsDT.Columns.Add("Y", GetType(Decimal)) - - ' --- Determine grossArea points ---- - Dim pX(3) As Decimal - Dim pY(3) As Decimal - - Dim columnNum As Integer = (i + Grating_Fill.numOfHorizontal) Mod Grating_Fill.numOfHorizontal - If columnNum <> (Grating_Fill.numOfHorizontal - 1) Then - ' Columnn: alla utom sista - pX(0) = Data.grossAreaPoints.Rows(0)("X") + Grating_Fill.minLength * columnNum / 1000 - pX(1) = pX(0) + Grating_Fill.minLength / 1000 - pX(2) = pX(1) - pX(3) = pX(0) - Else - ' Column: sista - pX(0) = Data.grossAreaPoints.Rows(0)("X") + Grating_Fill.minLength * columnNum / 1000 - pX(1) = Data.grossAreaPoints.Rows(1)("X") - pX(2) = pX(1) - pX(3) = pX(0) - End If - - Dim rowNum As Integer = Math.Floor(i / Grating_Fill.numOfHorizontal) - If rowNum < Grating_Fill.numOfVertical - 2 Then - ' Row: alla utom sista och näst sista - pY(0) = Data.grossAreaPoints.Rows(0)("Y") - Grating_Fill.maxSingleWidth * rowNum / 1000 - pY(1) = pY(0) - pY(2) = pY(0) - Grating_Fill.maxSingleWidth / 1000 - pY(3) = pY(2) - ElseIf rowNum < Grating_Fill.numOfVertical - 1 Then - ' Row: Näst sista - pY(0) = Data.grossAreaPoints.Rows(0)("Y") - Grating_Fill.maxSingleWidth * rowNum / 1000 - pY(1) = pY(0) - If Grating_Fill.widthRevNeeded = True Then - pY(2) = pY(0) - Grating_Fill.revWidth / 1000 - Else - pY(2) = pY(0) - Grating_Fill.maxSingleWidth / 1000 - End If - pY(3) = pY(2) - Else - ' Row: Sista - If Grating_Fill.widthRevNeeded = True Then - pY(0) = Data.grossAreaPoints.Rows(0)("Y") - Grating_Fill.maxSingleWidth * (rowNum - 1) / 1000 - Grating_Fill.revWidth / 1000 - Else - pY(0) = Data.grossAreaPoints.Rows(0)("Y") - Grating_Fill.maxSingleWidth * rowNum / 1000 - End If - pY(1) = pY(0) - pY(2) = Data.grossAreaPoints.Rows(3)("Y") - pY(3) = pY(2) - End If - - For j = 0 To 3 - Dim DR As DataRow = pointsDT.NewRow() - DR("NAME") = "GA_" & j + 1 - DR("TYPE") = "GA" - DR("X") = pX(j) - DR("Y") = pY(j) - pointsDT.Rows.Add(DR) - - DR = GAPointsDT.NewRow() - DR("NAME") = "GA_" & j + 1 - DR("X") = pX(j) - DR("Y") = pY(j) - GAPointsDT.Rows.Add(DR) - Next - - ' --- Add recess points --- - Dim recessPointsDT As New DataTable - recessPointsDT.Columns.Add("NAME", GetType(String)) - recessPointsDT.Columns.Add("TYPE", GetType(String)) - recessPointsDT.Columns.Add("SIDE", GetType(Integer)) - recessPointsDT.Columns.Add("X", GetType(Decimal)) - recessPointsDT.Columns.Add("Y", GetType(Decimal)) - - For j = 1 To 4 - For Each DR As DataRow In Data.gratingPoints.Rows - Dim recessDR As DataRow = recessPointsDT.NewRow() - recessDR("NAME") = DR("NAME") - recessDR("SIDE") = j - recessDR("X") = DR("X") - recessDR("Y") = DR("Y") - Dim pointName As String = DR("NAME") - If pointName.Substring(0, 2) = "CA" Then - recessDR("TYPE") = "Corner Angle" - ElseIf pointName.Substring(0, 2) = "CR" Then - recessDR("TYPE") = "Corner Rectangle" - ElseIf pointName.Substring(0, 2) = "CS" Then - recessDR("TYPE") = "Side Rectangle" - Else - Continue For - End If - - If j = 1 Then - If DR("Y") = pointsDT.Rows(0)("Y") Then - If DR("X") >= pointsDT.Rows(0)("X") AndAlso DR("X") <= pointsDT.Rows(1)("X") Then - recessPointsDT.Rows.Add(recessDR) - End If - End If - ElseIf j = 2 Then - If DR("X") = pointsDT.Rows(1)("X") Then - If DR("Y") <= pointsDT.Rows(1)("Y") AndAlso DR("Y") >= pointsDT.Rows(2)("Y") Then - recessPointsDT.Rows.Add(recessDR) - End If - End If - ElseIf j = 3 Then - If DR("Y") = pointsDT.Rows(2)("Y") Then - If DR("X") <= pointsDT.Rows(2)("X") AndAlso DR("X") >= pointsDT.Rows(3)("X") Then - recessPointsDT.Rows.Add(recessDR) - End If - End If - Else - If DR("X") = pointsDT.Rows(3)("X") Then - If DR("Y") >= pointsDT.Rows(3)("Y") AndAlso DR("Y") <= pointsDT.Rows(0)("Y") Then - recessPointsDT.Rows.Add(recessDR) - End If - End If - End If - Next - Next - - ' --- intersecting recesses --- - For Each DR As DataRow In Data.recessData.Rows - If DR("RECESS TYPE") = "ANGLE" Then - Dim recessName As String = DR("NAME") - Dim recessAlreadyOK As Boolean = False - For Each DR2 As DataRow In recessPointsDT.Rows - Dim pointName As String = DR2("NAME") - If pointName.Substring(0, 3) = recessName Then - recessAlreadyOK = True - Exit For - End If - Next - If recessAlreadyOK = True Then - Continue For - End If - - ' Recess points - Dim p0(1) As Decimal - Dim p1(1) As Decimal - Dim p2(1) As Decimal - - p0(0) = Data.gratingPoints.Select("NAME = '" & recessName & "_1" & "'")(0)("X") - p0(1) = Data.gratingPoints.Select("NAME = '" & recessName & "_1" & "'")(0)("Y") - - p1(0) = Data.gratingPoints.Select("NAME = '" & recessName & "_2" & "'")(0)("X") - p1(1) = Data.gratingPoints.Select("NAME = '" & recessName & "_2" & "'")(0)("Y") - - If DR("CORNER") = 1 OrElse DR("CORNER") = 3 Then - p2(0) = p0(0) - p2(1) = p1(1) - Else - p2(0) = p1(0) - p2(1) = p0(1) - End If - - Dim pointsInRecess As New Dictionary(Of String, Boolean) - For Each pDR As DataRow In pointsDT.Rows - Dim gp(1) As Decimal - gp(0) = pDR("X") - gp(1) = pDR("Y") - - pointsInRecess.Add(pDR("NAME"), Calculate_Triangle_Bool(gp, p0, p1, p2)) - Next - - Dim numOfPInRec As Integer = 0 - For Each bool As Boolean In pointsInRecess.Values - If bool = True Then - numOfPInRec += 1 - End If - Next - - If numOfPInRec = 0 OrElse numOfPInRec = 4 Then - Continue For - End If - - ' - Straight line equation: y = kx + m - Dim k As Decimal = (p1(1) - p0(1)) / (p1(0) - p0(0)) - Dim m As Decimal = p0(1) - (k * p0(0)) - - Dim npDR As DataRow - - Dim x1 As Decimal = (GAPointsDT.Rows(0)("Y") - m) / k - If x1 > GAPointsDT.Rows(0)("X") AndAlso x1 < GAPointsDT.Rows(1)("X") Then - ' lägg till på sida 1 - npDR = pointsDT.NewRow() - npDR("NAME") = recessName & "_1" ' fixa - npDR("TYPE") = "Recess CA" - npDR("X") = x1 - npDR("Y") = GAPointsDT.Rows(0)("Y") - - Dim inIndex As Integer = Get_RowIndex(pointsDT, 1, npDR("X"), npDR("Y"), GAPointsDT) - - pointsDT.Rows.InsertAt(npDR, inIndex + 1) - End If - - Dim y2 As Decimal = k * GAPointsDT.Rows(1)("X") + m - If y2 < GAPointsDT.Rows(1)("Y") AndAlso y2 > GAPointsDT.Rows(2)("Y") Then - ' lägg till på sida 2 - npDR = pointsDT.NewRow() - npDR("NAME") = recessName & "_2" ' fixa - npDR("TYPE") = "Recess CA" - npDR("X") = GAPointsDT.Rows(1)("X") - npDR("Y") = y2 - - Dim inIndex As Integer = Get_RowIndex(pointsDT, 2, npDR("X"), npDR("Y"), GAPointsDT) - - pointsDT.Rows.InsertAt(npDR, inIndex + 1) - End If - - Dim x3 As Decimal = (GAPointsDT.Rows(2)("Y") - m) / k - If x3 < GAPointsDT.Rows(2)("X") AndAlso x3 > GAPointsDT.Rows(3)("X") Then - ' lägg till på sida 3 - npDR = pointsDT.NewRow() - npDR("NAME") = recessName & "_3" ' fixa - npDR("TYPE") = "Recess CA" - npDR("X") = x3 - npDR("Y") = GAPointsDT.Rows(2)("Y") - - Dim inIndex As Integer = Get_RowIndex(pointsDT, 3, npDR("X"), npDR("Y"), GAPointsDT) - - pointsDT.Rows.InsertAt(npDR, inIndex + 1) - End If - - Dim y4 As Decimal = k * GAPointsDT.Rows(3)("X") + m - If y4 > GAPointsDT.Rows(3)("Y") AndAlso y4 < GAPointsDT.Rows(0)("Y") Then - ' lägg till på sida 4 - npDR = pointsDT.NewRow() - npDR("NAME") = recessName & "_4" ' fixa - npDR("TYPE") = "Recess CA" - npDR("X") = GAPointsDT.Rows(3)("X") - npDR("Y") = y4 - - Dim inIndex As Integer = Get_RowIndex(pointsDT, 4, npDR("X"), npDR("Y"), GAPointsDT) - - pointsDT.Rows.InsertAt(npDR, inIndex + 1) - End If - - For Each key As String In pointsInRecess.Keys - If pointsInRecess(key) = True Then - Dim removeIndex As Integer = 0 - For k = 0 To pointsDT.Rows.Count - 1 - If pointsDT.Rows(k)("NAME") = key Then - removeIndex = k - End If - Next - pointsDT.Rows.RemoveAt(removeIndex) - End If - Next - End If - Next - - - ' --- Point on grating side - recesses --- - For Each DR As DataRow In recessPointsDT.Rows - If DR("TYPE") = "Corner Angle" Then - Dim pointName As String = DR("NAME") - If pointName.Split("_")(1) = 1 Then - Dim DR3 As DataRow = pointsDT.NewRow() - DR3("NAME") = DR("NAME") - DR3("TYPE") = "Recess CA" - DR3("X") = DR("X") - DR3("Y") = DR("Y") - - Dim index As Integer = Get_RowIndex(pointsDT, DR("SIDE"), DR("X"), DR("Y"), GAPointsDT) - pointsDT.Rows.InsertAt(DR3, index + 1) - - If pointsDT.Rows.Count > index + 2 Then - Dim temp As String = pointsDT.Rows(index + 2)("NAME") - If temp.Substring(0, 2) = "GA" Then - pointsDT.Rows.RemoveAt(index + 2) - End If - Else - Dim temp As String = pointsDT.Rows(0)("NAME") - If temp.Substring(0, 2) = "GA" Then - pointsDT.Rows.RemoveAt(0) - End If - End If - - 'Check if remove next point aswell (If angle crosses more than one grating) - - Dim cornerPoint(1) As Decimal - Dim pointNumGA As Integer = DR("SIDE") + 2 - If pointNumGA > 4 Then - pointNumGA -= 4 - End If - - cornerPoint(0) = GAPointsDT.Select("NAME = 'GA_" & pointNumGA & "'")(0)("X") - cornerPoint(1) = GAPointsDT.Select("NAME = 'GA_" & pointNumGA & "'")(0)("Y") - - Create_SecondAnglePoint(pointsDT, DR, cornerPoint, GAPointsDT, recessPointsDT, "") - Else - Dim DR3 As DataRow = pointsDT.NewRow() - DR3("NAME") = DR("NAME") - DR3("TYPE") = "Recess CA" - DR3("X") = DR("X") - DR3("Y") = DR("Y") - - Dim index As Integer = Get_RowIndex(pointsDT, DR("SIDE"), DR("X"), DR("Y"), GAPointsDT) - pointsDT.Rows.InsertAt(DR3, index + 1) - - Dim temp As String = pointsDT.Rows(index)("NAME") - If temp.Substring(0, 2) = "GA" Then - pointsDT.Rows.RemoveAt(index) - End If - - Dim cornerPoint(1) As Decimal - Dim pointNumGA As Integer = DR("SIDE") - 1 - If pointNumGA < 1 Then - pointNumGA += 4 - End If - - cornerPoint(0) = GAPointsDT.Select("NAME = 'GA_" & pointNumGA & "'")(0)("X") - cornerPoint(1) = GAPointsDT.Select("NAME = 'GA_" & pointNumGA & "'")(0)("Y") - - Create_SecondAnglePoint(pointsDT, DR, cornerPoint, GAPointsDT, recessPointsDT, "GA_" & pointNumGA) - End If - End If - Next - - pointsDT.TableName = "Grating " & i & " - C" & columnNum & " R" & rowNum - pointsDS.Tables.Add(pointsDT) - Next - - Return pointsDS - End Function - - Private Shared Function Get_RowIndex(pDT As DataTable, side As Integer, pX As Decimal, pY As Decimal, GApDT As DataTable) - - Dim rowName As String = "" - Dim newX As Decimal = pX - Dim newY As Decimal = pY - - If side = 1 Then - Dim sidePoints = pDT.Select("Y = '" & pY & "'") - If sidePoints.Length = 0 Then - newX = GApDT.Select("NAME = 'GA_1'")(0)("X") - End If - For Each DR2 As DataRow In sidePoints - If DR2("X") < pX Then - rowName = DR2("NAME") - Else - newX = GApDT.Select("NAME = 'GA_1'")(0)("X") - Exit For - End If - Next - ElseIf side = 2 Then - Dim sidePoints = pDT.Select("X = '" & pX & "'") - If sidePoints.Length = 0 Then - newY = GApDT.Select("NAME = 'GA_2'")(0)("Y") - End If - For Each DR2 As DataRow In sidePoints - If DR2("Y") > pY Then - rowName = DR2("NAME") - Else - newY = GApDT.Select("NAME = 'GA_2'")(0)("Y") - Exit For - End If - Next - ElseIf side = 3 Then - Dim sidePoints = pDT.Select("Y = '" & pY & "'") - If sidePoints.Length = 0 Then - newX = GApDT.Select("NAME = 'GA_3'")(0)("X") - End If - For Each DR2 As DataRow In sidePoints - If DR2("X") > pX Then - rowName = DR2("NAME") - Else - newX = GApDT.Select("NAME = 'GA_3'")(0)("X") - Exit For - End If - Next - Else - Dim sidePoints = pDT.Select("X = '" & pX & "'") - If sidePoints.Length = 0 Then - newY = GApDT.Select("NAME = 'GA_4'")(0)("Y") - Else - If sidePoints(0)("NAME") = "GA_1" Then - Dim pointList As New List(Of DataRow) - For i = 1 To sidePoints.Length - 1 - pointList.Add(sidePoints(i)) - Next - pointList.Add(sidePoints(0)) - - For Each DR2 As DataRow In pointList - If DR2("Y") < pY Then - rowName = DR2("NAME") - Else - newY = GApDT.Select("NAME = 'GA_4'")(0)("Y") - Exit For - End If - Next - Else - For Each DR2 As DataRow In sidePoints - If DR2("Y") < pY Then - rowName = DR2("NAME") - Else - newY = GApDT.Select("NAME = 'GA_4'")(0)("Y") - Exit For - End If - Next - End If - End If - End If - - Dim index As Integer = 0 - If rowName = "" Then - Dim newSide As Integer = side - 1 - If newSide = 0 Then - newSide = 4 - End If - index = Get_RowIndex(pDT, newSide, newX, newY, GApDT) - Else - For j = 0 To pDT.Rows.Count - 1 - If pDT.Rows(j)("NAME") = rowName Then - index = j - Exit For - End If - Next - End If - - Return index - End Function - - Private Shared Sub Create_SecondAnglePoint(pDT As DataTable, rpDR As DataRow, gp As Decimal(), GApDT As DataTable, rDT As DataTable, pNameToRemove As String) - Dim p0(1) As Decimal - Dim p1(1) As Decimal - Dim p2(1) As Decimal - - Dim newDR As DataRow = pDT.NewRow - newDR("TYPE") = "Recess CA" - - Dim side As Integer = 0 - Dim pointName As String = rpDR("NAME") - If pointName.Split("_")(1) = 1 Then - Dim DR = Data.gratingPoints.Select("NAME = '" & pointName.Split("_")(0) & "_2" & "'") - newDR("NAME") = pointName.Split("_")(0) & "_2" - - p0(0) = rpDR("X") - p0(1) = rpDR("Y") - - p2(0) = DR(0)("X") - p2(1) = DR(0)("Y") - - If rpDR("SIDE") + 1 > 4 Then - side = rpDR("SIDE") + 1 - 4 - Else - side = rpDR("SIDE") + 1 - End If - Else - Dim DR = Data.gratingPoints.Select("NAME = '" & pointName.Split("_")(0) & "_1" & "'") - newDR("NAME") = pointName.Split("_")(0) & "_1" - - p0(0) = rpDR("X") - p0(1) = rpDR("Y") - - p2(0) = DR(0)("X") - p2(1) = DR(0)("Y") - - If rpDR("SIDE") - 1 < 1 Then - side = rpDR("SIDE") - 1 + 4 - Else - side = rpDR("SIDE") - 1 - End If - End If - - For Each rDR As DataRow In rDT.Rows - If rDR("NAME") = newDR("NAME") Then - Exit Sub - End If - Next - - If rpDR("SIDE") = 1 OrElse rpDR("SIDE") = 3 Then - p1(0) = p2(0) - p1(1) = p0(1) - ElseIf rpDR("SIDE") = 2 OrElse rpDR("SIDE") = 4 Then - p1(0) = p0(0) - p1(1) = p2(1) - End If - - Dim gpInside As Boolean = Calculate_Triangle_Bool(gp, p0, p1, p2) - - Dim insertIndex As Integer = 0 - If gpInside = False Then - ' If false => new point at side rpDR("SIDE")+1 - If side = 1 Then - Dim c As Decimal = GApDT.Select("NAME = 'GA_1'")(0)("Y") - rpDR("Y") - Dim z As Decimal = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - rpDR("Y") - Dim x As Decimal = 0 - If pointName.Split("_")(1) = 1 Then - x = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - GApDT.Select("NAME = 'GA_1'")(0)("X") - newDR("X") = GApDT.Select("NAME = 'GA_1'")(0)("X") + c * x / z ' Triangle likformighet - Else - x = GApDT.Select("NAME = 'GA_2'")(0)("X") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - newDR("X") = GApDT.Select("NAME = 'GA_2'")(0)("X") - c * x / z ' Triangle likformighet - End If - newDR("Y") = GApDT.Select("NAME = 'GA_1'")(0)("Y") - ElseIf side = 2 Then - Dim c As Decimal = GApDT.Select("NAME = 'GA_2'")(0)("X") - rpDR("X") - Dim z As Decimal = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - rpDR("X") - Dim x As Decimal = 0 - If pointName.Split("_")(1) = 1 Then - x = GApDT.Select("NAME = 'GA_2'")(0)("Y") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - newDR("Y") = GApDT.Select("NAME = 'GA_2'")(0)("Y") - c * x / z ' Triangle likformighet - Else - x = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - GApDT.Select("NAME = 'GA_3'")(0)("Y") - newDR("Y") = GApDT.Select("NAME = 'GA_3'")(0)("Y") + c * x / z ' Triangle likformighet - End If - newDR("X") = GApDT.Select("NAME = 'GA_2'")(0)("X") - ElseIf side = 3 Then - Dim c As Decimal = rpDR("Y") - GApDT.Select("NAME = 'GA_3'")(0)("Y") - Dim z As Decimal = rpDR("Y") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - Dim x As Decimal = 0 - If pointName.Split("_")(1) = 1 Then - x = GApDT.Select("NAME = 'GA_3'")(0)("X") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - newDR("X") = GApDT.Select("NAME = 'GA_3'")(0)("X") - c * x / z ' Triangle likformighet - Else - x = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - GApDT.Select("NAME = 'GA_4'")(0)("X") - newDR("X") = GApDT.Select("NAME = 'GA_4'")(0)("X") + c * x / z ' Triangle likformighet - End If - newDR("Y") = GApDT.Select("NAME = 'GA_3'")(0)("Y") - Else - Dim c As Decimal = rpDR("X") - GApDT.Select("NAME = 'GA_4'")(0)("X") - Dim z As Decimal = rpDR("X") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - Dim x As Decimal = 0 - If pointName.Split("_")(1) = 1 Then - x = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - GApDT.Select("NAME = 'GA_4'")(0)("Y") - newDR("Y") = GApDT.Select("NAME = 'GA_4'")(0)("Y") + c * x / z ' Triangle likformighet - Else - x = GApDT.Select("NAME = 'GA_1'")(0)("Y") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - newDR("Y") = GApDT.Select("NAME = 'GA_1'")(0)("Y") - c * x / z ' Triangle likformighet - End If - newDR("X") = GApDT.Select("NAME = 'GA_4'")(0)("X") - End If - - newDR("X") = Math.Round(newDR("X"), 3) - newDR("Y") = Math.Round(newDR("Y"), 3) - - insertIndex = Get_RowIndex(pDT, side, newDR("X"), newDR("Y"), GApDT) + 1 - Else - ' If true => remove point gp and new point at side rpDR("SIDE")+2 - Dim temp As String = newDR("NAME") - If temp.Split("_")(1) = 1 Then - If side = 1 Then - side = 4 - Else - side -= 1 - End If - Else - If side = 4 Then - side = 1 - Else - side += 1 - End If - End If - - If side = 1 Then - Dim x As Decimal = rpDR("X") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - Dim y As Decimal = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - rpDR("Y") - Dim b As Decimal = 0 - If pointName.Split("_")(1) = 1 Then - b = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - GApDT.Select("NAME = 'GA_1'")(0)("Y") - newDR("X") = GApDT.Select("NAME = 'GA_1'")(0)("X") + x * b / y - (GApDT.Select("NAME = 'GA_1'")(0)("X") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X")) ' Triangle likformighet - Else - b = GApDT.Select("NAME = 'GA_2'")(0)("Y") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - newDR("X") = GApDT.Select("NAME = 'GA_2'")(0)("X") - x * b / y + (Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - GApDT.Select("NAME = 'GA_2'")(0)("X")) ' Triangle likformighet - End If - newDR("Y") = GApDT.Select("NAME = 'GA_1'")(0)("Y") - ElseIf side = 2 Then - Dim x As Decimal = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - rpDR("Y") - Dim y As Decimal = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - rpDR("X") - Dim b As Decimal = 0 - If pointName.Split("_")(1) = 1 Then - b = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - GApDT.Select("NAME = 'GA_2'")(0)("X") - newDR("Y") = GApDT.Select("NAME = 'GA_2'")(0)("Y") - x * b / y + (Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - GApDT.Select("NAME = 'GA_2'")(0)("Y")) - Else - b = GApDT.Select("NAME = 'GA_3'")(0)("X") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - newDR("Y") = GApDT.Select("NAME = 'GA_3'")(0)("Y") + x * b / y - (GApDT.Select("NAME = 'GA_3'")(0)("Y") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y")) - End If - newDR("X") = GApDT.Select("NAME = 'GA_2'")(0)("X") - ElseIf side = 3 Then - Dim x As Decimal = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - rpDR("X") - Dim y As Decimal = rpDR("Y") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - Dim b As Decimal = 0 - If pointName.Split("_")(1) = 1 Then - b = GApDT.Select("NAME = 'GA_3'")(0)("Y") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - newDR("X") = GApDT.Select("NAME = 'GA_3'")(0)("X") - x * b / y + (Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - GApDT.Select("NAME = 'GA_3'")(0)("X")) - Else - b = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - GApDT.Select("NAME = 'GA_4'")(0)("Y") - newDR("X") = GApDT.Select("NAME = 'GA_4'")(0)("X") + x * b / y - (GApDT.Select("NAME = 'GA_4'")(0)("X") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X")) - End If - newDR("Y") = GApDT.Select("NAME = 'GA_3'")(0)("Y") - Else - Dim x As Decimal = rpDR("Y") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - Dim y As Decimal = rpDR("X") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - Dim b As Decimal = 0 - If pointName.Split("_")(1) = 1 Then - b = GApDT.Select("NAME = 'GA_4'")(0)("X") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - newDR("Y") = GApDT.Select("NAME = 'GA_4'")(0)("Y") + x * b / y - (GApDT.Select("NAME = 'GA_4'")(0)("Y") - Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y")) - Else - b = Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("X") - GApDT.Select("NAME = 'GA_1'")(0)("X") - newDR("Y") = GApDT.Select("NAME = 'GA_1'")(0)("Y") - x * b / y + (Data.gratingPoints.Select("NAME = '" & newDR("NAME") & "'")(0)("Y") - GApDT.Select("NAME = 'GA_1'")(0)("Y")) - End If - newDR("X") = GApDT.Select("NAME = 'GA_4'")(0)("X") - End If - - insertIndex = Get_RowIndex(pDT, side, newDR("X"), newDR("Y"), GApDT) - - pDT.Rows.InsertAt(newDR, insertIndex + 1) - - Dim removeIndex As Integer = 0 - For k = 0 To pDT.Rows.Count - 1 - If pDT.Rows(k)("NAME") = pNameToRemove Then - removeIndex = k - End If - Next - - pDT.Rows.RemoveAt(removeIndex) - End If - End Sub - - Private Shared Function Calculate_Triangle_Bool(gp As Decimal(), p0 As Decimal(), p1 As Decimal(), p2 As Decimal()) - - Dim s As Decimal = p0(1) * p2(0) - p0(0) * p2(1) + (p2(1) - p0(1)) * gp(0) + (p0(0) - p2(0)) * gp(1) - Dim t As Decimal = p0(0) * p1(1) - p0(1) * p1(0) + (p0(1) - p1(1)) * gp(0) + (p1(0) - p0(0)) * gp(1) - - If (s < 0 AndAlso t >= 0) OrElse (s >= 0 AndAlso t < 0) Then - Return False - End If - - Dim area As Decimal = -p1(1) * p2(0) + p0(1) * (p2(0) - p1(0)) + p0(0) * (p1(1) - p2(1)) + p1(0) * p2(1) - - If area < 0 Then - If s <= 0 AndAlso s + t >= area Then - Return True - Else - Return False - End If - Else - If s >= 0 AndAlso s + t <= area Then - Return True - Else - Return False - End If - End If - End Function -End Class diff --git a/Wardrobe/Wardrobe.vbproj b/Wardrobe/Wardrobe.vbproj index 66ad6d6..7cd9864 100644 --- a/Wardrobe/Wardrobe.vbproj +++ b/Wardrobe/Wardrobe.vbproj @@ -120,13 +120,13 @@ - - + + + -