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.Panel_Grating = New System.Windows.Forms.Panel()
Me.Label2 = New System.Windows.Forms.Label() Me.Label2 = New System.Windows.Forms.Label()
Me.Label1 = 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_Data.SuspendLayout()
Me.Panel_Recesses.SuspendLayout() Me.Panel_Recesses.SuspendLayout()
Me.Panel_Grating.SuspendLayout() Me.Panel_Grating.SuspendLayout()
@ -67,6 +72,11 @@ Partial Class Individual
'Panel_Data 'Panel_Data
' '
Me.Panel_Data.BackColor = System.Drawing.SystemColors.GradientActiveCaption 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.Button_Back)
Me.Panel_Data.Controls.Add(Me.TextBox_Width) Me.Panel_Data.Controls.Add(Me.TextBox_Width)
Me.Panel_Data.Controls.Add(Me.ComboBox_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.Location = New System.Drawing.Point(0, 0)
Me.Panel_Data.Margin = New System.Windows.Forms.Padding(0) Me.Panel_Data.Margin = New System.Windows.Forms.Padding(0)
Me.Panel_Data.Name = "Panel_Data" 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 Me.Panel_Data.TabIndex = 0
' '
'Button_Back 'Button_Back
' '
Me.Button_Back.Location = New System.Drawing.Point(9, 10) Me.Button_Back.Location = New System.Drawing.Point(12, 12)
Me.Button_Back.Margin = New System.Windows.Forms.Padding(2) Me.Button_Back.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
Me.Button_Back.Name = "Button_Back" 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.TabIndex = 27
Me.Button_Back.Text = "Back" Me.Button_Back.Text = "Back"
Me.Button_Back.UseVisualStyleBackColor = True Me.Button_Back.UseVisualStyleBackColor = True
' '
'TextBox_Width '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.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 Me.TextBox_Width.TabIndex = 26
' '
'ComboBox_Width 'ComboBox_Width
' '
Me.ComboBox_Width.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Width.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Width.FormattingEnabled = True 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.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 Me.ComboBox_Width.TabIndex = 25
' '
'Label7 'Label7
' '
Me.Label7.AutoSize = True 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.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.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.TabIndex = 24
Me.Label7.Text = "mm" Me.Label7.Text = "mm"
' '
@ -137,9 +150,10 @@ Partial Class Individual
' '
Me.Label6.AutoSize = True 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.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.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.TabIndex = 23
Me.Label6.Text = "mm" Me.Label6.Text = "mm"
' '
@ -147,9 +161,10 @@ Partial Class Individual
' '
Me.Label5.AutoSize = True 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.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.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.TabIndex = 22
Me.Label5.Text = "mm" Me.Label5.Text = "mm"
' '
@ -157,9 +172,10 @@ Partial Class Individual
' '
Me.Label4.AutoSize = True 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.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.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.TabIndex = 21
Me.Label4.Text = "mm" Me.Label4.Text = "mm"
' '
@ -167,18 +183,20 @@ Partial Class Individual
' '
Me.Label3.AutoSize = True 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.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.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.TabIndex = 20
Me.Label3.Text = "mm" Me.Label3.Text = "mm"
' '
'Button_Export_GUI 'Button_Export_GUI
' '
Me.Button_Export_GUI.BackColor = System.Drawing.Color.Transparent 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.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.TabIndex = 18
Me.Button_Export_GUI.Text = "Export GUI" Me.Button_Export_GUI.Text = "Export GUI"
Me.Button_Export_GUI.UseVisualStyleBackColor = False Me.Button_Export_GUI.UseVisualStyleBackColor = False
@ -186,9 +204,10 @@ Partial Class Individual
'Button_Export_SW 'Button_Export_SW
' '
Me.Button_Export_SW.BackColor = System.Drawing.Color.Transparent 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.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.TabIndex = 17
Me.Button_Export_SW.Text = "Export SW" Me.Button_Export_SW.Text = "Export SW"
Me.Button_Export_SW.UseVisualStyleBackColor = False Me.Button_Export_SW.UseVisualStyleBackColor = False
@ -197,9 +216,10 @@ Partial Class Individual
' '
Me.Label_Heading.AutoSize = True 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.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.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.TabIndex = 15
Me.Label_Heading.Text = "Grating Parameters" Me.Label_Heading.Text = "Grating Parameters"
' '
@ -207,9 +227,10 @@ Partial Class Individual
' '
Me.Label_Material.AutoSize = True 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.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.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.TabIndex = 14
Me.Label_Material.Text = "Material" Me.Label_Material.Text = "Material"
' '
@ -217,9 +238,10 @@ Partial Class Individual
' '
Me.Label_Mesh.AutoSize = True 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.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.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.TabIndex = 13
Me.Label_Mesh.Text = "Mesh Size" Me.Label_Mesh.Text = "Mesh Size"
' '
@ -227,9 +249,10 @@ Partial Class Individual
' '
Me.Label_Height.AutoSize = True 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.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.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.TabIndex = 12
Me.Label_Height.Text = "Height" Me.Label_Height.Text = "Height"
' '
@ -237,9 +260,10 @@ Partial Class Individual
' '
Me.Label_Thickness.AutoSize = True 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.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.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.TabIndex = 11
Me.Label_Thickness.Text = "Thickness" Me.Label_Thickness.Text = "Thickness"
' '
@ -247,9 +271,10 @@ Partial Class Individual
' '
Me.Label_Width.AutoSize = True 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.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.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.TabIndex = 10
Me.Label_Width.Text = "Width" Me.Label_Width.Text = "Width"
' '
@ -257,9 +282,10 @@ Partial Class Individual
' '
Me.Label_Length.AutoSize = True 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.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.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.TabIndex = 9
Me.Label_Length.Text = "Length" Me.Label_Length.Text = "Length"
' '
@ -267,62 +293,69 @@ Partial Class Individual
' '
Me.Label_Type.AutoSize = True 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.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.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.TabIndex = 8
Me.Label_Type.Text = "Type" Me.Label_Type.Text = "Type"
' '
'TextBox_Length '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.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 Me.TextBox_Length.TabIndex = 7
' '
'ComboBox_Mesh 'ComboBox_Mesh
' '
Me.ComboBox_Mesh.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Mesh.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Mesh.FormattingEnabled = True 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.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 Me.ComboBox_Mesh.TabIndex = 6
' '
'ComboBox_Thickness 'ComboBox_Thickness
' '
Me.ComboBox_Thickness.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Thickness.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Thickness.FormattingEnabled = True 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.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 Me.ComboBox_Thickness.TabIndex = 3
' '
'ComboBox_Height 'ComboBox_Height
' '
Me.ComboBox_Height.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Height.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Height.FormattingEnabled = True 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.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 Me.ComboBox_Height.TabIndex = 2
' '
'ComboBox_Material 'ComboBox_Material
' '
Me.ComboBox_Material.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Material.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Material.FormattingEnabled = True 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.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 Me.ComboBox_Material.TabIndex = 1
' '
'ComboBox_Type 'ComboBox_Type
' '
Me.ComboBox_Type.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.ComboBox_Type.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Type.FormattingEnabled = True 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.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 Me.ComboBox_Type.TabIndex = 0
' '
'Panel_Recesses 'Panel_Recesses
@ -336,8 +369,9 @@ Partial Class Individual
Me.Panel_Recesses.Controls.Add(Me.Button_Angle_Corner) Me.Panel_Recesses.Controls.Add(Me.Button_Angle_Corner)
Me.Panel_Recesses.Controls.Add(Me.Label_Recesses) Me.Panel_Recesses.Controls.Add(Me.Label_Recesses)
Me.Panel_Recesses.Location = New System.Drawing.Point(0, 0) 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.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 Me.Panel_Recesses.TabIndex = 1
' '
'Button_Radius 'Button_Radius
@ -348,9 +382,10 @@ Partial Class Individual
Me.Button_Radius.Enabled = False Me.Button_Radius.Enabled = False
Me.Button_Radius.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Radius.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Radius.FlatStyle = System.Windows.Forms.FlatStyle.Flat 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.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.TabIndex = 22
Me.Button_Radius.UseVisualStyleBackColor = False 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.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Button_Square_Middle.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Square_Middle.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Square_Middle.FlatStyle = System.Windows.Forms.FlatStyle.Flat 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.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.TabIndex = 21
Me.Button_Square_Middle.UseVisualStyleBackColor = False 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.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Button_Square_Side.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Square_Side.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Square_Side.FlatStyle = System.Windows.Forms.FlatStyle.Flat 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.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.TabIndex = 20
Me.Button_Square_Side.UseVisualStyleBackColor = False 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.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Button_Angle_Side.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Angle_Side.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Angle_Side.FlatStyle = System.Windows.Forms.FlatStyle.Flat 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.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.TabIndex = 19
Me.Button_Angle_Side.UseVisualStyleBackColor = False 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.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Button_Square_Corner.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Square_Corner.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Square_Corner.FlatStyle = System.Windows.Forms.FlatStyle.Flat 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.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.TabIndex = 18
Me.Button_Square_Corner.UseVisualStyleBackColor = False 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.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Button_Angle_Corner.FlatAppearance.BorderColor = System.Drawing.Color.Black Me.Button_Angle_Corner.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Angle_Corner.FlatStyle = System.Windows.Forms.FlatStyle.Flat 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.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.TabIndex = 17
Me.Button_Angle_Corner.UseVisualStyleBackColor = False Me.Button_Angle_Corner.UseVisualStyleBackColor = False
' '
@ -423,9 +463,10 @@ Partial Class Individual
' '
Me.Label_Recesses.AutoSize = True 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.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.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.TabIndex = 16
Me.Label_Recesses.Text = "Recesses" Me.Label_Recesses.Text = "Recesses"
' '
@ -434,18 +475,20 @@ Partial Class Individual
Me.Panel_Grating.BackColor = System.Drawing.Color.White Me.Panel_Grating.BackColor = System.Drawing.Color.White
Me.Panel_Grating.Controls.Add(Me.Label2) Me.Panel_Grating.Controls.Add(Me.Label2)
Me.Panel_Grating.Controls.Add(Me.Label1) 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.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 Me.Panel_Grating.TabIndex = 2
' '
'Label2 'Label2
' '
Me.Label2.AutoSize = True 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.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.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.TabIndex = 1
Me.Label2.Text = "L" Me.Label2.Text = "L"
' '
@ -453,22 +496,75 @@ Partial Class Individual
' '
Me.Label1.AutoSize = True 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.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.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.TabIndex = 0
Me.Label1.Text = "W" 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 '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.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.SystemColors.Control 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_Data)
Me.Controls.Add(Me.Panel_Recesses) Me.Controls.Add(Me.Panel_Recesses)
Me.Controls.Add(Me.Panel_Grating) Me.Controls.Add(Me.Panel_Grating)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Me.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)
Me.Name = "Individual" Me.Name = "Individual"
Me.Text = "Individual" Me.Text = "Individual"
Me.Panel_Data.ResumeLayout(False) Me.Panel_Data.ResumeLayout(False)
@ -517,4 +613,9 @@ Partial Class Individual
Friend WithEvents ComboBox_Width As ComboBox Friend WithEvents ComboBox_Width As ComboBox
Friend WithEvents Button_Back As Button Friend WithEvents Button_Back As Button
Friend WithEvents Button_Radius 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 End Class

View File

@ -120,59 +120,61 @@
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <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"> <data name="Button_Square_Side.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
@ -231,251 +233,249 @@
uOqa1j0JBv3QeGSnwtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa uOqa1j0JBv3QeGSnwtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa
1j0JBv3QeGSnwtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa1j0J 1j0JBv3QeGSnwtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa1j0J
Bv3QeGSnwtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa1j0JBv3Q Bv3QeGSnwtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa1j0JBv3Q
eGSnwtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa1j0JBv3QeGSn eGSnwtnCmmDQgbjqmtY9CQb90Hhk5yucP7ewJtQfDfWhASR9xz8oP09dys54ZOcrnL+0sALw7JepS9kZ
wtnCmmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZKfC2cKaYNCBuOqa1j0JBv3QeGSnwtnC j+xUOFtYAXhm0A+NR3YqnC2sADwz6IfGIzsVzhZWAJ4Z9EPjkZ0KZwsrAM8M+qHxyE6Fs4UVgGcG/dB4
mmDQgbjqmtY9CQb90Hhkp8LZwppg0IG46prWPQkG/dB4ZOcrnD+3sCbUHw31oQEkfcc/KD9PXcrOeGTn ZKfC2cIKwDODfmg8slPhbGEF4JlBPzQe2alwtrAC8MygHxqP7FQ4W1gBeGbQD41HdiqcLawAPDPoh8Yj
K5y/tLAC8OyXqUvZGY/sVDhbWAF4ZtAPjUd2KpwtrAA8M+iHxiM7Fc4WVgCeGfRD45GdCmcLKwDPDPqh OxXOFlYAnhn0Q+ORnQpnCysAzwz6ofHIToWzhRWAZwb90Hhkp8LZwgrAM4N+aDyyU+FsYQXgmUE/NB7Z
8chOhbOFFYBnBv3QeGSnwtnCCsAzg35oPLJT4WxhBeCZQT80HtmpcLawAvDMoB8aj+xUOFtYAXhm0A+N qXC2sALwzKAfGo/sVDhbWAF4ZtAPjUd2KpwtrAA8M+iHxiM7Fc4WVgCeGfRD45GdCmcLKwDPDPqh8chO
R3YqnC2sADwz6IfGIzsVzhZWAJ4Z9EPjkZ0KZwsrAM8M+qHxyE6Fs4UVgGcG/dB4ZKfC2cIKwDODfmg8 hbOFFYBnBv3QeGSnwtnCCsAzg35oPLJT4WxhBeCZQT80Htn5CudPFdCwn7/8CBBWXTN10KWfpi5lZzwC
slPhbGEF4JlBPzQe2alwtrAC8MygHxqP7FQ4W1gBeGbQD41HdiqcLawAPDPoh8YjOxXOFlYAnhn0Q+OR AO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDw
nQpnCysAzwz6ofHIToWzhRWAZwb90Hhkp8LZwgrAM4N+aDyyU+FsYQXgmUE/NB7Z+QrnTxXQsJ+//AgQ LuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8y
Vl0zddCln6YuZWc8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZ HgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMR
jwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EI AHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGA
ALzLeAQA3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDA dxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX
u4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzL 8QgAvMt4BADeZTwCAO8yHgGAdxmPAMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmP
eAQA3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDAu4xH AMC7jEcA4F3GIwDwLuMRAHiX8QgAvMt4BADeZTwCAO8yHgGAdxmPAMCb/PrD/wD/ktqKcHdODAAAAABJ
AOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA RU5ErkJggg==
3mU8AgDvMh4BgHcZjwDAu4xHAOBdxiMA8C7jEQB4l/EIALzLeAQA3mU8AgDvMh4BgHcZjwDAm/z6w/8A
/5LainB3TgwAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="Button_Square_Corner.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="Button_Square_Corner.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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 GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NB
QQfW1a1pt2eDQb8ohsxUOVtZNxh0YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsxUOVtZNxh0 vyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSL
YF3dmnZ7Nhj0i2LITJWzlXWDQQfW1a1pt2eDQb8ohsyccv6zlXVD/aOh/qIBbPpP/Afln+mWMhNDZk45 YshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiG
/9XKCsDf/pVuKTMxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUx zFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshM
ZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUx lbOVdYNBB9bVrWm3Z4NBvyiGzJxy/rOVdUP9o6H+ogFs+k/8B+Wf6ZYyE0NmTjn/1coKwN/+lW4pMzFk
ZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUx psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk
ZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUx psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk
ZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZKbK2coKwN8M+kUxZOaU83+qoMv+efw3 psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk
wLK6NekG3fQ/6ZYyE0MA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk
4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADe psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk5pTzf6qgy/55/DfAsro16Qbd9D/pljIT
EkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0x QwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEE
BADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA AN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDg
4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADe LTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4S
EkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0xBADeEkMA4C0x QwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEE
BADeEkMA4C0xBADeEkMA4C0xBADeEkMA4CX//q//C2i8aCmoLJEpAAAAAElFTkSuQmCC AN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDg
LTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4S
QwDgLTEEAN4SQwDgJf/+r/8LaLxoKagskSkAAAAASUVORK5CYII=
</value> </value>
</data> </data>
<data name="Button_Angle_Corner.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="Button_Angle_Corner.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
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
InzTr+VbSks50vQ5Qf+5/Gye4aef/u3473/4eX21/zn+q/xe4Xec2EbUqwjf9Ev12fSUI02C/t7EnBdy /7n8bJ7hp5/+7fjvf/h5fbX/Of6r/F7hd5zYRtSrCN/0S/XZ9JQjTYL+3sScF3JiK+jLlCNNgv6+xJwX
Yivoy5QjTYL+vsScF3NiK+jLlCNNgv6exJwXdGIr6MuUI02C/n7EnBd1Yivoy5QjTYL+XsScF3ZiK+jL c2Ir6MuUI02C/p7EnBd0Yivoy5QjTYL+fsScF3ViK+jLlCNNgv5exJwXdmIr6MuUI02C/j7EnBd3Yivo
lCNNgv4+xJwXd2Ir6MuUI02C/h7EnDdwYivoy5QjTYL++sScN3FiK+jLlCNNgv7axJw3cmIr6MuUI02C y5QjTYL+HsScN3BiK+jLlCNNgv76xJw3cWIr6MuUI02C/trEnDdyYivoy5QjTYL+usScN3NiK+jLlCNN
/rrEnDdzYivoy5QjTYL+msScN3RiK+jLlCNNgv56xJw3dWIr6MuUI02C/lrEnDd2Yivoy5QjTYL+OsSc gv6axJw3dGIr6MuUI02C/nrEnDd1Yivoy5QjTYL+WsScN3ZiK+jLlCNNgv46xJw3d2Ir6MuUI02C/hrE
N3diK+jLlCNNgv4axBwEfaFypEnQ9xNz+KsTW0FfphxpEvTdxBz+7sRW0JcpR5oEfS8xh39yYivoy5Qj HAR9oXKkSdD3E3P4qxNbQV+mHGkS9N3EHP7uxFbQlylHmgR9LzGHf3JiK+jLlCNNgr6TmMO/OLEV9GXK
TYK+k5jDvzixFfRlypEmQd9HzKF0Yivoy5QjTYK+i5jDh05sBX2ZcqRJ0PcQc/hdJ7aCvkw50iToO4g5 kSZB30fMoXRiK+jLlCNNgr6LmMOHTmwFfZlypEnQ9xBz+F0ntoK+TDnSJOg7iDn8oRNbQV+mHGkS9OcT
/KETW0FfphxpEvTnE3P4Jie2gr5MOdIk6M8m5vDNTmwFfZlypEnQn0vM4buc2Ar6MuVIk6A/k5jDdzux c/gmJ7aCvkw50iTozybm8M1ObAV9mXKkSdCfS8zhu5zYCvoy5UiToD+TmMN3O7EV9GXKkSZBfx4xh5YT
FfRlypEmQX8eMYeWE1tBX6YcaRL0ZxFzaDuxFfRlypEmQX8OMYcfcmIr6MuUI02C/gxiDj/sxFbQlylH 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
aftn76hJMrIAAAAASUVORK5CYII= RU5ErkJggg==
</value> </value>
</data> </data>
</root> </root>

