ObjectARX如何打开一个dwg文件

一 ObjectARX打开文件的几种方式

目前,发现在ARX打开文件的三种方式:

  1. Acad::ErrorStatus acedSyncFileOpen(const ACHAR * pszFileToOpen, const wchar_t* wszPassword = NULL);
    这个函数要求CAD为单文档模式、不要求命令处于应用程序上下文。SDI为CAD中指示是否为单文档模式的系统变量。
	int iSys;
	resbuf rb;
	acedGetVar(_T("SDI"), &rb);
	if (rb.restype == RTSHORT)
		iSys = rb.resval.rint;

	if (iSys)
	{
		acedSyncFileOpen(psz);
	}
  1. virtual Acad::ErrorStatus appContextOpenDocument(const ACHAR * pszDrawingName) = 0;
    该函数必须在程序上下文、多文档模式下打开文件。
if (acDocManager->isApplicationContext()){
	acDocManager->appContextOpenDocument((const char *)pData);
}
  1. acDocManager->openDocument();
    使用“选择文件”对话框选择所要打开的文件,单文档或者多文档模式均可,不要求命令处于应用程序上下文中。

二 R18平台打开文件的特殊处理

AutoCAD 2010中的bug比较多,一不小心就踩坑。在R18平台打开文件时要特别注意一个问题:如果在刚刚打开CAD后,会生成一个默认的drawing1文档,此时如果在程序中用appContextOpenDocument接口打开别的文档,这个默认的文档会被替换成新的文档;但是(重点来了),原来的drawing1从CAD的菜单栏的窗口中还是可以看到,如果此时你从下拉菜单中点击它,再点击保存,程序可能会崩溃。
解决办法:在程序将要打开文档之前,在当前文档数据库中插入一个实体再删除,这样,默认的drawing1会保留下来,再打开别的文档也不会被替换,此时再点击保存也不会崩溃。

ObjetArx2004+VS2002前提:安装好以上两种软件创建步骤:1. 新建项目 Visual C++项目->选择ObjectARX/DBX/OMF->键入"Demo"项目名称 ->MFC Support中勾选Enxtension Dll->using MFC Shared DLL,其他取默认值2. 删除文件 在“解决方案资源管理器”中删除向导生成的acrxEntryPoint.cpp,DocData.cpp,DocData.h文件 同时可以在文件夹下彻底删除文件,后续步骤并不需要用到这3个文件3. 添加Demo.h文件 同时在Demo.h文件中加入代码 #pragma once #include"resource.h"3. 创建一个普通对话框,基于CDialog类,并生成类CDlgDemo4. 打开Demo.cpp文件,对这个文件要进行比较多的操作 ·注释掉"AFX_EXTENSION_MODULE DemoExtDLL ={ NULL, NULL };"这一句 ·添加#include "DlgDemo.h"头文件 ·添加函数DlgDemo(),具体见附件源文件代码 ·添加initApp(),unloadApp() ·注释掉DllMain中的"_hdllInstance =hInstance ;" ·在文件的末尾添加acrxEntryPoint() 这里需要提醒一下的是关于AC_IMPLEMENT_EXTENSION_MODULE(DemoDLL)的使用 涉及到了Dll资源的使用,所以DemoDLL在这里相当于一个连接AutoCAD和MFC的纽带, 保持整个Demo.cpp中,DemoDLL的一致5. 项目设置 菜单"工具"->"选项"->"项目"->"包含文件"->添加ObjectARX2004的inc目录 ->"库文件"->添加ObjectARX2004的lib目录6. 生成解决方案 一切pass,有2个警告rxapi.lib(libinit.obj) : warning LNK4099: 未发现 PDB“msvc.pdb” acedapi.lib(acedstub.obj) : warning LNK4099: 未发现 PDB“corehdr.pdb” 不用去管它,ObjectARX开发文档已经说明了这个问题的存在,不影响使用#至此为止,我们已经生成了MarkDemo.arx,在Debug目录下可以找到,下面将继续介绍如何在 AutoCAD2004菜单中自动加载Demo对话框
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Santiago

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值