乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 148|回复: 8

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

[复制链接]

34

主题

372

帖子

7

银币

中流砥柱

Rank: 25

铜币
508
发表于 2003-8-4 07:30:00 | 显示全部楼层 |阅读模式
今天无意间发现了一个在VBA中调用ARX全局函数的调用,在上传的程序中大家可以看到。
我的问题是,如何查看提供的这些函数的格式(类似API函数的声明)?
另外一点是,我使用的预览函数出错,系统提示:找不到DLL入口点,是什么原因呢?(在程序中能够看到)
我的猜想是:可能是VBA中仅能调用AcEd类的全局函数。现在仍在实验中,希望各位参与这个问题,如果能成功调用ARX的这些资源,对VBA编程的灵活性将大大提高。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 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中打开文件的函数(带预览图),一直未果。
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2003-8-4 14:57:00 | 显示全部楼层
在autocad的網站上下一各objectarx,
裏辺的幇助有相関内容
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 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调用约定错误”。

ojexgevltzw.jpg

ojexgevltzw.jpg

回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 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
回复

使用道具 举报

0

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
4
发表于 2003-8-5 22:36:00 | 显示全部楼层
让CAD出现致命错误,能问一下您是在什么地方加入的吗?
用什么软件或程序写的吗?谢谢
另问一下我的cad2000在打印输出时有时出现致命错误,
但在打印时能出现预览,也可以打印,打印后只能重新运行2000了
请赐教
回复

使用道具 举报

15

主题

33

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
93
发表于 2003-8-9 11:26:00 | 显示全部楼层
我觉得要有预览图生成还有一种方法
可以利用VBA和LISP结合在VB中调用LISP SETVAR函数
回复

使用道具 举报

15

主题

33

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
93
发表于 2003-8-9 11:30:00 | 显示全部楼层
不过只能通过命令行实现,有点笨的办法。不过可以一试
回复

使用道具 举报

34

主题

372

帖子

7

银币

中流砥柱

Rank: 25

铜币
508
发表于 2003-8-10 07:43:00 | 显示全部楼层
acedGetFileNavDialog函数是ARX中的一个全局函数,result参数是一个指向结构体的指针。在C++中,没有字符串这种类型,是用字符数组来实现的。
    我觉得你的参数了型还是有道理的,不过这个问题可能最好到官方网站去查资料了。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 20:10 , Processed in 1.726574 second(s), 86 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表