MickD 发表于 2009-4-20 05:29:15

从vb/a调用arx函数

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

MickD 发表于 2009-4-20 07:27:41

能否将ARX函数暴露于lisp,然后通过VBA hehe评估lisp。路易斯真的很擅长com,也许他能帮上忙;

MickD 发表于 2009-4-20 08:35:33

Mick,
这是我很久以前写的东西,我看起来我将其实现为一个ATL类(虽然这不是我记忆中的方式),但它可能会给你一些关于如何处理数组的线索。

MickD 发表于 2009-4-20 10:48:44


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

MickD 发表于 2009-4-20 16:27:11

谢谢大家
Chuck,我稍后会理解这一点,我真的试图避免COM,因为我以后可能会有64位问题,但据我所知,我仍然可以从vb/a调用dll…但我'我只推测最坏的情况,我会写id#039;s/handles到一个文件并从arx打开它,这应该可以避免这些问题。
干杯,
Mick。

MickD 发表于 2009-4-21 09:43:11


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

MickD 发表于 2009-4-21 16:13:57

谢谢你,路易斯
我可以将一个ATL对象添加到我的arx项目中以使其工作吗?或者我需要为一个包含idl文件的COM接口设置一个新项目吗?

MickD 发表于 2009-4-21 16:26:12


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

HRESULT GbPolyPT( VARIANT pt, BSTR LayerName, double dtol, short poltip, double areamin, short dirpolhor, LONG *objid);
我认为'是的,(记忆中)。。。。

MickD 发表于 2009-4-21 16:35:56

谢谢路易斯,我'我试试看。

MickD 发表于 2009-4-21 21:51:05

谢谢各位,我在创建启用COM的项目后添加了一个ATL对象,该对象可以很好地使用。干杯,Mick。
页: [1]
查看完整版本: 从vb/a调用arx函数