1 CAcadApplication cadApp; 2 CAcadDocument cadDoc; 3 CAcadDocuments cadDocs; 4 5 CLSID clsid; 6 HRESULT h; 7 CString str; 8 h = ::CLSIDFromProgID(L"AutoCAD.Application",&clsid); 9 if(FAILED(h)) 10 { 11 MessageBox("计算机没有安装AUTOCAD软件。", "警告", MB_OK|MB_ICONWARNING); 12 return; 13 } 14 IUnknown *pUnknown=NULL; 15 h = ::GetActiveObject(clsid,NULL,&pUnknown); //查找是否有AutoCad程序在运行 16 if(FAILED(h)) 17 { 18 h = cadApp.CreateDispatch(clsid); 19 if(FAILED(h)) 20 { 21 MessageBox("AutoCAD程序打开失败,请检查你的程序是否安装好。", "警告"); 22 return; 23 } 24 MessageBox("恭喜你,AutoCAD程序打开成功", "成功提示"); 25 } 26 else 27 { 28 try 29 { 30 h=pUnknown->QueryInterface(IID_IDispatch,(LPVOID *)&cadApp); //获得已经打开的AutoCAD程序 31 if(FAILED(h)) 32 throw(_T("没有取得IDispatchPtr")); 33 pUnknown->Release(); 34 pUnknown=NULL; 35 } 36 catch(LPCTSTR lpErr) 37 { 38 MessageBox(lpErr, "警告", MB_ICONWARNING|MB_OK); 39 return ; 40 } 41 MessageBox("AutoCAD程序已经打开。", "警告", MB_OKCANCEL); 42 } 43 44 cadDocs = cadApp.get_Documents(); //获得文档集 45 CComVariant t(true),f(false); 46 cadDocs.Open(LPCTSTR("D:\\circle.dwg"),f,t); //打开文档 47 cadDoc = cadApp.get_ActiveDocument(); //获得文档 48 49 CAcadLayouts cadLayouts = cadDoc.get_Layouts(); //定义布局集 50 CAcadLayout cadLayout = cadLayouts.Add("jpglayout"); //添加一个布局 51 cadLayout = cadDoc.get_ActiveLayout(); //获得当前布局 52 CAcadPlotConfigurations cadConfigs; 定义打印配置集 53 VARIANT modelType ; 54 modelType.vt = VT_BOOL; 55 modelType.boolVal = true; 56 CAcadPlotConfiguration cadConfig = cadConfigs.Add("jpg",modelType);//定义打印设置 57 cadConfig.put_PaperUnits(1); //设置打印纸张度量单位 58 cadConfig.put_PlotWithPlotStyles(true); //定义打印风格 59 cadConfig.put_StyleSheet("acad.ctb");//打印颜色 60 cadConfig.put_ConfigName("DWG To PDF.pc3"); //打印机名字 61 cadConfig.put_UseStandardScale(true); //打印比例 62 cadConfig.put_StandardScale(cadLayout.get_StandardScale());//打印缩放比例 63 cadConfig.put_PlotType(cadLayout.get_PlotType()); 64 cadConfig.put_CenterPlot(true); 65 CAcadPlot cadPlot = cadDoc.get_Plot();; 66 VARIANT config ; 67 config.vt = VT_LPSTR; 68 config.pcVal = "DWG To PDFpc3"; 69 cadPlot.PlotToFile("C:\\test.pdf",config);//输出目录 70 71 cadApp.Quit(); 72 cadConfig.ReleaseDispatch(); 73 cadConfigs.ReleaseDispatch(); 74 cadDoc.ReleaseDispatch(); 75 cadDocs.ReleaseDispatch();
我是使用mfc导入AutoCAD的类库来进行操作AutoCAD,需要打开一个文件,然后了利用再带的虚拟打印机打印出pdf文件。但是遇到很多中断,一直没能解决,希望得到各位的指导!先谢谢了!
从设置打印纸张度量单位就开始有中断,注释点后,后面每一句都有中断,还都一样...
SCODE sc = m_lpDispatch->Invoke(dwDispID, IID_NULL, 0, wFlags,&dispparams, pvarResult, &excepInfo, &nArgErr);
都是这一句,“0x5B404A10 (mfc110d.dll) (autocadSave.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0xCCCCCCCC 时发生访问冲突。”
都快烦死了,因为问题显示不在我写的代码里面,而是后台代码,我是真心看不懂啊,向大家请教了!
换了一种com导入头文件的方式,自己解决了...
可以说一下具体的解决方案吗?谢啦~O(∩_∩)O