马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 rwss009 于 2020-7-23 09:13 编辑
继解决了块表记录问题后,我遇到了新的问题。。。
迫不得已,我还得在晓东CAD中寻求各位大佬的帮助!
言归正传,说明一下需求。我用arx代码操作打开dwg文件到cad中,这方面的代码很多,但基本都是创建一个命令后,在cad中输入命令,然后打开文件的。如下:
 - static void myCmdOpenyy(void)
- {
- // Add your code for command nmdsopenfile.openyy here
- string str = "D:\\dwg_file\\any.dwg";
- CString pData = str.c_str();
- Acad::ErrorStatus es;
- es = acDocManager->appContextOpenDocument(pData);
- }
很简单的代码,就是为了加载arx文件后,输入命令openyy,在cad里打开名为any.dwg的文件。但此时会报错,es返回值为eNotApplicable,这时需要修改注册该命令的代码:
将
 - ACED_ARXCOMMAND_ENTRY_AUTO(CopenfileApp, nmdsopenfile, openyy, openyy, ACRX_CMD_MODAL, NULL)
修改为:
 - ACED_ARXCOMMAND_ENTRY_AUTO(CopenfileApp, nmdsopenfile, openyy, openyy, ACRX_CMD_SESSION, NULL)
也就是把ACRX_CMD_MODAL改为ACRX_CMD_SESSION。再一运行,any.dwg成功被打开。
但是!!!!!
我现在的程序,是不注册命令的,我程序是在加载arx时,新建一个线程,程序是在这个线程里运行的。而不注册命令,意味着我无法把上述参数修改为ACRX_CMD_SESSION。果然程序在运行时,执行到这里:
 - Acad::ErrorStatus es = acDocManager->appContextOpenDocument(filepath);
- //filepath即为dwg文件路径加名称
es的返回值为eNotApplicable。
请教各位大佬,这里要怎么弄,才能把我的程序设置为如ACRX_CMD_SESSION这样,能在cad中打开dwg文件呢?
|