乐筑天下

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

从vb/a调用arx函数

[复制链接]

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-4-20 05:29:15 | 显示全部楼层 |阅读模式
大家好,我想从vb或vba调用一个arx函数,并将一个对象ID或句柄数组作为参数传递,这是可能的还是有其他方法可以做到这一点
此处'这是我到目前为止所拥有的,虽然很粗糙,但应该能让你了解我'm之后
[代码0),arx函数sig为-
void DCSMoveObjects(AcDbObjectIdArray*id)
从arx(dll)导出并进行测试,可以在没有arg的情况下调用;但那是#039;它对我的需求不是很有用,只是用于测试。谢谢。米克。我知道我可以在arx中进行sset,但我可能需要获得id;来自用户选择以外的其他来源。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-4-20 07:27:41 | 显示全部楼层
能否将ARX函数暴露于lisp,然后通过VBA hehe评估lisp。路易斯真的很擅长com,也许他能帮上忙;
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-4-20 08:35:33 | 显示全部楼层
Mick,
这是我很久以前写的东西,我看起来我将其实现为一个ATL类(虽然这不是我记忆中的方式),但它可能会给你一些关于如何处理数组的线索。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-4-20 10:48:44 | 显示全部楼层

我可能,今天晚些时候可以写点东西(在ATL中,但我看到Chuck已经发布了一些东西)让我知道……但今天,我刚开始我的新工作,所以我将只阅读什么'这里发生了什么。。。。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-4-20 16:27:11 | 显示全部楼层
谢谢大家
Chuck,我稍后会理解这一点,我真的试图避免COM,因为我以后可能会有64位问题,但据我所知,我仍然可以从vb/a调用dll…但我'我只推测最坏的情况,我会写id#039;s/handles到一个文件并从arx打开它,这应该可以避免这些问题。
干杯,
Mick。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-4-21 09:43:11 | 显示全部楼层

您好,Mick,这里是一个示例,有两个函数,如果您需要Visual Studio ATL解决方案示例,请告诉我。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-4-21 16:13:57 | 显示全部楼层
谢谢你,路易斯
我可以将一个ATL对象添加到我的arx项目中以使其工作吗?或者我需要为一个包含idl文件的COM接口设置一个新项目吗?
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-4-21 16:26:12 | 显示全部楼层

这是我要做的,以防万一…
因此,我从来没有使用过arx向导,我使用VS->添加类->ATL简单对象->用类名填写表单->在support下选择ISupportErrorInfo,然后,arx向导(对我来说)也无法添加任何新方法,因此我只需转到IDispatch下的idl文件,手动放置我的方法调用(就像我也为我的函数调用做的一样,我上一个示例中的调用):
  1. [id(1), helpstring("method GbPolySS")]
  2. HRESULT GbPolySS([in] VARIANT ids, [in] BSTR LayerName, [in] BSTR LayerNameOut, [in] double dtol, [in] short poltip, [in] double areamin, [in] short inpol, [in] short outpol, [in] short dirpolhor, [out] VARIANT *objids);
  3. [id(2), helpstring("method GbPolyPT")]
  4. HRESULT GbPolyPT([in] VARIANT pt, [in] BSTR LayerName, [in] double dtol, [in] short poltip, [in] double areamin, [in] short dirpolhor, [out] LONG *objid);
我认为'是的,(记忆中)。。。。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-4-21 16:35:56 | 显示全部楼层
谢谢路易斯,我'我试试看。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2009-4-21 21:51:05 | 显示全部楼层
谢谢各位,我在创建启用COM的项目后添加了一个ATL对象,该对象可以很好地使用。干杯,Mick。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-2 06:55 , Processed in 0.758036 second(s), 83 queries .

© 2020-2025 乐筑天下

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