乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 33|回复: 0

[例程]使用Utility

[复制链接]

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2002-5-28 20:53:00 | 显示全部楼层 |阅读模式
Public Sub UseGetConer()
   
    Dim returnPnt As Variant
    Dim basePnt As Variant
    'basePnt(0) = 2#: basePnt(1) = 2#: basePnt(2) = 0#
   
    basePnt = ThisDrawing.Utility.GetPoint(, "选择第1个角点:")
   
    ' Prompt the user to pick second point and returns the point
    returnPnt = ThisDrawing.Utility.GetCorner(basePnt, "输入第2个角点: ")
   
    ' Display the point picked
    MsgBox "第2个角点的坐标为:" & returnPnt(0) & ", " & returnPnt(1) & ", " & returnPnt(2), , "GetCorner Example"
End Sub
Public Sub UseGetAngle()
   
    Dim pickObj As AcadEntity
    Dim pickPnt As Variant
    ThisDrawing.Utility.GetEntity pickObj, pickPnt
'-------------------------------
    Dim retAngle As Double
    Dim basePnt As Variant
    basePnt = ThisDrawing.Utility.GetPoint(, "选择一个基点:")
   
    ' Return the angle in radians with a prompt
    retAngle = ThisDrawing.Utility.GetAngle(, "输入一个角度: ")
    'MsgBox "输入的角度值为:" & retAngle
   
    ' Return the angle in radians with a prompt and an angle base point
    'basePnt(0) = 2#: basePnt(1) = 2#: basePnt(2) = 0#
    'retAngle = ThisDrawing.Utility.GetAngle(basePnt, "输入一个角度: ")
    'MsgBox "输入的角度值为:" & retAngle
'---------------------------------
    pickObj.Rotate basePnt, retAngle
   
End Sub
Public Sub UseGetKeyword()
   
    ' Define the list of valid keywords
    Dim kwordList As String
    kwordList = "Width Height Depth"
    ThisDrawing.Utility.InitializeUserInput 1, kwordList
            
    ' Prompt the user to input any of the keywords. Return "Width", "Height" or "Depth" in
    ' the returnString variable depending on whether the user input "W", "H" or "D".
    Dim returnString As String
    returnString = ThisDrawing.Utility.GetKeyword _
                   ("选择高(H)/宽(W)/深(D): ")
    MsgBox "你选择的是:" & returnString
End Sub
Public Sub CreateSector()
   
    '声明用于创建区域的对象数组
    Dim curves(0 To 1) As AcadEntity
    '声明有关创建圆弧的变量
    Dim centerPoint As Variant
    Dim radius As Double
    Dim startAngle As Double
    Dim endAngle As Double
    '给圆弧变量赋值
    centerPoint = ThisDrawing.Utility.GetPoint(, "选择圆弧中心:")
    radius = ThisDrawing.Utility.GetReal("给定圆弧半径:")
    startAngle = ThisDrawing.Utility.GetReal("给定起始角:") * 3.141592 / 180
    endAngle = ThisDrawing.Utility.GetReal("给定终止角:") * 3.141592 / 180
    '绘制圆弧段
    Set curves(0) = ThisDrawing.ModelSpace.AddArc _
                    (centerPoint, radius, startAngle, endAngle)
    '绘制直线段
    Set curves(1) = ThisDrawing.ModelSpace.AddLine _
                    (curves(0).StartPoint, curves(0).EndPoint)
        
    '创建由圆弧和直线段构成的区域
    Dim keywordList As String
    Dim ynValue As String
    keywordList = "Yes No"
    ThisDrawing.Utility.InitializeUserInput 1, keywordList
    ynValue = ThisDrawing.Utility.GetKeyword("创建区域(Y)/不创建区域(N): ")
   
    If StrComp(ynValue, "Yes", 1) = 0 Then
        Dim regionObj As Variant
        regionObj = ThisDrawing.ModelSpace.AddRegion(curves)
        regionObj(0).Color = acCyan
        MsgBox "区域已创建完毕!"
    Else
        MsgBox "没有创建区域!"
    End If
   
    ZoomAll
        
