Added square corners

This commit is contained in:
Mans 2021-02-02 12:33:20 +01:00
parent 37a2511b65
commit 6826acb0d4
2 changed files with 150 additions and 32 deletions

View File

@ -30,8 +30,6 @@ Partial Class GUI
Me.Label2 = New System.Windows.Forms.Label()
Me.ExportSWButton = New System.Windows.Forms.Button()
Me.AngleButton = New System.Windows.Forms.Button()
Me.LabelAngleX = New System.Windows.Forms.Label()
Me.LabelAngleY = New System.Windows.Forms.Label()
Me.SettingsButton = New System.Windows.Forms.Button()
Me.ComboBox_TypeChooser = New System.Windows.Forms.ComboBox()
Me.ComboBox_MeshSize = New System.Windows.Forms.ComboBox()
@ -45,6 +43,7 @@ Partial Class GUI
Me.Label8 = New System.Windows.Forms.Label()
Me.ComboBox_Width = New System.Windows.Forms.ComboBox()
Me.ComboBox_Length = New System.Windows.Forms.ComboBox()
Me.Button_Square = New System.Windows.Forms.Button()
Me.SuspendLayout()
'
'DrawingPanel
@ -95,7 +94,7 @@ Partial Class GUI
'
'AngleButton
'
Me.AngleButton.Location = New System.Drawing.Point(11, 147)
Me.AngleButton.Location = New System.Drawing.Point(11, 158)
Me.AngleButton.Margin = New System.Windows.Forms.Padding(2)
Me.AngleButton.Name = "AngleButton"
Me.AngleButton.Size = New System.Drawing.Size(92, 28)
@ -103,28 +102,6 @@ Partial Class GUI
Me.AngleButton.Text = "Add Angle"
Me.AngleButton.UseVisualStyleBackColor = True
'
'LabelAngleX
'
Me.LabelAngleX.AutoSize = True
Me.LabelAngleX.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.LabelAngleX.Location = New System.Drawing.Point(12, 192)
Me.LabelAngleX.Margin = New System.Windows.Forms.Padding(2, 0, 2, 0)
Me.LabelAngleX.Name = "LabelAngleX"
Me.LabelAngleX.Size = New System.Drawing.Size(17, 17)
Me.LabelAngleX.TabIndex = 10
Me.LabelAngleX.Text = "X"
'
'LabelAngleY
'
Me.LabelAngleY.AutoSize = True
Me.LabelAngleY.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.LabelAngleY.Location = New System.Drawing.Point(121, 192)
Me.LabelAngleY.Margin = New System.Windows.Forms.Padding(2, 0, 2, 0)
Me.LabelAngleY.Name = "LabelAngleY"
Me.LabelAngleY.Size = New System.Drawing.Size(17, 17)
Me.LabelAngleY.TabIndex = 11
Me.LabelAngleY.Text = "Y"
'
'SettingsButton
'
Me.SettingsButton.Location = New System.Drawing.Point(11, 635)
@ -270,11 +247,21 @@ Partial Class GUI
Me.ComboBox_Length.TabIndex = 24
Me.ComboBox_Length.Text = "1000"
'
'Button_Square
'
Me.Button_Square.Location = New System.Drawing.Point(13, 234)
Me.Button_Square.Name = "Button_Square"
Me.Button_Square.Size = New System.Drawing.Size(75, 23)
Me.Button_Square.TabIndex = 25
Me.Button_Square.Text = "Add Square Corner"
Me.Button_Square.UseVisualStyleBackColor = True
'
'GUI
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1155, 687)
Me.Controls.Add(Me.Button_Square)
Me.Controls.Add(Me.ComboBox_Length)
Me.Controls.Add(Me.ComboBox_Width)
Me.Controls.Add(Me.ComboBox_MeshSize)
@ -289,8 +276,6 @@ Partial Class GUI
Me.Controls.Add(Me.ExportSWButton)
Me.Controls.Add(Me.ComboBox_Height)
Me.Controls.Add(Me.ComboBox_Thickness)
Me.Controls.Add(Me.LabelAngleY)
Me.Controls.Add(Me.LabelAngleX)
Me.Controls.Add(Me.AngleButton)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
@ -311,8 +296,6 @@ Partial Class GUI
Friend WithEvents Label2 As Label
Friend WithEvents ExportSWButton As Button
Friend WithEvents AngleButton As Button
Friend WithEvents LabelAngleX As Label
Friend WithEvents LabelAngleY As Label
Friend WithEvents SettingsButton As Button
Friend WithEvents ComboBox_TypeChooser As ComboBox
Friend WithEvents ComboBox_MeshSize As ComboBox
@ -326,4 +309,5 @@ Partial Class GUI
Friend WithEvents Label8 As Label
Friend WithEvents ComboBox_Width As ComboBox
Friend WithEvents ComboBox_Length As ComboBox
Friend WithEvents Button_Square As Button
End Class

