乐筑天下

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

一个使用ActiveX自动化技术读写DWG文件的程序

[复制链接]

11

主题

15

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
59
发表于 2004-4-5 15:42:00 | 显示全部楼层 |阅读模式
斑竹,请救!在VC环境下我用OLE自动化技术来读写的DWG文件,我完全按照别人文章的程序建立程序,但是出现AutoCAD无法启动的错误.请问这是什么原因?
其读写DWG文件的函数如下:
void CAcadRWDwgDoc::OnRwDwg()
{
                                // TODO: Add your command handler code here
                                VARIANT startPoint,endPoint;
                                SAFEARRAY* start = NULL;
                                SAFEARRAY* end = NULL;
                                IAcadApplication acad;
                                COleVariant                covTrue((short)TRUE),
                                                                                                                                 covFalse((short)FALSE),
                                                                                                                                 covOne((long)0),
                                                                                                                                 covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
                                //启动Autocad应用软件
                                if(!acad.CreateDispatch("AutoCAD.Application.15"))
                                {
                                                                AfxMessageBox("Autocad 启动失败");                                                               
                                                                return;
                                }
                                acad.SetVisible(TRUE);
                                IAcadDocuments docs = acad.GetDocuments();
                                long total = docs.GetCount();
                                IAcadDocument doc = docs.Open("C:\\Documents and Settings\\Administrator\\MyDocuments\\Drawing1",covFalse);                                                                                                                                                                                                                                                                 
                                IAcadModelSpace mSpace = doc.GetModelSpace();
                                long entitiesNum = mSpace.GetCount();
                                if(entitiesNum >= 1)
                                {
                                                                IAcadEntity entity = mSpace.Item(covOne);
                                                                CString name = entity.GetObjectName();
                                                                if(name == "AcDbLine"){
                                                                                                IAcadLine                line = mSpace.Item(covOne);
                                                                                                startPoint = line.GetStartPoint();
                                                                                                endPoint = line.GetEndPoint();
                                                                }
                                }
                                start = PointToSafeArrayB(1,1,0);
                                startPoint.vt = VT_R8|VT_ARRAY;
                                startPoint.parray = start;
                                end = PointToSafeArrayA(100,200,0);
                                endPoint.vt = VT_R8|VT_ARRAY;
                                endPoint.parray = end;
                                mSpace.AddLine(startPoint,endPoint);
                                mSpace.AddCircle(endPoint,60);
                                mSpace.AddText("I LOVE YOU AUTOCAD",endPoint,100);
                                SafeArrayDestroy(start);
                                SafeArrayDestroy(end);
                                COleVariant name("C:\\Documents and Settings\\Administrator\\My Documents\\Drawing1");
                                doc.Close(covTrue,name);
                                acad.Quit();
                               
}
其中当程序执行到
if(!acad.CreateDispatch("AutoCAD.Application.15"))
                                {
                                                                AfxMessageBox("Autocad 启动失败");                                                               
                                                                return;
                                }
这里时,编译指出不能找到指定的文件,另外,在注册表HKEY_CLASSES_ROOT中里找不到AutoCAD
组件的DLL文件名称。我想AutoCAD无法启动可能跟这个有关系?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 18:03 , Processed in 0.313226 second(s), 54 queries .

© 2020-2025 乐筑天下

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