Fixed frames for multiple gratings. Added export options in GUI

This commit is contained in:
Anton 2021-04-23 11:08:45 +02:00
parent 12d0749dba
commit ef31a0ea5d
13 changed files with 642 additions and 1251 deletions

View File

@ -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

View File

@ -120,59 +120,61 @@
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="Button_Square_Side.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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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==
</value>
</data>
<data name="Button_Square_Corner.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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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=
</value>
</data>
<data name="Button_Angle_Corner.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
aftn76hJMrIAAAAASUVORK5CYII=
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
RU5ErkJggg==
</value>
</data>
</root>

View File

@ -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

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,4 @@
Imports SldWorks
Public Class Instructions
End Class

View File

@ -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'")

View File

@ -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)

View File

@ -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

View File

@ -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 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 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 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 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

View File

@ -120,13 +120,13 @@
<Compile Include="Recess Functions\Middle_Rectangle.vb" />
<Compile Include="Recess Functions\Side_Rectangle.vb" />
<Compile Include="SolidWorks\Individual_Drawing.vb" />
<Compile Include="SolidWorks\Individual_Frame_3D.vb" />
<Compile Include="SolidWorks\Individual_Frame_Drawing.vb" />
<Compile Include="SolidWorks\Frame_3D.vb" />
<Compile Include="SolidWorks\Frame_Drawing.vb" />
<Compile Include="SolidWorks\Individual_3D.vb" />
<Compile Include="SolidWorks\Instructions.vb" />
<Compile Include="SolidWorks\Multiple_3D.vb" />
<Compile Include="SolidWorks\Multiple_3D_Simplified.vb" />
<Compile Include="SolidWorks\Multiple_Drawing.vb" />
<Compile Include="SolidWorks\Multiple_Drawing2.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="GUI\AppForm.resx">