View File

@ -228,15 +228,136 @@ Public Class GUI
' --- When angle button is pressed ---
Private Sub AngleButton_Click(sender As Object, e As EventArgs) Handles AngleButton.Click
' Add TextBoxes with Labels
Create_TextBox("X_TextBox", "", 32, 189, 60)
Dim buttonX As Integer = Me.Controls("AngleButton").Location.X
Dim buttonY As Integer = Me.Controls("AngleButton").Location.Y
Create_TextBox("X_TextBox", "", buttonX + 20, buttonY + 40, 60)
AddHandler Me.Controls("X_TextBox").TextChanged, AddressOf AngleText_Changed
Create_TextBox("Y_TextBox", "", 140, 189, 60)
Create_Label("X_Label", "X", buttonX, buttonY + 43)
Create_TextBox("Y_TextBox", "", buttonX + 130, buttonY + 40, 60)
AddHandler Me.Controls("Y_TextBox").TextChanged, AddressOf AngleText_Changed
Create_Label("Y_Label", "Y", buttonX + 110, buttonY + 43)
End Sub
Private Sub Button_Square_Click(sender As Object, e As EventArgs) Handles Button_Square.Click
Dim buttonX As Integer = Me.Controls("Button_Square").Location.X
Dim buttonY As Integer = Me.Controls("Button_Square").Location.Y
Create_TextBox("X_TextBox", "", buttonX + 20, buttonY + 40, 60)
AddHandler Me.Controls("X_TextBox").TextChanged, AddressOf SquareText_Changed
Create_Label("X_Label", "X", buttonX, buttonY + 43)
Create_TextBox("Y_TextBox", "", buttonX + 130, buttonY + 40, 60)
AddHandler Me.Controls("Y_TextBox").TextChanged, AddressOf SquareText_Changed
Create_Label("Y_Label", "Y", buttonX + 110, buttonY + 43)
End Sub
Private Sub SquareText_Changed(sender As TextBox, e As EventArgs)
If Not Me.Controls("X_TextBox").Text = "" And Not Me.Controls("Y_TextBox").Text = "" Then
If containerPanel.Controls.Count = 0 Then
' Create Buttons for all clickable points
For i = 0 To pointsOrder.Count - 1
PointButtons.Add(New Button)
PointButtons(i).Width = 30
PointButtons(i).Height = 30
PointButtons(i).Left = points(pointsOrder(i))(0) - PointButtons(i).Width / 2
PointButtons(i).Top = points(pointsOrder(i))(1) - PointButtons(i).Height / 2
PointButtons(i).Name = pointsOrder(i) & "_Button"
PointButtons(i).Text = ""
PointButtons(i).BackColor = Color.FromArgb(50, Color.Red)
PointButtons(i).FlatStyle = FlatStyle.Flat
PointButtons(i).FlatAppearance.BorderSize = 0
PointButtons(i).FlatAppearance.MouseOverBackColor = Color.Red
PointButtons(i).FlatAppearance.MouseDownBackColor = Color.DarkRed
Dim gp As New Drawing.Drawing2D.GraphicsPath
gp.AddEllipse(New Rectangle(New Point(0, 0), New Size(30, 30)))
PointButtons(i).Region = New Region(gp)
containerPanel.Controls.Add(PointButtons(i))
AddHandler PointButtons(i).Click, AddressOf PointButton_Click2
Next
angleCounter = angleCounter + 1
End If
End If
End Sub
' --- When a point button for angle recess is pressed ---
Private Sub PointButton_Click2(sender As Button, e As EventArgs)
'Determine which point is being pressed
Dim pointPressed As String = sender.Name.Split("_")(0)
Dim index As Integer = pointsOrder.IndexOf(pointPressed)
'Retrive that points coords
Dim pXP As Decimal = points(pointPressed)(0)
Dim pYP As Decimal = points(pointPressed)(1)
Dim pXSW As Decimal = points(pointPressed)(2)
Dim pYSW As Decimal = points(pointPressed)(3)
Dim d1P As Decimal = Me.Controls("X_TextBox").Text / scaleDiff
Dim d2P As Decimal = Me.Controls("Y_TextBox").Text / scaleDiff
Dim d1SW As Decimal = Me.Controls("X_TextBox").Text / 1000
Dim d2SW As Decimal = Me.Controls("Y_TextBox").Text / 1000
If pXP < containerMidX Then
If pYP > containerMidY Then
'Kvadrant 4
points.Add("pS" & angleCounter * 3 - 2, {pXP + d1P, pYP, pXSW + d1SW, pYSW})
points.Add("pS" & angleCounter * 3 - 1, {pXP + d1P, pYP - d2P, pXSW + d1SW, pYSW + d2SW})
points.Add("pS" & angleCounter * 3, {pXP, pYP - d2P, pXSW, pYSW + d2SW})
Else
'Kvadrant 1
points.Add("pS" & angleCounter * 3 - 2, {pXP, pYP + d2P, pXSW, pYSW - d2SW})
points.Add("pS" & angleCounter * 3 - 1, {pXP + d1P, pYP + d2P, pXSW + d1SW, pYSW - d2SW})
points.Add("pS" & angleCounter * 3, {pXP + d1P, pYP, pXSW + d1SW, pYSW})
End If
Else
If pYP > containerMidY Then
'Kvadrant 3
points.Add("pS" & angleCounter * 3 - 2, {pXP, pYP - d2P, pXSW, pYSW + d2SW})
points.Add("pS" & angleCounter * 3 - 1, {pXP - d1P, pYP - d2P, pXSW - d1SW, pYSW + d2SW})
points.Add("pS" & angleCounter * 3, {pXP - d1P, pYP, pXSW - d1SW, pYSW})
Else
'Kvadrant 2
points.Add("pS" & angleCounter * 3 - 2, {pXP - d1P, pYP, pXSW - d1SW, pYSW})
points.Add("pS" & angleCounter * 3 - 1, {pXP - d1P, pYP + d2P, pXSW - d1SW, pYSW - d2SW})
points.Add("pS" & angleCounter * 3, {pXP, pYP + d2P, pXSW, pYSW - d2SW})
End If
End If
'Insert two new points
pointsOrder.Insert(index + 1, "pS" & angleCounter * 3 - 2)
pointsOrder.Insert(index + 2, "pS" & angleCounter * 3 - 1)
pointsOrder.Insert(index + 3, "pS" & angleCounter * 3)
pointsOrder.RemoveAt(index)
For i = 0 To PointButtons.Count - 1
RemoveHandler PointButtons(0).Click, AddressOf PointButton_Click2
containerPanel.Controls.RemoveByKey(PointButtons(0).Name)
PointButtons.RemoveAt(0)
Next
'Redraw grating
Me.Refresh()
RemoveHandler Me.Controls("X_TextBox").TextChanged, AddressOf SquareText_Changed
Me.Controls.RemoveByKey("X_TextBox")
RemoveHandler Me.Controls("Y_TextBox").TextChanged, AddressOf SquareText_Changed
Me.Controls.RemoveByKey("Y_TextBox")
Me.Controls.RemoveByKey("X_Label")
Me.Controls.RemoveByKey("Y_Label")
End Sub
Private Sub Create_TextBox(TextBoxName As String, TextBoxText As String, TextBoxLeft As Integer, TextBoxTop As Integer, TextBoxWidth As Integer)
Dim textBoxTemp As New TextBox
textBoxTemp.Name = TextBoxName
@ -248,6 +369,16 @@ Public Class GUI
Me.Controls.Add(textBoxTemp)
End Sub
Private Sub Create_Label(LabelName As String, LabelText As String, LabelLeft As Integer, LabelTop As Integer)
Dim LabelTemp As New Label
LabelTemp.Name = LabelName
LabelTemp.Text = LabelText
LabelTemp.Left = LabelLeft
LabelTemp.Top = LabelTop
LabelTemp.Font = New Font("Microsoft Sans Serif", 10)
Me.Controls.Add(LabelTemp)
End Sub
Private Sub AngleText_Changed(sender As TextBox, e As EventArgs)
If Not Me.Controls("X_TextBox").Text = "" And Not Me.Controls("Y_TextBox").Text = "" Then
If containerPanel.Controls.Count = 0 Then
@ -345,6 +476,9 @@ Public Class GUI
RemoveHandler Me.Controls("Y_TextBox").TextChanged, AddressOf AngleText_Changed
Me.Controls.RemoveByKey("Y_TextBox")
Me.Controls.RemoveByKey("X_Label")
Me.Controls.RemoveByKey("Y_Label")
End Sub
' --- When export to SW button is pressed ---