zoukankan      html  css  js  c++  java
  • AutoCAD2005_VBA编程学习笔记_001

    '如果需要dvb源文件可以通知我

    '作者qq:973490770

    Option Explicit
    Dim CurrentDrawingColor As Integer
    Sub CreateLine() '创建一条直线
        Dim StartPoint(0 To 2) As Double
        Dim EndPoint(0 To 2) As Double
        StartPoint(0) = TxtStartPointX.Text
        StartPoint(1) = TxtStartPointY.Text
        StartPoint(2) = TxtStartPointZ.Text
        EndPoint(0) = TxtEndPointX.Text
        EndPoint(1) = TxtEndPointY.Text
        EndPoint(2) = TxtEndPointZ.Text
        With ThisDrawing.ModelSpace
            .AddLine StartPoint, EndPoint
            .Item(.Count - 1).Update
        End With
    End Sub
    Sub HighLightLastItemDrawn() '最后一条直线高亮显示
        With ThisDrawing.ModelSpace
                Select Case .Count
                Case 0
                    MsgBox "图纸上还木有画直线呢亲!"
                Case Is > 0
                    .Item(.Count - 1).Highlight True '必须update某个对象才能显示出上次执行高亮命令的效果。
                End Select
        End With
    End Sub
    Sub UnHighLightLastItemDrawn() '最后一条直线取消高亮显示
        With ThisDrawing.ModelSpace
            Select Case .Count
                Case 0
                    MsgBox "图纸上还木有画直线呢亲!"
                Case Is > 0
                    .Item(.Count - 1).Highlight False
            End Select
        End With
    End Sub
    Sub HighLightAllItems() '高亮显示所有直线
        Dim HighLightAllItemsNum As Integer
        With ThisDrawing.ModelSpace
        Select Case .Count
        Case 0
            MsgBox "图纸上还木有画直线呢亲!"
        Case Is > 0
            For HighLightAllItemsNum = 0 To .Count - 1
                .Item(HighLightAllItemsNum).Highlight True
            Next
        End Select
        End With
    End Sub
    Sub UnHighLightAllItems() '取消所有直线高亮显示
        Dim LineObject As AcadEntity
        With ThisDrawing.ModelSpace
            Select Case .Count
                Case 0
                    MsgBox "图纸上还木有画直线呢亲!"
                Case Is > 0
                    For Each LineObject In ThisDrawing.ModelSpace
                        LineObject.Highlight False
                    Next
            End Select
        End With
    End Sub
    Sub GetColorSelected() '直线颜色的改变
        Select Case LstColors.ListIndex
            Case 0
                CurrentDrawingColor = vbBlack
            Case 1
                CurrentDrawingColor = acRed
            Case 2
                CurrentDrawingColor = acYellow
            Case 3
                CurrentDrawingColor = acGreen
            Case 4
                CurrentDrawingColor = acCyan
            Case 5
                CurrentDrawingColor = acBlue
            Case 6
                CurrentDrawingColor = acMagenta
            Case Else
                CurrentDrawingColor = acWhite
        End Select
    End Sub
    Sub GetUsersSelection()
        Dim UsersSelection As AcadSelectionSet, DrawingSelected As AcadEntity
        'delete the selection set if it already exists,取消选择,如果他已经被选中
        With ThisDrawing
            On Error Resume Next
            .SelectionSets("CurrentSelection").Delete
            'get selection from user 从用户窗口获得选择集
            ThisDrawing.Utility.Prompt vbLf & "请选择对象,点击回车确认!" & vbLf
            Set UsersSelection = .SelectionSets.Add("CurrentSelection")
            UsersSelection.SelectOnScreen
            For Each DrawingSelected In UsersSelection
                DrawingSelected.color = acGreen
            Next
            .ModelSpace.Item(.ModelSpace.Count - 1).Update
        End With
        Me.Show
    End Sub


    Private Sub ChkLstColor_Click()
        With ChkLstColor
            If .Value = True Then
                LstColors.Visible = True
            Else
                LstColors.Visible = False
            End If
        End With
    End Sub

    Private Sub CmdCancel_Click()
    End
    End Sub

    Private Sub CmdOK_Click()
    If LstTypes.ListIndex > -1 Then
        ThisDrawing.ActiveLinetype = ThisDrawing.LineTypes(LstTypes.List(LstTypes.ListIndex))
    End If
    'Unload Me
    End Sub


    Private Sub CommandButton1_Click()
        Unload Me
        MY000_Contents.Show
    End Sub

    Private Sub CommandButton2_Click() '创建一条直线按钮
    If IsNumeric(TxtStartPointX.Text) And IsNumeric(TxtStartPointY.Text) And IsNumeric(TxtStartPointZ.Text) And IsNumeric(TxtEndPointX.Text) And IsNumeric(TxtEndPointY.Text) And IsNumeric(TxtEndPointZ.Text) = True Then
        CreateLine
        With ThisDrawing.ModelSpace
            .Item(.Count - 1).Update
        End With
    Else
        MsgBox "请全部填写数字坐标!"
    End If

    End Sub


    Private Sub CommandButton3_Click() '直线高亮操作
        Dim MyPoint(2) As Double, CurrentDrawingColor As Integer
        MyPoint(0) = 0
        MyPoint(1) = 0
        MyPoint(2) = 0
        'MsgBox "ChkHighLightLast.value:" & ChkHighLightLast.Value & vbLf & "ChkHighLightAllItems.value:" & ChkHighLightAllItems.Value
        If ChkHighLightLast.Value = True And ChkHighLightAllItems.Value = True Then  '高亮显示
               
                HighLightAllItems
                ThisDrawing.Utility.Prompt vbLf & "全部直线高亮显示" & vbLf
        ElseIf ChkHighLightLast.Value = True And ChkHighLightAllItems.Value = False Then
                HighLightLastItemDrawn
                ThisDrawing.Utility.Prompt vbLf & "最后一条直线高亮显示" & vbLf
        ElseIf ChkHighLightLast.Value = False And ChkHighLightAllItems.Value = True Then '不高亮显示
                UnHighLightAllItems
                ThisDrawing.Utility.Prompt vbLf & "所有直线取消高亮显示" & vbLf
        Else
                UnHighLightLastItemDrawn
                ThisDrawing.Utility.Prompt vbLf & "最后一条直线取消高亮显示" & vbLf
        End If
    '为了让效果可以实时地看到,我们在程序最后通过创建一个辅助点Point1,并对Point1进行update,然后删除这个辅助点。程序如下。
        With ThisDrawing.ModelSpace
            .AddPoint MyPoint
            .Item(.Count - 1).Update '通过载入这个点,来显示那些之前创建的对象的加亮效果。
            .Item(.Count - 1).Delete '改点的作用已经达到那么删除该点,有点过河拆桥的意思。
        End With
    End Sub

    Private Sub ComGetUsersSelection_Click()
    Me.Hide
    GetUsersSelection
    End Sub


    Private Sub Frame2_Click()

    End Sub

    Private Sub LstColors_Click()
        Dim CurrentObject As AcadLine
        With ThisDrawing.ModelSpace
            Select Case .Count
                Case 0
                    MsgBox "你还没画东东呢改什么颜色!你说呢是不是傻!是不是傻!"
                Case Is > 0
                    GetColorSelected
                    If ChkHighLightAllItems.Value = True Then
                        For Each CurrentObject In ThisDrawing.ModelSpace
                            CurrentObject.color = CurrentDrawingColor
                            CurrentObject.Update
                        Next
                        ThisDrawing.Utility.Prompt vbLf & "所有直线颜色已经改好" & vbLf
                    Else
                       
                        .Item(.Count - 1).color = CurrentDrawingColor
                        .Item(.Count - 1).Update
                        ThisDrawing.Utility.Prompt vbLf & "最后一条直线颜色已经改好" & vbLf
                    End If
            End Select
        End With
        'MsgBox CurrentDrawingColor
    End Sub

    Private Sub LstTypes_Click()

    End Sub

    Private Sub UserForm_Initialize() 'CAD窗口初始化的时候进行的预操作。
        Dim CurrentLineType As AcadLineType
        For Each CurrentLineType In ThisDrawing.LineTypes
            LstTypes.AddItem CurrentLineType.name
            If CurrentLineType.name = ThisDrawing.ActiveLinetype.name Then
                LstTypes.Selected(LstTypes.ListCount - 1) = True
            End If
        Next
        With LstColors
            .Visible = False
            .AddItem "黑色Black"
            .AddItem "红色Red"
            .AddItem "黄色Yellow"
            .AddItem "绿色Green"
            .AddItem "青色Cyan"
            .AddItem "蓝色Blue"
            .AddItem "紫色Magenta"
            .AddItem "白色White"
        End With
    End Sub

  • 相关阅读:
    acm寒假特辑1月20日 CodeForces
    acm寒假特辑1月24日 HDU
    acm寒假特辑1月25日HDU
    acm寒假特辑1月26日HDU
    acm寒假特辑1月22日HDU
    acm寒假特辑1月28日HDU
    ubuntu14.04安装notepadqq
    ntpd vs. ntpdate
    centos7 防火墙firewalld
    git 自动补全 (git auto completion)
  • 原文地址:https://www.cnblogs.com/qiaqia/p/4630047.html
Copyright © 2011-2022 走看看