⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.vb

📁 CAD转换工具 CAD转换工具 CAD转换工具 CAD转换工具
💻 VB
📖 第 1 页 / 共 2 页
字号:
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(736, 299)
        Me.Controls.Add(Me.panel1)
        Me.Menu = Me.MainMenu1
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub btnLoadFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
        If Not (CADImage.Equals(IntPtr.Zero)) Then
            CloseCAD(CADImage)
            CADImage = IntPtr.Zero
        End If
        dlgOpenDXFFile.ShowDialog()
        CADImage = CreateCAD(panel1.Handle, dlgOpenDXFFile.FileName)
        If Not (CADImage.Equals(IntPtr.Zero)) Then
            panel1.Visible = True
            panel1.Invalidate()
            Me.MainMenu1.MenuItems(0).MenuItems(1).Enabled = True
            Me.MainMenu1.MenuItems(0).MenuItems(2).Enabled = True
            Me.MainMenu1.MenuItems(1).MenuItems(0).Enabled = True
            Me.MainMenu1.MenuItems(2).MenuItems(0).Enabled = True
            Me.MainMenu1.MenuItems(2).MenuItems(1).Enabled = True
            Me.MainMenu1.MenuItems(2).MenuItems(2).Enabled = True
            Me.MainMenu1.MenuItems(2).MenuItems(3).Enabled = True
            Me.MainMenu1.MenuItems(2).MenuItems(4).Enabled = True
            Me.MainMenu1.MenuItems(2).MenuItems(5).Enabled = True
        End If
        'Layers
        Dim Cnt As Integer = CADLayerCount(CADImage)
        Dim I As Integer
        Dim Layer As Integer
        Dim EData As Data = New Data
        lForm.CheckedListBox1.Items.Clear()
        lForm.layers.Clear()
        For I = 0 To Cnt - 1
            Layer = CADLayer(CADImage, I, EData)
            lForm.layers.Add(Layer)
            lForm.CheckedListBox1.Items.Add(EData.Text, True)
        Next I
        'layouts
        Dim vName As String = " "
        'Form4.Combo1.Clear()
        Cnt = CADLayoutsCount(CADImage)
        For I = 0 To Cnt - 1
            Dim t1 = CADLayoutName(CADImage, I, vName, Len(vName))
            'Form4.Combo1.AddItem(vName)
        Next I
        'Form4.Combo1.ListIndex = DefaultLayoutIndex(CADImage)

    End Sub

    Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed

        If Not (CADImage.Equals(IntPtr.Zero)) Then
            CloseCAD(CADImage)
            CADImage = IntPtr.Zero
        End If
    End Sub

    Private Sub panel1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles panel1.Paint

        Dim R As Rect
        Dim AbsWidth As Single
        Dim AbsHeight As Single
        Dim K As Double
        If Not (CADImage.Equals(IntPtr.Zero)) Then
            GetBoxCAD(CADImage, AbsWidth, AbsHeight)
            If AbsHeight <> -1 Then
                GetClientRect(panel1, R)
                If AbsWidth = 0 Then
                    K = 1
                Else
                    K = AbsHeight / AbsWidth
                End If
                R.Bottom = (R.Top + (R.Right - R.Left) * K)
                R.Left = (R.Left * FScale / 100) + Offset.X
                R.Right = (R.Right * FScale / 100) + Offset.X
                R.Top = (R.Top * FScale / 100) + Offset.Y
                R.Bottom = (R.Bottom * FScale / 100) + Offset.Y
                Dim g1 As Graphics = Graphics.FromHwnd(panel1.Handle)
                DrawCAD(CADImage, g1.GetHdc(), R)
            End If
        End If

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        dlgOpenDXFFile.Filter = "CAD files (dwg, dxf, rtl, spl, prn, gl2, hpgl2, hpgl, hp2, hp1, hp, plo, hpg, hg, hgl, plt, cgm, svg, svgz)|*.dwg;*.dxf;*.rtl;*.spl;*.prn;*.gl2;*.hpgl2;*.hpgl;*.hp2;*.hp1;*.hp;*.plo;*.hpg;*.hg;*.hgl;*.plt;*.cgm;*.svg;*.svgz|" + _
            "AutoCAD files (dwg, dxf)|*.dwg;*.dxf;|" + _
            "HPGL/2 files (rtl, spl, prn, gl2, hpgl2, hpgl, hp2, hp1, hp, plo, hpg, hg, hgl, plt)|*.rtl;*.spl;*.prn;*.gl2;*.hpgl2;*.hpgl;*.hp2;*.hp1;*.hp;*.plo;*.hpg;*.hg;*.hgl;*.plt;|" + _
            "Computer Graphics Metafile (cgm)|*.cgm;|" + _
            "Scalable Vector Graphics (svg, svgz)|*.svg;*.svgz;|" + _
            "All files (*.*)|*.*"
        Dim R As Rect
        KX = 1
        KY = 1
    End Sub

    Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
        panel1.Invalidate()
    End Sub

    Private Sub panel1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles panel1.MouseDown

        PreviousPoint.X = e.X
        PreviousPoint.Y = e.Y
        panel1.Cursor = Cursors.Hand
        drag = True
    End Sub

    Private Sub panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles panel1.MouseMove
        If (CADImage.Equals(IntPtr.Zero)) Then
            Return
        End If
        If drag = True Then
            Offset.X = Offset.X - (PreviousPoint.X - e.X) / KX
            Offset.Y = Offset.Y - (PreviousPoint.Y - e.Y) / KY
            PreviousPoint.X = e.X
            PreviousPoint.Y = e.Y
            panel1.Invalidate()
        End If
    End Sub

    Private Sub panel1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles panel1.MouseUp
        drag = False
        panel1.Cursor = Cursors.Default
        panel1.Invalidate()
    End Sub

    Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated

        panel1.Visible = True
    End Sub

    Private Sub Form1_Deactivate(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Deactivate
        panel1.Visible = False
    End Sub

    Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem5.Click, MenuItem6.Click, MenuItem7.Click, MenuItem8.Click, MenuItem9.Click
        MenuItem5.Checked = False
        MenuItem6.Checked = False
        MenuItem7.Checked = False
        MenuItem8.Checked = False
        MenuItem9.Checked = False
        Dim tmp As MenuItem = sender
        tmp.Checked = True
        FScale = Convert.ToInt32(tmp.Text)
        panel1.Invalidate()
    End Sub

    Private Sub MenuItem10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem10.Click
        Close()
    End Sub

    Private Sub MenuItem11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem11.Click

        Dim CrDraw As CADDRAW = New CADDRAW
        Dim K As Single
        Dim AbsWidth As Single
        Dim AbsHeight As Single
        CD.FileName = ""
        CD.Filter = "Bmp files (bmp)|*.bmp"
        CD.ShowDialog()
        GetBoxCAD(CADImage, AbsWidth, AbsHeight)
        If AbsWidth = 0 Then
            K = 1
        Else
            K = AbsHeight / AbsWidth
        End If
        CrDraw.Size = Len(CrDraw) 'size of CADDRAW
        CrDraw.R = New Rect
        GetClientRect(panel1, CrDraw.R)
        CrDraw.R.Bottom = CrDraw.R.Right * K
        CrDraw.R.Right = CrDraw.R.Right * FScale / 100
        CrDraw.R.Bottom = CrDraw.R.Bottom * FScale / 100
        CrDraw.DrawMode = 0 ' color mode
        Dim i = SaveCADtoBitmap(CADImage, CrDraw, CD.FileName)
    End Sub

    Private Sub MenuItem4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
        Dim CrDraw As CADDRAW = New CADDRAW
        Dim K As Single
        Dim AbsWidth As Single
        Dim AbsHeight As Single
        CD.FileName = ""
        CD.Filter = "Jpg files (jpg)|*.jpg"
        CD.ShowDialog()
        GetBoxCAD(CADImage, AbsWidth, AbsHeight)
        If AbsWidth = 0 Then
            K = 1
        Else
            K = AbsHeight / AbsWidth
        End If
        CrDraw.Size = Len(CrDraw) 'size of CADDRAW
        CrDraw.R = New Rect
        GetClientRect(panel1, CrDraw.R)
        CrDraw.R.Bottom = CrDraw.R.Right * K
        CrDraw.R.Right = CrDraw.R.Right * FScale / 100
        CrDraw.R.Bottom = CrDraw.R.Bottom * FScale / 100
        CrDraw.DrawMode = 0 ' color mode
        Dim i = SaveCADtoJpeg(CADImage, CrDraw, CD.FileName)
    End Sub

    Private Sub MenuItem12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem12.Click
        lForm.ShowDialog()
    End Sub


    Private Sub MenuItem15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem15.Click

        Me.ColorDialog1.AllowFullOpen = True
        Me.ColorDialog1.AnyColor = False
        Me.ColorDialog1.Color = Me.panel1.BackColor
        Me.ColorDialog1.CustomColors = Nothing
        Me.ColorDialog1.FullOpen = False
        Me.ColorDialog1.ShowHelp = True
        Me.ColorDialog1.SolidColorOnly = False

        If (Me.ColorDialog1.ShowDialog() = DialogResult.OK) Then
            SetDefaultColor(CADImage, ConvertColorToInt(Me.ColorDialog1.Color))
        End If
        Me.panel1.Invalidate()
    End Sub
    Public Function ConvertColorToInt(ByVal sender As Color) As Integer
        Dim r, g, b, nColor As Integer

        r = sender.R
        g = sender.G
        b = sender.B
        nColor = (b << 16) + (g << 8) + r
        Return nColor
    End Function
End Class

Public Structure POINTAPI
    Public X As Long
    Public Y As Long
End Structure

Public Structure Rect
    Public Left, Top, Right, Bottom As Integer
    Public Sub New(ByVal val As Rectangle)
        Left = val.Left
        Top = val.Top
        Right = val.Right
        Bottom = val.Bottom
    End Sub
End Structure

Public Structure CADDRAW
    Public Size As Single
    Public DC As Single
    Public R As Rect
    Public DrawMode As Byte
End Structure

Public Structure DXFPOINT
    Public X As Single
    Public Y As Single
    Public Z As Single

    Public Sub New(ByVal aX As Single, ByVal aY As Single)
        X = aX
        Y = aY
    End Sub
End Structure

Public Structure Data
    Public Tag As Char
    Public Count As Char
    Public TickCount As Char
    Public Flags As Byte
    Public Style As Byte
    Public Dimension As Integer
    Public DashDots As Single
    Public DashDotsCount As Integer
    Public Color As Integer
    Public Ticks As Single
    Public Thickness As Single
    Public Rotation As Single
    Public Layer As String
    Public Text As String
    Public FontName As String
    Public Handle As Single
    Public Unused As Integer
    Public Point As DXFPOINT
    Public Point1 As DXFPOINT
    Public Point2 As DXFPOINT
    Public Point3 As DXFPOINT
    'Public Var1(17) As Byte
    Public FHeight, FScale, RWidth, RHeight As Single
    Public HAlign, VAlign As Byte
End Structure






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -