Table, fixa hur punkterna beräknas

This commit is contained in:
Anton 2021-01-25 15:49:07 +01:00
parent e139f77cf3
commit 352556ecc9
2 changed files with 36 additions and 15 deletions

View File

@ -6,8 +6,9 @@ Public Class GUI
Dim GratingW, GratingH As Double Dim GratingW, GratingH As Double
Dim DrawW, DrawH As Integer Dim DrawW, DrawH As Integer
Dim Aspect1, Aspect2 As Double Dim Aspect1, Aspect2 As Double
Dim pDiff As Double
Dim p1X, p1Y, p2X, p2Y, p3X, p3Y, p4X, p4Y As Integer Public p1X, p1Y, p2X, p2Y, p3X, p3Y, p4X, p4Y As Integer
@ -64,35 +65,55 @@ Public Class GUI
Aspect2 = GratingW / GratingH Aspect2 = GratingW / GratingH
If Aspect2 > Aspect1 Then If Aspect2 > Aspect1 Then
'Change draw height 'Change draw height
Dim wDiff As Double pDiff = GratingW / DrawW
wDiff = GratingW / DrawW
p1Y = boxMidY - CInt(GratingH / (wDiff * 2)) p1Y = boxMidY - CInt(GratingH / (pDiff * 2))
p2Y = boxMidY - CInt(GratingH / (wDiff * 2)) p2Y = boxMidY - CInt(GratingH / (pDiff * 2))
p3Y = boxMidY + CInt(GratingH / (wDiff * 2)) p3Y = boxMidY + CInt(GratingH / (pDiff * 2))
p4Y = boxMidY + CInt(GratingH / (wDiff * 2)) p4Y = boxMidY + CInt(GratingH / (pDiff * 2))
set_startPointsX() set_startPointsX()
Else Else
'Change draw width 'Change draw width
Dim hDiff As Double pDiff = GratingH / DrawH
hDiff = GratingH / DrawH
p1X = boxMidX - CInt(GratingW / (hDiff * 2)) p1X = boxMidX - CInt(GratingW / (pDiff * 2))
p2X = boxMidX + CInt(GratingW / (hDiff * 2)) p2X = boxMidX + CInt(GratingW / (pDiff * 2))
p3X = boxMidX + CInt(GratingW / (hDiff * 2)) p3X = boxMidX + CInt(GratingW / (pDiff * 2))
p4X = boxMidX - CInt(GratingW / (hDiff * 2)) p4X = boxMidX - CInt(GratingW / (pDiff * 2))
set_startPointsY() set_startPointsY()
End If End If
'Redraw rectangle 'Redraw rectangle
Me.Refresh() Me.Refresh()
End Sub End Sub
Private Function create_pointTable()
Dim pointTable As New DataTable
pointTable.Columns.Add("X", GetType(Double))
pointTable.Columns.Add("Y", GetType(Double))
For i = 0 To 3
pointTable.Rows.Add()
Dim tempPX, tempPY As Double
tempPX = (CallByName(Me, "p" & i + 1 & "X", vbGet) + boxMidX) * pDiff / 1000
tempPY = (CallByName(Me, "p" & i + 1 & "Y", vbGet) + boxMidY) * pDiff / 1000
pointTable.Rows(i)("X") = tempPX
pointTable.Rows(i)("Y") = tempPY
Next
Return pointTable
End Function
Private Sub ExportSW_Click(sender As Object, e As EventArgs) Handles ExportSW.Click Private Sub ExportSW_Click(sender As Object, e As EventArgs) Handles ExportSW.Click
Program.Export_SW() Dim pointTable As New DataTable
pointTable = create_pointTable()
Program.Export_SW(pointTable)
End Sub End Sub
End Class End Class

View File

@ -5,7 +5,7 @@ Imports System.Runtime.InteropServices
Imports System Imports System
Imports SldWorks Imports SldWorks
Public Class Program Public Class Program
Public Shared Sub Export_SW() Public Shared Sub Export_SW(pointTable As DataTable)
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