View File

@ -232,6 +232,53 @@ Public Class Individual
Middle_Rectangle.SquareMiddleButtton(sender, e) Middle_Rectangle.SquareMiddleButtton(sender, e)
End Sub 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 ---------------------------------- ' ---------------------------------- Calculate ----------------------------------
' --- When calculate button is pressed --- ' --- When calculate button is pressed ---
Public Sub Button_Calculate_Click(sender As Object, e As EventArgs) Public Sub Button_Calculate_Click(sender As Object, e As EventArgs)
@ -244,10 +291,40 @@ Public Class Individual
If AppForm.fillMode Then If AppForm.fillMode Then
Grating_Fill.Calculate_Grid() 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 Else
Individual_3D.BuildGrating() Individual_3D.BuildGrating()
Individual_Drawing.Create_Model_For_Drawing() Individual_Drawing.Create_Model_For_Drawing()
@ -268,4 +345,5 @@ Public Class Individual
AppForm.Panel_Start.Controls.Add(Main_Menu) AppForm.Panel_Start.Controls.Add(Main_Menu)
Main_Menu.Show() Main_Menu.Show()
End Sub End Sub
End Class End Class

View File

@ -12,7 +12,11 @@
Private Shared lacqueredCheckBox As New CheckBox Private Shared lacqueredCheckBox As New CheckBox
Private Shared lacqueredCheckBoxBol As Boolean = False 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) Public Shared Sub TypeChanged(sender As Object, e As EventArgs)
Individual.ComboBox_Material.Enabled = True Individual.ComboBox_Material.Enabled = True
Individual.ComboBox_Material.Items.Clear() Individual.ComboBox_Material.Items.Clear()