End Sub
Public Sub RegionMove()
   
    Dim pickObj As AcadEntity
    Dim pickPnt As Variant
    ThisDrawing.Utility.GetEntity pickObj, pickPnt
   
    Dim movePnt1 As Variant
    Dim movePnt2 As Variant
    movePnt1 = ThisDrawing.Utility.GetPoint(, "选择移动基点:")
    movePnt2 = ThisDrawing.Utility.GetPoint(movePnt1, "选择移动终点:")
   
    pickObj.Move movePnt1, movePnt2
End Sub
Public Sub UseGetInput()
   
    On Error Resume Next
   
    '定义一个关键词列表
    Dim keywordList As String
    keywordList = "Keyword1 Keyword2"
    '允许Getxxx方法输入任何形式的值
    ThisDrawing.Utility.InitializeUserInput 128, keywordList
   
    ' Get the user input
    Dim returnPnt As Variant
    returnPnt = ThisDrawing.Utility.GetPoint _
                (, "输入Keyword1或Keyword2: ")
    If Err Then                         '如果输入发生错误
         '判断错误信息是否为输入关键词
         If StrComp(Err.Description, _
                    "User input is a keyword", 1) = 0 Then
         '如果是要输入关键词,用GetInput截获
             Dim inputString As String
             Err.Clear
             inputString = ThisDrawing.Utility.GetInput
             MsgBox "You entered the keyword: " & inputString
         Else
             MsgBox "使用GetPoint方法时出现了" & _
                     Err.Description & "错误。"
             Err.Clear
         End If
    Else                               '如果正常地输入了点坐标
        MsgBox "点的WCS坐标为: " & returnPnt(0) & ", " & _
                returnPnt(1) & ", " & returnPnt(2)
    End If
End Sub
Public Sub UseGetSubEntity()
   
    Dim subObj As AcadEntity
    Dim PickedPoint As Variant
    Dim TransMatrix As Variant
    Dim ContextData As Variant
    Dim HasContextData As String
   
    On Error GoTo NOT_ENTITY
        
    '获取被选择图元的有关信息
    ThisDrawing.Utility.GetSubEntity subObj, PickedPoint, _
                                     TransMatrix, ContextData
   
    '判断是否有子图元存在
    HasContextData = IIf(VarType(ContextData) = _
                      vbEmpty, "没有", "有")
   
    MsgBox "被选对象类型名: " & TypeName(subObj) & vbCrLf & _
           "拾取点坐标:     " & PickedPoint(0) & ", " & _
                                PickedPoint(1) & ", " & _
                                PickedPoint(2) & vbCrLf & _
           "该对象" & HasContextData & "嵌套对象。"
   
    Dim I As Integer
   
    MsgBox "被选择对象为第 " & UBound(ContextData) & " 嵌套层."
    '显示由里向外嵌套图元的ObjectID
    For I = LBound(ContextData) To UBound(ContextData)
        MsgBox "第" & UBound(ContextData) - I & _
               "嵌套层的ObjectID: " & ContextData(I)
    Next
   
    subObj.Color = acGreen
    ThisDrawing.Regen True
   
    Exit Sub
   
NOT_ENTITY:
    '若没有选择图元或图元不具备嵌套的能力
    MsgBox ("该图元不具有子图元。")
End Sub
Public Sub RotateEntity()
Dim pickObj As AcadEntity         '保存被选择图元的对象变量
Dim pickPnt As Variant            '选择图元时的拾取点变量
ThisDrawing.Utility.GetEntity pickObj, pickPnt, "选择图元对象:"
Dim rotAng As Double              '保存旋转角的变量
Dim basePnt As Variant            '保存基点的变量
rotAng = ThisDrawing.Utility.GetReal("输入旋转角:")
rotAng = rotAng * 3.141592 / 180  '将角度转换成弧度
basePnt = ThisDrawing.Utility.GetPoint(, "选择旋转基点:")
'旋转被选择的图元
pickObj.Rotate basePnt, rotAng
End Sub
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 06:40 , Processed in 0.189866 second(s), 65 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表