[讨论]对VBA编程很有意义的问题
今天无意间发现了一个在VBA中调用ARX全局函数的调用,在上传的程序中大家可以看到。我的问题是,如何查看提供的这些函数的格式(类似API函数的声明)?
另外一点是,我使用的预览函数出错,系统提示:找不到DLL入口点,是什么原因呢?(在程序中能够看到)
我的猜想是:可能是VBA中仅能调用AcEd类的全局函数。现在仍在实验中,希望各位参与这个问题,如果能成功调用ARX的这些资源,对VBA编程的灵活性将大大提高。**** Hidden Message ***** 其实这个方法以前也注意过,但一直都找不到调用的方法,如以下的调用ACAD选择颜色的对话框函数就是直接调用acad.exe文件中的函数:
Private Declare Function acedSetColorDialog Lib _
"acad.exe" (color As Long, ByVal bAllowMetaColor _
As Boolean, ByVal nCurLayerColor As Long) As Boolean
Public Function ChooseColor(ByVal lngInitClr As Long, _
ByVal blnMetaColor As Boolean, _
ByVal lngCurClr As Long) As Long
ChooseColor = -1
On Error Resume Next
If acedSetColorDialog(lngInitClr, blnMetaColor, lngCurClr) Then
ChooseColor = lngInitClr
End If
On Error GoTo 0
End Function
但一直想调用象ACAD中打开文件的函数(带预览图),一直未果。 在autocad的網站上下一各objectarx,
裏辺的幇助有相関内容 终于写出了一部分的带预览的打开文件对话框,只是返回文件名部分还不知道怎么搞:
Private Declare Function acedGetFileNavDialog Lib _
"acad.exe" (ByVal title As String, ByVal default As String, ByVal ext As String, _
ByVal dlgname As String, ByVal flags As Integer, result As Variant) As Integer
Public Function OpenFile(ByVal title As String, ByVal defawlt As String, ByVal ext As String) As Variant
Dim result As Variant
acedGetFileNavDialog title, defawlt, ext, title, 0, result
OpenFile = result
End Function
Sub gf()
OpenFile "打开文件-乐筑天下VBA示例", "", "dwg"
End Sub
但因为我对C++的自定义数据类型不清楚,所以打开文件的对话框函数不能返回选定的文件。
张版主请给修改一下。对话框打开后按确定或取消后出现:“运行时错误 49,DLL调用约定错误”。
这个程序会使AutoCAD致命错误退出:
Private Declare Function acedFindFile Lib _
"acad.exe" (ByVal fname As String, result As String) As Integer
Sub FindFile()
Dim filepath As String
Dim filename As String
filename = "acad.mnu"
acedFindFile filename, filepath
Debug.Print filepath
End Sub
让CAD出现致命错误,能问一下您是在什么地方加入的吗?
用什么软件或程序写的吗?谢谢
另问一下我的cad2000在打印输出时有时出现致命错误,
但在打印时能出现预览,也可以打印,打印后只能重新运行2000了
请赐教 我觉得要有预览图生成还有一种方法
可以利用VBA和LISP结合在VB中调用LISP SETVAR函数 不过只能通过命令行实现,有点笨的办法。不过可以一试 acedGetFileNavDialog函数是ARX中的一个全局函数,result参数是一个指向结构体的指针。在C++中,没有字符串这种类型,是用字符数组来实现的。
我觉得你的参数了型还是有道理的,不过这个问题可能最好到官方网站去查资料了。
页:
[1]