找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 539|回复: 3

[原创]:关于在ARX程序中如何访问AutoCAD自动化接口的问题

[复制链接]
发表于 2002-10-25 12:58:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
大家看ARX库各个类的方法是不是头晕呢?AutoCAD的自动化接口提供了层次很好的访问接口,而且它提供的方法说不定ARX库还没有提供呢,比如将当前图形保存为位图的功能。下面是如何访问AutoCAD的自动化接口的示例代码:
先将AutoCAD的类型库acad.tlb引用进来
#import "acad.tlb" raw_interfaces_only, named_guids

                         CComPtr < AutoCAD::IAcadApplication >  spiAcadApplication;//指向AcadApplication的智能指针

                          HRESULT hRet(E_FAIL);
        CLSID AcAppClsID;

        hRet=::CLSIDFromProgID(L"AutoCAD.Application",&AcAppClsID);
        if(FAILED(hRet))
                return;
        CComPtr < IUnknown > spiUnknown=NULL;
        hRet=::GetActiveObject(AcAppClsID,NULL,&spiUnknown);
        if(FAILED(hRet))
                return;
        hRet=spiUnknown->QueryInterface(AutoCAD::IID_IAcadApplication,(LPVOID *)&spiAcadApplication);
        spiUnknown=NULL;
        if(SUCCEEDED(hRet))
        {
                VARIANT_BOOL bVisibleFlag;
                spiAcadApplication->get_Visible(&bVisibleFlag);
                if(bVisibleFlag==VARIANT_FALSE)
                        spiAcadApplication->put_Visible(VARIANT_TRUE);//让其可见
        }
        else
                spiAcadApplication=NULL;

得到spiAcadApplication
CComPtr< AutoCAD::IAcadDocuments > spiAcadDocuments=NULL;
spiAcadApplication->get_Documents(&spiAcadDocuments);
即可得到所有当前打开文档的指针了。

你不用担心其速度,因为AutoCAD的自动化接口是双接口,所以通过智能指针来访问效率是很高的,比VBA快多了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2002-10-25 13:00:50 | 显示全部楼层
奇怪,贴上去怎么丢东西了?CComPtr后面的<>内容都没有也,比如AutoCAD::IAcadApplication等?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-10-25 13:03:19 | 显示全部楼层
需要注意的是如果你的ARX在AutoCAD启动时自动加载,然后你在ARX模块的InitApplication函数中试图访问其自动化接口是不行的哟。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-1-2 11:00:12 | 显示全部楼层
自动化接口Automation(COM接口)并不太好用(功能不够强),CAD里面不少功能它根本实现不了(比如说倾斜标注等),而且交互功能不好;它的优势在于它做成的Dll可以直接在纯VC环境中使用(这点ARX不行)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-21 10:37 , Processed in 0.177665 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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