View File

@ -1,6 +1,6 @@
Imports XCCLibrary Imports XCCLibrary
Imports SldWorks Imports SldWorks
Public Class Individual_Frame_3D Public Class Frame_3D
Private Shared designName As String Private Shared designName As String
Public Shared frameDT As New DataTable Public Shared frameDT As New DataTable
Public Shared cuttingList As New Dictionary(Of Integer, Integer()) Public Shared cuttingList As New Dictionary(Of Integer, Integer())
@ -28,7 +28,7 @@ Public Class Individual_Frame_3D
HLCtName = "frame_l_straight" HLCtName = "frame_l_straight"
End If End If
inst_ = ExternalClass.instantiate_parts(parentID, HLCtName, "") 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_WIDTH", inst_, 40) 'FIXA
ExternalClass.modify_parameter_value("DP_ROTATION", inst_, frameDT.Rows(i)("ROTATION")) 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("CORNER") = Data.gratingPoints.Rows(i)("QUADRANT")
DTRow("ROTATION") = (Data.gratingPoints.Rows(i)("QUADRANT") - 1) * 90 DTRow("ROTATION") = (Data.gratingPoints.Rows(i)("QUADRANT") - 1) * 90
If DTRow("CORNER") = 1 Then If DTRow("CORNER") = 1 Then
DTRow("OFFSET_W") = gratingParameters("WIDTH") DTRow("OFFSET_W") = Data.gratingW 'gratingParameters("WIDTH")
DTRow("OFFSET_L") = 0 DTRow("OFFSET_L") = 0
ElseIf DTRow("CORNER") = 2 Then ElseIf DTRow("CORNER") = 2 Then
DTRow("OFFSET_W") = gratingParameters("WIDTH") DTRow("OFFSET_W") = Data.gratingW 'gratingParameters("WIDTH")
DTRow("OFFSET_L") = gratingParameters("LENGTH") DTRow("OFFSET_L") = gratingParameters("LENGTH")
ElseIf DTRow("CORNER") = 3 Then ElseIf DTRow("CORNER") = 3 Then
DTRow("OFFSET_W") = 0 DTRow("OFFSET_W") = 0
@ -219,7 +219,7 @@ Public Class Individual_Frame_3D
Else Else
DTRow("SIDE") = 2 DTRow("SIDE") = 2
DTRow("LENGTH") = (Data.gratingPoints.Rows(i2)("X") - Data.gratingPoints.Rows(i)("X")) * 1000 - 20 - numOfP * 200 + extraCorner1 + extraCorner2 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 If Data.gratingPoints.Rows(i)("NAME").substring(0, 1) = "P" Then
DTRow("OFFSET_L") = DTRow("LENGTH") + 210 - extraCorner1 DTRow("OFFSET_L") = DTRow("LENGTH") + 210 - extraCorner1
Else Else

