⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rs_fileio.cpp

📁 qcad2.05可用于windows和linux的源码
💻 CPP
字号:
/****************************************************************************** $Id: rs_fileio.cpp 1938 2004-12-09 23:09:53Z andrew $**** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.**** This file is part of the qcadlib Library project.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** Licensees holding valid qcadlib Professional Edition licenses may use ** this file in accordance with the qcadlib Commercial License** Agreement provided with the Software.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.ribbonsoft.com for further details.**** Contact info@ribbonsoft.com if any conditions of this licensing are** not clear to you.************************************************************************/#include "rs_fileio.h"#include "rs_filtercxf.h"#include "rs_filterdxf.h"#include "rs_filterdxf1.h"#include "rs_fileinfo.h"#include "rs_textstream.h"RS_FileIO* RS_FileIO::uniqueInstance = NULL;/** * Calls the import method of the filter responsible for the format * of the given file. * * @param graphic The container to which we will add *        entities. Usually that's an RS_Graphic entity but *        it can also be a polyline, text, ... * @param file Path and name of the file to import. */bool RS_FileIO::fileImport(RS_Graphic& graphic, const RS_String& file, 		RS2::FormatType type) {    RS_DEBUG->print("Trying to import file '%s'...", file.latin1());    RS_FilterInterface* filter = NULL;	RS2::FormatType t;	if (type == RS2::FormatUnknown) {		t = detectFormat(file);	}	else {		t = type;	}	filter = getImportFilter(t);	/*	switch (t) {	case RS2::FormatCXF:        filter = new RS_FilterCXF(graphic);		break;	case RS2::FormatDXF1:        filter = new RS_FilterDXF1(graphic);		break;	case RS2::FormatDXF:        filter = new RS_FilterDXF(graphic);		break;	default:		break;    }	*/    if (filter!=NULL) {        return filter->fileImport(graphic, file, t);    }	else {		RS_DEBUG->print(RS_Debug::D_WARNING,			"RS_FileIO::fileImport: failed to import file: %s", 			file.latin1());	}		return false;}/** * Calls the export method of the object responsible for the format * of the given file. * * @param file Path and name of the file to import. */bool RS_FileIO::fileExport(RS_Graphic& graphic, const RS_String& file,		RS2::FormatType type) {    RS_DEBUG->print("RS_FileIO::fileExport");    //RS_DEBUG->print("Trying to export file '%s'...", file.latin1());	if (type==RS2::FormatUnknown) {    	RS_String extension;    	extension = RS_FileInfo(file).extension(false).lower();		if (extension=="dxf") {			type = RS2::FormatDXF;		}		else if (extension=="cxf") {			type = RS2::FormatCXF;		}	}	RS_FilterInterface* filter = getExportFilter(type);	if (filter!=NULL) {		return filter->fileExport(graphic, file, type);	}	    RS_DEBUG->print("RS_FileIO::fileExport: no filter found");	return false;}/** * Detects and returns the file format of the given file. */RS2::FormatType RS_FileIO::detectFormat(const RS_String& file) {    RS2::FormatType type = RS2::FormatUnknown;    RS_FileInfo f(file);    RS_String ext = f.extension(false).lower();    if (ext=="cxf") {        type = RS2::FormatCXF;    } else if (ext=="dxf") {        type = RS2::FormatDXF1;        RS_File f(file);        if (!f.open(IO_ReadOnly)) {            // Error opening file:            RS_DEBUG->print(RS_Debug::D_WARNING,				"RS_FileIO::detectFormat: Cannot open file: %s", file.latin1());            type = RS2::FormatUnknown;        } else {            RS_DEBUG->print("RS_FileIO::detectFormat: "				"Successfully opened DXF file: %s",                file.latin1());            RS_TextStream ts(&f);            RS_String line;            int c=0;            while (!f.atEnd() && ++c<100) {                line = ts.readLine();                if (line=="$ACADVER") {                    type = RS2::FormatDXF;                }				// very simple reduced DXF:                if (line=="ENTITIES" && c<10) {					type = RS2::FormatDXF;				}            }            f.close();        }    }    return type;}// EOF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -