明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6132|回复: 18

[讨论]对VBA编程很有意义的问题

  [复制链接]
发表于 2003-8-4 07:30:00 | 显示全部楼层 |阅读模式
今天无意间发现了一个在VBA中调用ARX全局函数的调用,在上传的程序中大家可以看到。

我的问题是,如何查看AutoCAD提供的这些函数的格式(类似API函数的声明)?
另外一点是,我使用的预览函数出错,系统提示:找不到DLL入口点,是什么原因呢?(在程序中能够看到)

我的猜想是:可能是VBA中仅能调用AcEd类的全局函数。现在仍在实验中,希望各位参与这个问题,如果能成功调用ARX的这些资源,对VBA编程的灵活性将大大提高。

本帖子中包含更多资源

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

x
发表于 2003-8-4 11:40:00 | 显示全部楼层
其实这个方法以前也注意过,但一直都找不到调用的方法,如以下的调用ACAD选择颜色的对话框函数就是直接调用acad.exe文件中的函数:
  1. Private Declare Function acedSetColorDialog Lib _
  2.    "acad.exe" (color As Long, ByVal bAllowMetaColor _
  3.    As Boolean, ByVal nCurLayerColor As Long) As Boolean

  4. Public Function ChooseColor(ByVal lngInitClr As Long, _
  5.         ByVal blnMetaColor As Boolean, _
  6.         ByVal lngCurClr As Long) As Long

  7.     ChooseColor = -1

  8.     On Error Resume Next

  9.     If acedSetColorDialog(lngInitClr, blnMetaColor, lngCurClr) Then
  10.         ChooseColor = lngInitClr
  11.     End If

  12.     On Error GoTo 0

  13. End Function

但一直想调用象ACAD中打开文件的函数(带预览图),一直未果。
发表于 2003-8-4 14:57:00 | 显示全部楼层
在autocad的網站上下一各objectarx,
裏辺的幇助有相関内容
发表于 2003-8-4 15:37:00 | 显示全部楼层
终于写出了一部分的带预览的打开文件对话框,只是返回文件名部分还不知道怎么搞:
  1. Private Declare Function acedGetFileNavDialog Lib _
  2.    "acad.exe" (ByVal title As String, ByVal default As String, ByVal ext As String, _
  3.    ByVal dlgname As String, ByVal flags As Integer, result As Variant) As Integer
  4. Public Function OpenFile(ByVal title As String, ByVal defawlt As String, ByVal ext As String) As Variant
  5.     Dim result As Variant
  6.     acedGetFileNavDialog title, defawlt, ext, title, 0, result
  7.     OpenFile = result
  8. End Function

  9. Sub gf()
  10.     OpenFile "打开文件-明经通道VBA示例", "", "dwg"
  11. End Sub


但因为我对C++的自定义数据类型不清楚,所以打开文件的对话框函数不能返回选定的文件。
张版主请给修改一下。对话框打开后按确定或取消后出现:“运行时错误 49,DLL调用约定错误”。

本帖子中包含更多资源

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

x
发表于 2003-8-5 13:01:00 | 显示全部楼层
这个程序会使AutoCAD致命错误退出:
  1. Private Declare Function acedFindFile Lib _
  2.     "acad.exe" (ByVal fname As String, result As String) As Integer

  3. Sub FindFile()
  4.     Dim filepath As String
  5.     Dim filename As String
  6.     filename = "acad.mnu"
  7.     acedFindFile filename, filepath
  8.     Debug.Print filepath
  9. End Sub
发表于 2003-8-5 22:36:00 | 显示全部楼层
让CAD出现致命错误,能问一下您是在什么地方加入的吗?
用什么软件或程序写的吗?谢谢
另问一下我的cad2000在打印输出时有时出现致命错误,
但在打印时能出现预览,也可以打印,打印后只能重新运行2000了
请赐教
发表于 2003-8-9 10:23:00 | 显示全部楼层

立刻升级到2002或2004就不会存在这个问题.

发表于 2003-8-9 11:26:00 | 显示全部楼层
我觉得要有预览图生成还有一种方法
可以利用VBA和LISP结合在VB中调用LISP SETVAR函数
发表于 2003-8-9 11:30:00 | 显示全部楼层
不过只能通过命令行实现,有点笨的办法。不过可以一试
 楼主| 发表于 2003-8-10 07:43:00 | 显示全部楼层
acedGetFileNavDialog函数是ARX中的一个全局函数,result参数是一个指向结构体的指针。在C++中,没有字符串这种类型,是用字符数组来实现的。
    我觉得你的参数了型还是有道理的,不过这个问题可能最好到官方网站去查资料了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 23:32 , Processed in 0.193846 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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