View File

@ -1,28 +1,42 @@
Imports SldWorks Imports SldWorks
Public Class Individual_Frame_Drawing Public Class Frame_Drawing
Private Shared frameComponents Private Shared frameComponents
Public Shared Sub Create_Assemblies() Public Shared Sub Create_Assemblies(frameInSimplified As Boolean)
Dim swApp As SldWorks.SldWorks Dim swApp As SldWorks.SldWorks
swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks) swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks)
Dim model As ModelDoc2 Dim model As ModelDoc2
Dim assembly As IAssemblyDoc Dim assembly As IAssemblyDoc
Dim longstatus As Integer 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) model = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2020\templates\Assembly.asmdot", 0, 0, 0)
assembly = model assembly = model
Dim endPieceLength As Integer = 2000 Dim endPieceLength As Integer = 2000
For j = 0 To Individual_Frame_3D.cuttingList.ElementAt(i).Value.Count - 1 For j = 0 To Frame_3D.cuttingList.ElementAt(i).Value.Count - 1
endPieceLength -= Individual_Frame_3D.sideFrameLengths("Frame " & Individual_Frame_3D.cuttingList.ElementAt(i).Value(j)) endPieceLength -= Frame_3D.sideFrameLengths("Frame " & Frame_3D.cuttingList.ElementAt(i).Value(j))
Next Next
Dim numOfParts As Integer = 0 Dim numOfParts As Integer = 0
Dim endPieceExist As Integer = 0 Dim endPieceExist As Integer = 0
If endPieceLength > 0 Then If endPieceLength > 0 Then
numOfParts = Individual_Frame_3D.cuttingList.ElementAt(i).Value.Count numOfParts = Frame_3D.cuttingList.ElementAt(i).Value.Count
Else Else
numOfParts = Individual_Frame_3D.cuttingList.ElementAt(i).Value.Count - 1 numOfParts = Frame_3D.cuttingList.ElementAt(i).Value.Count - 1
endPieceExist = 1 endPieceExist = 1
End If End If
@ -30,9 +44,13 @@ Public Class Individual_Frame_Drawing
Dim coordNames(numOfParts) As String Dim coordNames(numOfParts) As String
Dim transMatrix As Object = Nothing Dim transMatrix As Object = Nothing
For j = 0 To compNames.Count - 2 + endPieceExist 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) = "" coordNames(j) = ""
Next Next
@ -93,7 +111,7 @@ Public Class Individual_Frame_Drawing
Dim layMgr As LayerMgr Dim layMgr As LayerMgr
layMgr = iDrawing.GetLayerManager() 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 If i > 0 Then
status = iDrawing.NewSheet3("Frame" & i + 1, 12, 12, 1, 10, False, Settings.HLCtFolder & "\Files Needed\A3 Part.slddrt", 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") swSheetWidth, swSheetHeight, "Same as sheet specified in Document Properties")
@ -117,10 +135,10 @@ Public Class Individual_Frame_Drawing
Dim components = RootComp.GetChildren() Dim components = RootComp.GetChildren()
For j = 0 To components.Length - 1 For j = 0 To components.Length - 1
Dim frameComponentName As String 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 frameComponentName = "frame_l_end_piece" & i + 1
Else 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 End If
Dim plane1Name As String = "OffPlane1@" & CompName & "@" & myView.GetName2 & "/" & frameComponentName & "-1@" & CompName.Split("-")(0) 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 Dim xOffset As Double = 0
For k = 0 To j 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 xOffset += (2000 / 10 - xOffset) / 2
ElseIf k = j Then 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 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 End If
Next Next
xOffset = xOffset / 1000 xOffset = xOffset / 1000
@ -154,10 +172,10 @@ Public Class Individual_Frame_Drawing
Dim balloonStyle As Integer Dim balloonStyle As Integer
Dim balloonOffset As Double Dim balloonOffset As Double
Dim balloonText As String 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 balloonStyle = 1
balloonOffset = 0.01 balloonOffset = 0.01
balloonText = Individual_Frame_3D.cuttingList.ElementAt(i).Value(j) balloonText = Frame_3D.cuttingList.ElementAt(i).Value(j)
Else Else
balloonStyle = 0 balloonStyle = 0
balloonOffset = -0.03 balloonOffset = -0.03

View File

@ -39,7 +39,7 @@ Public Class Individual_3D
Inst_Recesses(parentID, gratingParameters, recessDR) Inst_Recesses(parentID, gratingParameters, recessDR)
Next Next
Individual_Frame_3D.Build_Frame(gratingParameters, parentID) Frame_3D.Build_Frame(gratingParameters, parentID)
importClass.copyGroupsByDataSet(ExternalClass.groupds_new) importClass.copyGroupsByDataSet(ExternalClass.groupds_new)
Dim grNr = groupClass.NewGroupID Dim grNr = groupClass.NewGroupID
@ -50,11 +50,11 @@ Public Class Individual_3D
Recess_Indent() Recess_Indent()
Save_Assembly() 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 If DR("TYPE") = "SIDE" Then
Individual_Frame_3D.Generate_End_Frame_Pieces() Frame_3D.Generate_End_Frame_Pieces()
Individual_Frame_Drawing.Create_Assemblies() Frame_Drawing.Create_Assemblies(False) 'Fixa False
Individual_Frame_Drawing.Generate_Drawings() Frame_Drawing.Generate_Drawings()
Exit For Exit For
End If End If
Next 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 Public Class Multiple_3D
Private Shared gratingParameters As DataRow Private Shared gratingParameters As DataRow
Private Shared designName As String Private Shared designName As String
Public Shared partDT As New DataTable
Public Shared Sub BuildGrid() Public Shared Sub BuildGrid()
Dim pointTable As DataTable Dim pointTable As DataTable
pointTable = Data.gratingPoints pointTable = Data.gratingPoints
@ -55,6 +57,10 @@ Public Class Multiple_3D
Inst_Recesses(parentID, gratingParameters, recessDR) Inst_Recesses(parentID, gratingParameters, recessDR)
Next Next
If User_Input.addFrame = True Then
Frame_3D.Build_Frame(gratingParameters, parentID)
End If
importClass.copyGroupsByDataSet(ExternalClass.groupds_new) importClass.copyGroupsByDataSet(ExternalClass.groupds_new)
Dim grNr = groupClass.NewGroupID Dim grNr = groupClass.NewGroupID
Dim designTable = designModel.selectDesign("*") Dim designTable = designModel.selectDesign("*")
@ -65,6 +71,7 @@ Public Class Multiple_3D
Recess_Indent() Recess_Indent()
Save_Assembly() Save_Assembly()
End Sub End Sub
@ -74,8 +81,13 @@ Public Class Multiple_3D
Dim status As Boolean Dim status As Boolean
Dim Assebmly = swApp.ActiveDoc() Dim Assembly = swApp.ActiveDoc()
status = Assebmly.SaveAs3(Settings.folderPaths("object_" & Data.objectNum & "_models3D_gratings_sw") & "\gratings_assembly.SLDASM", 0, 4) 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 End Sub
Private Shared Sub Inst_Recesses(parentID As Integer, gratingParameters As DataRow, recessDR As DataRow) 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 AssemblyExtension = Assembly.Extension
Dim sldata = SelMgr.CreateSelectData Dim sldata = SelMgr.CreateSelectData
Dim partDT As New DataTable
partDT = partModel.selectPart("*") partDT = partModel.selectPart("*")
Dim gratingParts = partDT.Select("parentName = 'START'") 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 listOfObsolete As List(Of Integer)
Public Shared partDT As New DataTable Public Shared partDT As New DataTable
Public Shared Sub Build_Grid() Public Shared Sub Build_Grid(withFrame As Boolean)
Dim exportTable As DataTable Dim exportTable As DataTable
exportTable = User_Input.Create_ExportTable() exportTable = User_Input.Create_ExportTable()
@ -41,6 +41,10 @@ Public Class Multiple_3D_Simplified
Inst_Recesses(parentID, gratingParameters, recessDR) Inst_Recesses(parentID, gratingParameters, recessDR)
Next Next
If withFrame = True Then
Frame_3D.Build_Frame(gratingParameters, parentID)
End If
importClass.copyGroupsByDataSet(ExternalClass.groupds_new) importClass.copyGroupsByDataSet(ExternalClass.groupds_new)
Dim grNr = groupClass.NewGroupID Dim grNr = groupClass.NewGroupID
Dim designTable = designModel.selectDesign("*") Dim designTable = designModel.selectDesign("*")
@ -51,7 +55,7 @@ Public Class Multiple_3D_Simplified
Recess_Indent() Recess_Indent()
Suppress_Bodies() Suppress_Bodies()
Save_Assembly() Save_Assembly(withFrame)
End Sub End Sub
Private Shared Sub Suppress_Bodies() Private Shared Sub Suppress_Bodies()
@ -101,7 +105,7 @@ Public Class Multiple_3D_Simplified
Next Next
End Sub End Sub
Private Shared Sub Save_Assembly() Private Shared Sub Save_Assembly(withFrame As Boolean)
Dim swApp As SldWorks.SldWorks Dim swApp As SldWorks.SldWorks
swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks) swApp = CType(System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application"), SldWorks.SldWorks)
Dim assembly = swApp.ActiveDoc Dim assembly = swApp.ActiveDoc
@ -134,7 +138,18 @@ Public Class Multiple_3D_Simplified
status = swCustPropMgr.Add3("Revision", 30, "", 1) status = swCustPropMgr.Add3("Revision", 30, "", 1)
Dim Assebmly = swApp.ActiveDoc() 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 End Sub
Private Shared Sub Inst_Recesses(parentID As Integer, gratingParameters As DataRow, recessDR As DataRow) 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) Dim sheetScale = sheetProp(3)
For i = 0 To Draw_Grating.DirSymbolPoints.Count - 2 For i = 0 To Draw_Grating.DirSymbolPoints.Count - 2
Dim x1, x2, y1, y2 As Double Dim x1, x2, y1, y2 As Double
x1 = CDbl((Draw_Grating.DirSymbolPoints(i)(0) - Data.guiPanelMidX) / (20 * sheetScale)) + (swSheetWidth - 0.05) * sheetScale x1 = CDbl((Draw_Grating.DirSymbolPoints(i)(0) - Data.guiPanelMidX) / 200) + (swSheetWidth - 0.05) * sheetScale
y1 = -CDbl((Draw_Grating.DirSymbolPoints(i)(1) - Data.guiPanelMidY) / (20 * sheetScale)) + (swSheetHeight / 2) * sheetScale y1 = -CDbl((Draw_Grating.DirSymbolPoints(i)(1) - Data.guiPanelMidY) / 200) + (swSheetHeight / 2) * sheetScale
x2 = CDbl((Draw_Grating.DirSymbolPoints(i + 1)(0) - Data.guiPanelMidX) / (20 * sheetScale)) + (swSheetWidth - 0.05) * 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) / (20 * sheetScale)) + (swSheetHeight / 2) * sheetScale y2 = -CDbl((Draw_Grating.DirSymbolPoints(i + 1)(1) - Data.guiPanelMidY) / 200) + (swSheetHeight / 2) * sheetScale
skSegment = swSkMgr.CreateLine(x1, y1, 0, x2, y2, 0) skSegment = swSkMgr.CreateLine(x1, y1, 0, x2, y2, 0)
Next 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) 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) status = swExtensions.SelectByID2(myView.GetName2, "DRAWINGVIEW", 0, 0, 0, False, 0, Nothing, 0)
Dim vNotes As Object Dim vNotes As Object
Dim autoBalloonParams 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) Dim editedNote = swExtensions.EditBalloonProperties2(1, 2, 0, gratingCounter, 0, "", 0, False, 1, "X", 0.001)
gratingCounter += 1 gratingCounter += 1
Next 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 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\Middle_Rectangle.vb" />
<Compile Include="Recess Functions\Side_Rectangle.vb" /> <Compile Include="Recess Functions\Side_Rectangle.vb" />
<Compile Include="SolidWorks\Individual_Drawing.vb" /> <Compile Include="SolidWorks\Individual_Drawing.vb" />
<Compile Include="SolidWorks\Individual_Frame_3D.vb" /> <Compile Include="SolidWorks\Frame_3D.vb" />
<Compile Include="SolidWorks\Individual_Frame_Drawing.vb" /> <Compile Include="SolidWorks\Frame_Drawing.vb" />
<Compile Include="SolidWorks\Individual_3D.vb" /> <Compile Include="SolidWorks\Individual_3D.vb" />
<Compile Include="SolidWorks\Instructions.vb" />
<Compile Include="SolidWorks\Multiple_3D.vb" /> <Compile Include="SolidWorks\Multiple_3D.vb" />
<Compile Include="SolidWorks\Multiple_3D_Simplified.vb" /> <Compile Include="SolidWorks\Multiple_3D_Simplified.vb" />
<Compile Include="SolidWorks\Multiple_Drawing.vb" /> <Compile Include="SolidWorks\Multiple_Drawing.vb" />
<Compile Include="SolidWorks\Multiple_Drawing2.vb" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="GUI\AppForm.resx"> <EmbeddedResource Include="GUI\AppForm.resx">