明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4187|回复: 10

VBA问题

[复制链接]
发表于 2002-10-17 09:18 | 显示全部楼层 |阅读模式
谢谢解决下图问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2002-10-17 12:53 | 显示全部楼层

你看是不是这样的,图层你自己设置吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2002-10-17 12:59 | 显示全部楼层

我担心你下载不到文件,就吧代码写了出来

包括的控件:
form:caption "OFFSET" name "MAIN"
textbox:text ""   name text1
bottoncommand: ok
bottoncommand :cancel
label: caption "偏移量" name "label1"

代码开始:
Option Explicit
Dim acadapp As Object
Dim preference As Object
Dim acaddoc As Object
Dim paspace As Object
Dim mospace As Object
Dim offsetl As Double
Dim object  As Object
Dim cishu As Integer
Dim PickedPoint As Variant
Dim TransMatrix As Variant
Dim ContextData As Variant
Dim HasContextData As String

Private Sub CANCEL_Click()
Unload Me
End Sub

Private Sub Form_Load()
'初始化CAD
On Error Resume Next
Set acadapp = GetObject(, "autocad.application")
If Err Then
Err.Clear
Set acadapp = CreateObject("autocad.application")
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
acadapp.Visible = True
Set preference = acadapp.Preferences
Set acaddoc = acadapp.ActiveDocument
Set mospace = acaddoc.ModelSpace
Set paspace = acaddoc.PaperSpace
End Sub
Private Sub OK_Click()
offsetl = Text1.Text
'选择偏移对象
On Error GoTo NOT_ENTITY
TRYAGAIN:
If (cishu = 3) Then
GoTo tuich
End If
'在这里设置你要的图层
acaddoc.Utility.GetSubEntity object, PickedPoint, TransMatrix, ContextData, "选择需要进行偏移的对象:"
'在这里设置你要的图层
object.Offset (offsetl)
object.Offset (-offsetl)
NOT_ENTITY:
cishu = cishu + 1
Resume TRYAGAIN
'用户3次没有选择到则自动退出程序
tuich:
If (cishu = 3) Then
Unload Me
Else
main.Show
End If
End Sub
代码结束!
 楼主| 发表于 2002-10-17 23:26 | 显示全部楼层

感谢

dbczhaoy:
    你好!
    代码基本看懂了,如果从CAD命令行中输入偏移量更好!!
    非常感谢!!
 楼主| 发表于 2002-10-18 00:17 | 显示全部楼层

疑问

dbczhaoy:
     你好:
     运行时好象这句有问题
      acaddoc.Utility.GetSubEntity object, PickedPoint, TransMatrix, ContextData, "选择需要进行偏移的对象:"
     谢谢指点!!!!!!!
 楼主| 发表于 2002-10-18 01:08 | 显示全部楼层

疑点

dbczhaoy:
    你好!
    为什么用VB编译器可以完成,而用autocad2000自带的VB窗体却不能完成呢!!!!!
    再麻烦你了感谢!!!!!
发表于 2002-10-18 09:40 | 显示全部楼层

dbczhaoy提供的代码本身就是VB的,不是VBA,在这我写一个VBA的实现

程序工作时,在ACAD绘图区双击鼠标就进入自定义偏移指令。偏移对象选择和偏移距离指定在ACAD命令行完成。你可以修改程序,使之在你认为合适的时候激活。
Private Sub AcadDocument_BeginDoubleClick(ByVal PickPoint As Variant)
Dim OffsetValue As Double
Dim Obj As AcadObject
ThisDrawing.Utility.Prompt "进入自定义偏移指令。" & Chr(10)
ThisDrawing.Utility.GetEntity Obj, Pt, "请选择要偏移的对象:"
OffsetValue = ThisDrawing.Utility.GetReal("请输入偏移距离:")
Obj.Offset OffsetValue
Obj.Offset -OffsetValue
End Sub
发表于 2002-10-18 11:48 | 显示全部楼层

是的,不好意思我犯了一个很低级的错误,我试过了,VBA更好实现这个功能。

 楼主| 发表于 2002-10-18 22:43 | 显示全部楼层

多谢

leeyeafu:
   你提供的方法更好.
    以后希望多多指教,我应怎么称呼您!!!!
发表于 2002-10-20 09:57 | 显示全部楼层

请教LEEYEAFU关于VBA的问题。(在此之前我把VB和VBA混为一谈了)

本帖最后由 作者 于 2002-10-20 9:57:23 编辑

我现在知道了一些VB和VBA的区别,并且也用VBA写了一些代码,我遇到的问题是,生成*.DVB文件后怎么样让它在CAD启动时自动加载(我试过用LISP调用,代码是:
(defun c:名称() ;要在命令行执行的命令名称
  (setvar "cmdecho" 0)
  (command "-VBARUN" "VBA工程名称.dvb!模块名.过程名")
  (setvar "cmdecho" 1)
  (princ)
)
不带窗体的很容易实现,带窗体的在代码中怎么实现呢

不知道能否提供一个简单的例子,并把操作步骤教给我!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-28 19:27 , Processed in 0.242039 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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