找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1043|回复: 9

[ARX程序]:请教:怎样用VC驱动运行AutoCAD,并作出简单的图形?

[复制链接]
发表于 2003-10-19 23:16:53 | 显示全部楼层 |阅读模式

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

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

×
请教:怎样用VC直接驱动运行AutoCAD,并作出简单的图形?不是用ARX.用VB实现的方法到处都有介绍,可是很少见到有用VC这样做的,请大侠指教.另: ARX只有在AutoCAD中才能调用吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-4-9 00:50:16 | 显示全部楼层
you can write command code as   "shellexcute()",
It's use can index MSDA
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-9 09:05:34 | 显示全部楼层
没有必要直接读写AutoCAD文件,这相当于自行编写一个AutoCAD,AutoCAD本身就已经是一个强大的平台。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-9 10:48:12 | 显示全部楼层
最简单的方法:
在自己的程序中直接生成 scr 批处理文件。:>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-9 11:07:37 | 显示全部楼层
可以向autocad发送消息,使它执行命令进行画图
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-9 16:37:41 | 显示全部楼层
arx 只能在cad中调用,,arx是一个动态连接库
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-10 16:32:23 | 显示全部楼层
用ARX模拟VB的行为,通过ACAD的自动化接口,访问ACAD的COM模型,可以用类似VB的方法控制ACAD
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-15 23:51:12 | 显示全部楼层
VC中不用ARX驱动ACAD方法主要有两种,以下为本人2000年一篇论文摘录,Acad2000以后各版本的类型库名称有变动:
Visual C++ 开发ActiveX Automation应用程序一般可采用两条途径,但都要用AutoCAD 2000提供的类型库文件(Acad.tlb,该文件和Acad.exe文件同在一个目录中)。这里以VC6.0为例,介绍利用MFC提供的类COleDispatchDriver驱动AutoCAD的方法:
创建一个基于对话框的MFC AppVizard  [exe]新工程AcadDrv,在向导选项中全部采用默认,在类CAcadDrvApp的成员函数InitInstance()的函数体开始处增加一句“AfxOleInit();”,然后启动ClassWizard,选择[add class]按钮,接着选[from type library]菜单项,找到Acad.tlb文件并选中,弹出对话框的列表框中列出了所有AutoCAD ActiveX Automation对象(在C++中具体表现为类),可以选择要用到的类。产生的类将存入文件Acad.h和Acad.cpp中,打开Acad.h可以看到对象的属性和方法均由类的成员函数表示所有对象类均从COleDispatchDriver派生。下面一段代码显示了启动Acad2000的一般步骤。
LPDISPATCH pDisp;  LPUNKNOWN pUnk;  CLSID clsid;       //定义变量
::CLSIDFromProgID(L"AutoCAD.Application.15",&clsid);    //获取Acad2000的类ID
if(::GetActiveObject(clsid,NULL,&pUnk) == S_OK){    //判断ACAD是否已启动
if (pUnk->QueryInterface(IID_IDispatch,(void**) &pDisp)== S_OK){
m_app.AttachDispatch(pDisp);  //建立与AutoCAD的连接,m_app为IacadApplication的实例
pUnk->Release();
}
}
else if (!m_app.CreateDispatch(clsid)){  //启动AutoCAD2000
AfxMessageBox("Acad 2000 not found");
return;
}
m_app.SetVisible(TRUE); //使AutoCAD2000窗口可见

        VC++中开发Automation控制程序另一种方法是采用新的#import编译指令,产生两个文件:Acad.tlh和Acad.tli。TLH文件包含驱动类的声明和智能指针(smart pointer),TLI文件包含了驱动类的内联实现。同上建立新的工程,可以将#import语句放在AfxStd.h文件中:
#include <afxdisp.h>
#import “c:\program files\acad2000\acad.tlb”  no_namespace
……
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-16 22:24:56 | 显示全部楼层
使用VC通过COM接口驱动ACAD是"杀鸡用牛刀",本来自动化接口就是为了VB之类的语言使用,VB读入类型库信息后在内部模拟出C++的vtb,通过IDispatch或者双重接口访问ACAD对象。VC的工作主要是在ARX中实现DBX对象的COM包装对象,每当ACAD接受到来自外部的请求或者OPM的请求,就根据创建对象的类名在注册表中查找包装对象的GUID,加载了COM对象后,建立COM对象和ARX对象之间的联系,COM对象中保存了DBX对象的ID,这样通过COM的编辑访问名利就传到了DBX对象中,而DBX对象的临时反应器中保存了COM对象的IUnknown,当DBX对象变动时通过COM和回调接口传递到外部。ARX帮助文件详细描述了该细节和ATL的实现方法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-12 09:52:33 | 显示全部楼层
真是深奥啊,看了半天,头晕
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 11:41 , Processed in 0.191330 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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