明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: zgyxn

请问:用getpoint操作时,怎样进行平移缩放及右键结束

    [复制链接]
发表于 2003-4-21 14:17:00 | 显示全部楼层

高手就是高手~~~~~~

发表于 2003-4-28 13:47:00 | 显示全部楼层

似乎有点问题?

请教版主,我试着使用了您的方法,为什么陷入了死循环?
只是把Pnt1 = ThisDrawing.Utility.GetPoint(, vbCrlf & "选择第一点:") 改成了Number = ThisDrawing.Utility.GetInteger(, vbCr & "选择第一点:") 。
然后程序一直在循环Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As Long,ByVal lParam As Long) As Long 函数。
请教!!谢谢!!
发表于 2003-6-8 20:35:00 | 显示全部楼层

[疑问]有问题,陷入死循环!

请教mccad版主,我试了您的程序,在执行Pnt1 = ThisDrawing.Utility.GetPoint(, vbCr & "选择第一点:") 时调用Function KeyboardProc函数,但在此函数里一直循环执行,不能跳出,不知您是否碰到该情况?会否是本程序有误?
请指教!
发表于 2003-6-15 12:08:00 | 显示全部楼层

有点问题?

怎么在
case else 
masbox()

那里好象也有死循环?
发表于 2003-6-18 09:30:00 | 显示全部楼层

ThisDrawing.SendCommand "(getpoint " & Chr(34) & "\npoint:" & Chr(34) &

ThisDrawing.SendCommand "(getpoint " & Chr(34) & "\npoint:" & Chr(34) & " )" & Chr(13)[br]
发表于 2003-7-25 13:40:00 | 显示全部楼层
能解释一下吗?主要是API那部分
发表于 2003-8-5 09:08:00 | 显示全部楼层
acadx中有一个getxx.dll,它可以很好地解决这个问题。它主要使用的API如下
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Public Const VK_ESCAPE = &H1B
Public Const VK_LBUTTON = &H1
Public Const VK_RBUTTON = &H2
Public Const VK_RETURN = &HD
Public Const VK_SPACE = &H20
Public Const PI = 3.141592654

Public Const GETXX_SUCCESS = &H1
Public Const GETXX_ESCAPE = &H2
Public Const GETXX_RBUTTON = &H4
Public Const GETXX_RETURN = &H8
Public Const GETXX_KEYWORD = &H10
Public Const GETXX_TOOLBAR = &H20
Public Const GETXX_NOPICK = &H40
Public Const GETXX_ACADRETURN = GETXX_RBUTTON Or GETXX_RETURN
Public Const GETXX_FAILED = GETXX_ESCAPE Or GETXX_RBUTTON Or GETXX_RETURN Or GETXX_NOPICK
'IF A KEYWORD LIST IS SUPPLIED, THE ONLY ERROR CODES THAT CAN BE RETURNED ARE:
'GETXX_SUCCESS, GETXX_ESCAPE, & GETXX_KEYWORD
发表于 2003-8-28 13:26:00 | 显示全部楼层
现在使用了南子说的API函数,解决这个问题
  1. '判断某一键盘键自上次调用该函数以来是否被按过的API函数
  2. Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

  3. Private Const VK_ESCAPE = &H1B

  4. Sub DrawLine()
  5.     Dim ESC As Long
  6.     GetAsyncKeyState VK_ESCAPE
  7.     On Error GoTo Err_Control
  8.     Dim Pnt1 As Variant
  9.     Dim Pnt2 As Variant
  10.     Dim line As AcadLine
  11.     Dim varCancel As Variant
  12.     Pnt1 = ThisDrawing.Utility.GetPoint(, vbCr & "选择第一点:")
  13.    
  14.     Do
  15.         Pnt2 = ThisDrawing.Utility.GetPoint(Pnt1, vbCr & "选择下一点:")
  16.         Set line = ThisDrawing.ModelSpace.AddLine(Pnt1, Pnt2)
  17.         Pnt1 = Pnt2
  18.     Loop

  19. Exit_Here:
  20.   Exit Sub
  21. Err_Control:
  22.     varCancel = ThisDrawing.GetVariable("LASTPROMPT")
  23.     ESC = GetAsyncKeyState(VK_ESCAPE)
  24.     Select Case Err.Number
  25.         '按了取消键或其它透明命令
  26.         Case -2147352567
  27.             '如果命令行提示中没有“取消”这样的文字出现
  28.             '一般来说在2002中按了回车或空格都不会出现“取消”
  29.             '则退出
  30.             If InStr(1, varCancel, "*Cancel*") <> 0 And _
  31.                InStr(1, varCancel, "*取消*") <> 0 Then
  32.                 Err.Clear
  33.                 Resume Exit_Here
  34.             '如果按了“取消”键,则退出
  35.             ElseIf ESC <> 0 Then
  36.                 Err.Clear
  37.                 Resume Exit_Here
  38.             '其它情况下,则恢复。如选择了透明命令,则会出现“取消”
  39.             '字样,但不是按了“取消”键。
  40.             Else
  41.                 Err.Clear
  42.                 Resume
  43.             End If
  44.         '右键单击或回车或空格。
  45.         '在这里,-2147467259用于AutoCAD 2000 及2002,
  46.         '而-2145320928为2004专用
  47.         Case -2147467259, -2145320928
  48.             Err.Clear
  49.             Resume Exit_Here
  50.         '其它情况,一律退出
  51.         Case Else
  52.             Err.Clear
  53.             Resume Exit_Here
  54.     End Select
  55. End Sub
发表于 2003-8-30 09:33:00 | 显示全部楼层
hHook = SetWindowsHookEx(WH_KEYBOARD, _
                            AddressOf KeyboardProc, 0&, 0)
此句是否有错
我在编译时 出现“编译错误:缺少表达式”   这是怎么会事啊?
还请斑竹指点
发表于 2003-9-12 16:21:00 | 显示全部楼层
对呀,我用14版本,好像编译通不过.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 06:43 , Processed in 0.156777 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表