CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

相关分类

通过 ActiveX 自动化公开 ObjectARX 函数

2022-12-31 12:28| 发布者: admin| 查看: 303| 评论: 0|来自: AutoCAD

在最简单的情况下,COM 包装类将公开一个或多个您希望提供给使用 VBA 等编程环境的开发人员的函数。同样,您可以选择在 COM DLL 中包含 ObjectARX 代码,或者为 COM 和 ObjectARX 组件创建单独的 DLL。以下各节提供了解释所需过程的过程。

为 ObjectARX 应用程序创建自动化包装项目

  1. 根据设置ATL 项目文件中的步骤设置项目
  2. 在生成的 COM 类头文件中,添加以下代码:
#include "dbmain.h"
#include "acad24.h"
#include "axtempl.h" // main ActiveX Automation template                      // header file

通过将以下声明添加到其派生列表的末尾来更改 COM 类的派生:

public IRetrieveApplicationImpl

将以下条目添加到:COM_MAP

COM_INTERFACE_ENTRY(IRetrieveApplication)

在 IDL 文件中,在 and 之后添加以下代码:importlib("stdole32.tlb")importlib("stdole2.tlb")

importlib("acax24enu.tlb"); // revise the path to match your
                            // own AutoCAD installation

请确保替换与 AutoCAD 安装匹配的路径。

设置包装器后,您需要提供接口以通过 ActiveX 公开您的功能。

通过 ActiveX 公开功能

通过从“类视图接口”快捷菜单中选择“添加方法”或“添加属性”,将所需的 ActiveX 方法和属性添加到包装类中。在 COM 类 CPPfile 中,ATL 生成类似于以下内容的存根:

STDMETHODIMP CAsdkSquareWrapper::get_Number(short *pVal)
{
}
STDMETHODIMP CAsdkSquareWrapper::put_Number(short newVal)
{
}

通常,这些成员将用于包装对 ObjectARX 应用程序的调用。

将实现代码添加到新的 COM 类方法和属性。下面的示例演示一个示例属性实现:

STDMETHODIMP CAsdkSquareWrapper::get_Number(short *pVal)
{
    // TODO: Add your implementation code here
    AcDbObjectPointer<AsdkSquare> pSq(m_objId, AcDb::kForRead);
    if (pSq.openStatus() != Acad::eOk)
            return E_ACCESSDENIED;          
    int id;
    pSq->squareId(id);
    *pVal = id;
    return S_OK;
}
STDMETHODIMP CAsdkSquareWrapper::put_Number(short newVal)
{
    AcAxDocLock docLock(m_objId, AcAxDocLock::kNormal);
    if(docLock.lockStatus() != Acad::eOk)
        return E_ACCESSDENIED;
    AcDbObjectPointer<AsdkSquare> pSq(m_objId, AcDb::kForWrite);
    if (pSq.openStatus() != Acad::eOk)
        return E_ACCESSDENIED;          
    pSq->setSquareId(newVal);
    return S_OK;
}

根据生成和注册 COM DLL 中的步骤生成和注册应用程序。


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 13:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部