乐筑天下

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

我一直都是用vb作autocad的ActiveX开发,还不会用vc作ActiveX开发

[复制链接]

12

主题

28

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2002-12-11 00:03:00 | 显示全部楼层 |阅读模式
ActiveX开发,关键是获取AutoCAD的实例对象,在获取其实例对象之后,余下来的工作就是应用程序本身应该实现的功能。
使用Visual C++来开发ActiveX程序,与使用VB应该说是大同小异的。以下给你一个用QureyInterface()方法获取ACAD 2000的实例对象的函数,你可以将它添加到你的控件事件代码中去。
首先要保证你的工程引用以下的库文件:
acad15.lib,rxapi.lib,acedapi.lib,acrx15.lib,acutil15.lib并忽略msvcrtd.lib
以下是代码:
#include
#include
void GetAcadInstance(void)
{
  AutoCAD::IAcadApplication *pCad;//首先声明一个ACAD应用程序实例指针
  HRESULT hr=NOERROR;  //C++结果句柄
  CLSID slcid;         //C++类ID
  LPUNKNOWN pUnk=NULL;
  LPDISPATCH pAcadDisplay=NULL;
  hr=::CLSIDFromProgID("AutoCAD.Application",&clsid);
  /*若已启动ACAD窗口实例,将ACAD类ID送到clsid指向的地址,若未启动ACAD,则系统将启动ACAD,并将ACAD类ID送到clsid指向的地址*/
  if (SUCEEDED(hr))   
  {
     if(::GetActiveObject(clsid,NULL,&pUnk)==S_OK)
     {
        if(pUnk->QueryInterface(IID_IDispatch,
              (LPVOID*)& pAcadDisplay)!=S_OK)
           return;
        pUnk->release();
     }
  }
  if(SUCEEDED(pAcadDisplay->QueryInterface(AutoCAD::
         IID_IAcadApplication,(void**)& pCad)))
     pCad->put_Visible(true);  //显示ACAD窗口
  else
  {
    acutPrinf("\nQueryInterface出错!");
    return;
  }
}
回复

使用道具 举报

14

主题

230

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
286
发表于 2002-12-11 14:41:00 | 显示全部楼层
你好!我是CAD的初学者,因为工作的需要要进行CAD的开发,现在遇到了问题,想请教一下:我想在以有的图框中填加图形,怎样定义坐标点?比如说图框中画了一个平面直角坐标系,新画的图要根据这个坐标来画,比如画入过(3,4)和(7,8)点的直线,该怎么画?我用的是VB调用AUTOCAD2002.谢谢!!!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-5-28 03:44 , Processed in 0.826211 second(s), 56 queries .

© 2020-2025 乐筑天下

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