乐筑天下

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

VB编程,对话框使用acedGetXXX函数和ACAD交互

[复制链接]

44

主题

222

帖子

12

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
396
发表于 2009-9-17 13:13:00 | 显示全部楼层 |阅读模式
VB编程,非模态窗口中,如何中断当前原有的GETXXX命令,并重新运行另一GETXXXX
如下图

rddb25w4dya.GIF

rddb25w4dya.GIF


使用了功能:
  1. Private Sub Form_Load()Dim obj_Acad As Object, obj_Doc As Object, obj_ModelSpace As Object, obj_Util As Object
  2. Set obj_Acad = GetObject(, ".application")
  3. If Err Then
  4.    Err.Clear
  5.    On Error Resume Next
  6.    Set obj_Acad = CreateObject("autocad.application")
  7.    If Err Then
  8.       Err.Clear
  9.       MsgBox "不能运行AutoCAD,请检查是否安装!", vbOKOnly, "警告!"
  10.       Exit Function
  11.       End If
  12. End If
  13. obj_Acad.Visible = True
  14. Set obj_Doc = obj_Acad.ActiveDocument
  15. Set obj_Util = obj_Doc.Utility
  16. Set obj_ModelSpace = obj_Doc.ModelSpace
  17. End Sub
  18. '获取点按钮
  19. Private Sub Getpoint_Click()
  20.             Dim pt As Variant
  21.             Do While CAD.Getpoint(pt, vbCrLf & "获取点:")
  22.                If IsNull(pt) Then
  23.                     'lop1 = False
  24.                 Else
  25.                     CAD.Addcircle pt, 100
  26.                 End If
  27.             Loop
  28. End SubPublic Function Getpoint(ByRef rePnt As Variant, ByRef inputString As String, Optional Msg As String, Optional pt As Variant) As Boolean
  29. 'On Error Resume Next
  30. ActiveDoc
  31. rePnt = obj_Util.Getpoint(, Msg)
  32. If Err Then
  33.          If Err.Number = -2145320928 Then
  34.              'Dim inputString As String
  35.              Err.Clear
  36.              inputString = ThisDrawing.Utility.GetInput
  37.              'GetPoint = True
  38.          Else
  39.          Getpoint = False
  40.              MsgBox "getpoint错误: " & Err.Description
  41.              Err.Clear
  42.          End If
  43.     Else
  44.         ' Display point coordinates
  45.         'MsgBox "The WCS of the point is: " & reVal(0) & ", " & reVal(1) & ", " & reVal(2), , "GetInput Example"
  46.         Getpoint = True
  47.     End If
  48. End Function
  49. Public Function GetEntity0(ByRef Retobj As Variant, ByRef inputString As String, Optional Msg As String = "") As Boolean
  50. On Error Resume Next
  51. Dim Point As Variant
  52. ActiveDoc
  53. obj_Util.GetEntity Retobj, Point, Msg
  54. If Err Then
  55.          If Err.Number = -2145320928 Then
  56.          ' One of the keywords was entered
  57.              Err.Clear
  58.              inputString = ThisDrawing.Utility.GetInput
  59.          Else
  60.              MsgBox "GetEntity0错误: " & Err.Description
  61.              Err.Clear
  62.              GetEntity0 = False
  63.          End If
  64.     Else
  65.         GetEntity0 = True
  66.     End If
  67. End Function
  68. Public Function Addcircle(ByRef Center As Variant, ByVal Radius As Double) As Object
  69. Dim obj_circle As Object       '定义圆对象
  70. Dim newstr As String
  71. On Error Resume Next
  72. If Not boo Then
  73.   MsgBox "请先生成autocad程序对象", vbOKOnly, "autocad程序对象?"
  74.   Exit Function
  75.   End If
  76. Set obj_circle = obj_ModelSpace.Addcircle(Center, Radius)
  77. Set Addcircle = obj_circle
  78. End Function
*.Utility.GetPoint(, "Enter a point: ")
*.Utility.GetDistance(, "Enter distance: ")
想达到效果:
1、在非模态状态下,本来是使用getpoint的,但还是getpoint的命令状态下,就按获取距离按钮,这时就取消原命令而运行GetDistance

2、在非模态状态下,本来是使用GetDistance的,但还是GetDistance的命令状态下,就按获取点按钮,这时就取消原命令而运行getpoint
本意是想取消原命令,但实际却变成嵌套了,即运行完GetDistance后,还会要求选取一个点。
如何取消当前的命令呢(getXXXXX)
回复

使用道具 举报

0

主题

20

帖子

6

银币

初来乍到

Rank: 1

铜币
20
发表于 2010-6-9 17:08:00 | 显示全部楼层
多谢分享,学习过程中.
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-1 12:49 , Processed in 0.368345 second(s), 60 queries .

© 2020-2025 乐筑天下

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