VBA问题
谢谢解决下图问题你看是不是这样的,图层你自己设置吧
我担心你下载不到文件,就吧代码写了出来
包括的控件: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 objectAs 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
代码结束!
感谢
dbczhaoy:你好!
代码基本看懂了,如果从CAD命令行中输入偏移量更好!!
非常感谢!!
疑问
dbczhaoy:你好:
运行时好象这句有问题
acaddoc.Utility.GetSubEntity object, PickedPoint, TransMatrix, ContextData, "选择需要进行偏移的对象:"
谢谢指点!!!!!!!
疑点
dbczhaoy:你好!
为什么用VB编译器可以完成,而用autocad2000自带的VB窗体却不能完成呢!!!!!
再麻烦你了感谢!!!!!
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
是的,不好意思我犯了一个很低级的错误,我试过了,VBA更好实现这个功能。
多谢
leeyeafu:你提供的方法更好.
以后希望多多指教,我应怎么称呼您!!!!
请教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)
)
不带窗体的很容易实现,带窗体的在代码中怎么实现呢
不知道能否提供一个简单的例子,并把操作步骤教给我!
页:
[1]
2