保存dwg文件
static BOOL SaveDwg(MXDRAWOCXHANDLE hOcx, LPCTSTR pszDwgFilePath, LPCTSTR wszPassword = NULL, McDb::McDbDwgVersion version = McDb::kDHL_1015, byte** ppRetData = NULL, long* pRetDataLength = NULL);
参数 |
说明 |
MXDRAWOCXHANDLE hOcx |
控件句柄 |
LPCTSTR pszDwgFilePath |
保存的DWG文件绝对路径,如果扩展名为DXF文件,则保存为DXF文件., 扩展名为DWF文件,则保存为DWF文件, 扩展名为PDF文件,则保存为PDF文件, 扩展名为JPG文件,则保存为JPG文件, 扩展名为BMP文件,则保存为BMP文件, |
LPCTSTR wszPassword = NULL |
DWG文件的密码,kDHL_1024版式本可以设置密码 |
成功返回TRUE
保存dwg文件 例如:sampleedit.sln中的保存dwg文件例程代码
void CTestDlg::OnBnClickedSavedwgButton() { // TODO: 在此添加控件通知处理程序代码 CFileDialog openDlg(FALSE,_T("dwg"),NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("dwg(*.dwg) | *.dwg|dxf(*.dxf) | *.dxf||"),this); CString sAppPath = CTestDlgApp::GetAppPath(); CString sInitialDir = AfxGetApp()->GetProfileString(_T("MxDWGTestDlg"),_T("SaveDwgDir"),sAppPath ); CString sFileName; openDlg.m_ofn.lpstrInitialDir= sInitialDir; //设置打开文件的缺省路径 if(openDlg.DoModal() == IDOK) { sFileName = openDlg.GetPathName(); } else { return; } int iFindPos = sFileName.ReverseFind('\'); if(iFindPos >= 0) { CString sPath = sFileName.Left(iFindPos + 1); AfxGetApp()->WriteProfileString(_T("MxDWGTestDlg"),_T("SaveDwgDir"),sPath); } if(!MxDraw::SaveDwg(m_hDrawOcx,sFileName) ) { CString sError; if(MxDraw::GetLastError().IsEmpty() ) sError = _T("保存dwg文件失败!"); else sError.Format(_T("保存dwg文件失败!原因为:%s"),MxDraw::GetLastError()); AfxMessageBox(sError); } else { AfxMessageBox(_T("保存成功")); } }
DWG文件的版本,默认值kDHL_1015是AutoCAD2002格式 vAC15 = kDHL_1015, // R15 (2000) release 取值:23 vAC18 = kDHL_1800, // R18 (2004) release 取值:25 vAC21 = kDHL_1021, // R21 (2007) release 取值:27 vAC24 = kDHL_1024, // R24 (2010) release 取值:29 ppRetData - 把数据保存到内存中,返回的数据需要free函数释放。 pRetDataLength - 返回数据的长度