liarcht 发表于 2003-5-17 09:49:00

[讨论] acad r14 vba

r14的vba中没有sendcommand这个命令
不知道大家是如何解决vba中调用lisp命令的?

mccad 发表于 2003-5-18 12:16:00

实用函数中有相关函数

http://www.mjtd.com/function/list.asp?id=366

tangshengxia 发表于 2003-5-18 15:43:00

有问题阿!!

我在进行VBA编程时遇到了一问题:
在进行绘制弧的程序编写时:
   Dim cenpt AS Variant
   Dim centerpt() AS Variant
   Dim radius AS Double
   cenpt=centerpt(p1,p2,p3)
   radius=R
   set cenpt=ThisDrawing.Modelspace.AddArc(cenpt,radius)
但在运行时出错了,说是 centerpt 和 cenpt 的类型不符,这是怎么一回事阿??            
                      请帮帮忙!!!!!
                   时间紧阿!!!!

liarcht 发表于 2003-5-19 08:45:00

函数和sendkeys一样,不是我需要的结果

代码可以使用,但是和sendkeys没有区别,我的想法是在vba的窗体中调用sendcommand,调用结束后返回,但是这个函数是在窗体关闭后再运行相关的lisp语句

liarcht 发表于 2003-5-19 08:55:00

可能是我调试有问题,但是程序本身代码也有问题

程序调试通过后,我把成功的代码贴上来

zhuqi75 发表于 2003-5-19 10:06:00

我们的软件是R14.01版本上开发的,

我们的软件是R14.01版本上开发的,可是我们一直没有这个,一直用R14来代替,而这个二次开发的软件许多的功能是用VBA开发的,这一部分功能就丢失了,我认为丢失的这部分才是精华.
R14.01中文的市场上有,可我们的工作是对日的,要英文的才行,能帮帮我们公司吗?

liarcht 发表于 2003-5-19 14:39:00

用mdt3.0

mccad 发表于 2003-5-19 19:35:00

你必须先隐藏窗体才能向ACAD发送命令

liarcht 发表于 2003-5-20 00:50:00

隐藏窗体是肯定的,但是没有达到lisp命令完成后才返回vba,程序修改入内

可能你们没有装r14,所有下面的代码才能在r14下运行,有2处修改

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Const WM_COPYDATA = &H4A
Type COPYDATASTRUCTURE
    dwData As Long
    cbData As Long
    lpData As String
End Type

Public Sub SendCommand(CommandString As String)
    Dim udtData As COPYDATASTRUCTURE
    Dim lngHwnd As Long
    udtData.dwData = 1
    udtData.lpData = CommandString
    udtData.cbData = LenB(CommandString) + 2
    lngHwnd = FindWindow(vbNullString, ThisDrawing.Application.Caption)
    SendMessage lngHwnd, WM_COPYDATA, 0, udtData
End Sub

mccad 发表于 2003-5-21 17:55:00

看看以下文章试试

在调用一个交互式对话框之后生成VBA执行代码
http://www.mjtd.com/a2/list.asp?id=501
页: [1]
查看完整版本: [讨论] acad r14 vba