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

📄 rs_filterdxf.h

📁 qcad2.05可用于windows和linux的源码
💻 H
字号:
/****************************************************************************** $Id: rs_filterdxf.h 2399 2005-06-06 18:12:30Z 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.************************************************************************/#ifndef RS_FILTERDXF_H#define RS_FILTERDXF_H#include "rs_filterinterface.h"#include "rs_block.h"#include "rs_color.h"#include "rs_dict.h"#include "rs_dimension.h"#include "rs_hatch.h"#include "rs_insert.h"#include "rs_layer.h"#include "rs_layer.h"#include "rs_leader.h"#include "rs_polyline.h"#include "rs_spline.h"#include "rs_solid.h"#include "rs_text.h"#include "rs_image.h"#include "dl_creationinterface.h"#include "dl_dxf.h"class DL_WriterA;/** * This format filter class can import and export DXF files. * It depends on the dxflib library. * * @author Andrew Mustun */class RS_FilterDXF : public RS_FilterInterface, DL_CreationInterface {public:    RS_FilterDXF();    ~RS_FilterDXF();		/**	 * @return RS2::FormatDXF.	 */	//RS2::FormatType rtti() {	//	return RS2::FormatDXF;	//}	/*    virtual bool canImport(RS2::FormatType t) {		return (t==RS2::FormatDXF);	}	    virtual bool canExport(RS2::FormatType t) {		return (t==RS2::FormatDXF || t==RS2::FormatDXF12);	}*/    // Import:    virtual bool fileImport(RS_Graphic& g, const RS_String& file, RS2::FormatType /*type*/);    // Methods from DL_CreationInterface:    virtual void addLayer(const DL_LayerData& data);    virtual void addBlock(const DL_BlockData& data);    virtual void endBlock();    virtual void addPoint(const DL_PointData& data);    virtual void addLine(const DL_LineData& data);    virtual void addArc(const DL_ArcData& data);    virtual void addEllipse(const DL_EllipseData& data);    virtual void addCircle(const DL_CircleData& data);    virtual void addPolyline(const DL_PolylineData& data);    virtual void addVertex(const DL_VertexData& data);    virtual void addSpline(const DL_SplineData& data);    virtual void addKnot(const DL_KnotData&) {}    virtual void addControlPoint(const DL_ControlPointData& data);    virtual void addInsert(const DL_InsertData& data);    virtual void addTrace(const DL_TraceData& ) {}    virtual void addSolid(const DL_SolidData& ) {}    virtual void addMTextChunk(const char* text);    virtual void addMText(const DL_MTextData& data);    virtual void addText(const DL_TextData& data);    //virtual void addDimension(const DL_DimensionData& data);    RS_DimensionData convDimensionData(const DL_DimensionData& data);    virtual void addDimAlign(const DL_DimensionData& data,                             const DL_DimAlignedData& edata);    virtual void addDimLinear(const DL_DimensionData& data,                              const DL_DimLinearData& edata);    virtual void addDimRadial(const DL_DimensionData& data,                              const DL_DimRadialData& edata);    virtual void addDimDiametric(const DL_DimensionData& data,                                 const DL_DimDiametricData& edata);    virtual void addDimAngular(const DL_DimensionData& data,                               const DL_DimAngularData& edata);    virtual void addDimAngular3P(const DL_DimensionData& data,                                 const DL_DimAngular3PData& edata);    virtual void addLeader(const DL_LeaderData& data);    virtual void addLeaderVertex(const DL_LeaderVertexData& data);    virtual void addHatch(const DL_HatchData& data);    virtual void addHatchLoop(const DL_HatchLoopData& data);    virtual void addHatchEdge(const DL_HatchEdgeData& data);    virtual void addImage(const DL_ImageData& data);    virtual void linkImage(const DL_ImageDefData& data);    virtual void endEntity();    virtual void endSequence() {}    virtual void setVariableVector(const char* key,                                   double v1, double v2, double v3, int code);    virtual void setVariableString(const char* key, const char* value, int code);    virtual void setVariableInt(const char* key, int value, int code);    virtual void setVariableDouble(const char* key, double value, int code);    // Export:    virtual bool fileExport(RS_Graphic& g, const RS_String& file, RS2::FormatType type);    void writeVariables(DL_WriterA& dw);    void writeLayer(DL_WriterA& dw, RS_Layer* l);    void writeLineType(DL_WriterA& dw, RS2::LineType t);    void writeAppid(DL_WriterA& dw, const char* appid);    void writeBlock(DL_WriterA& dw, RS_Block* blk);    void writeEntity(DL_WriterA& dw, RS_Entity* e);    void writeEntity(DL_WriterA& dw, RS_Entity* e, const DL_Attributes& attrib);	void writePoint(DL_WriterA& dw, RS_Point* p, const DL_Attributes& attrib);	void writeLine(DL_WriterA& dw, RS_Line* l, const DL_Attributes& attrib);	void writePolyline(DL_WriterA& dw, 		RS_Polyline* l, const DL_Attributes& attrib);	void writeSpline(DL_WriterA& dw, 		RS_Spline* s, const DL_Attributes& attrib);	void writeCircle(DL_WriterA& dw, RS_Circle* c, const DL_Attributes& attrib);	void writeArc(DL_WriterA& dw, RS_Arc* a, const DL_Attributes& attrib);	void writeEllipse(DL_WriterA& dw, RS_Ellipse* s, const DL_Attributes& attrib);	void writeInsert(DL_WriterA& dw, RS_Insert* i, const DL_Attributes& attrib);	void writeText(DL_WriterA& dw, RS_Text* t, const DL_Attributes& attrib);	void writeDimension(DL_WriterA& dw, RS_Dimension* d, 		const DL_Attributes& attrib);	void writeLeader(DL_WriterA& dw, RS_Leader* l, const DL_Attributes& attrib);	void writeHatch(DL_WriterA& dw, RS_Hatch* h, const DL_Attributes& attrib);	void writeSolid(DL_WriterA& dw, RS_Solid* s, const DL_Attributes& attrib);	void writeImage(DL_WriterA& dw, RS_Image* i, const DL_Attributes& attrib);	void writeEntityContainer(DL_WriterA& dw, RS_EntityContainer* con, 		const DL_Attributes& attrib);	void writeAtomicEntities(DL_WriterA& dw, RS_EntityContainer* c, 		const DL_Attributes& attrib, RS2::ResolveLevel level);	    void writeImageDef(DL_WriterA& dw, RS_Image* i);    void setEntityAttributes(RS_Entity* entity, const DL_Attributes& attrib);    DL_Attributes getEntityAttributes(RS_Entity* entity);    static RS_String toDxfString(const RS_String& string);    static RS_String toNativeString(const RS_String& string);public:    RS_Pen attributesToPen(const DL_Attributes& attrib) const;    static RS_Color numberToColor(int num, bool comp=false);    static int colorToNumber(const RS_Color& col);    static RS2::LineType nameToLineType(const RS_String& name);    static RS_String lineTypeToName(RS2::LineType lineType);    //static RS_String lineTypeToDescription(RS2::LineType lineType);    static RS2::LineWidth numberToWidth(int num);    static int widthToNumber(RS2::LineWidth width);	static RS2::AngleFormat numberToAngleFormat(int num);	static int angleFormatToNumber(RS2::AngleFormat af);	static RS2::Unit numberToUnit(int num);	static int unitToNumber(RS2::Unit unit);		static bool isVariableTwoDimensional(const RS_String& var);private:    /** Pointer to the graphic we currently operate on. */    RS_Graphic* graphic;	/** File name. Used to find out the full path of images. */	RS_String file;    /** string for concatinating text parts of MTEXT entities. */    RS_String mtext;    /** Pointer to current polyline entity we're adding vertices to. */    RS_Polyline* polyline;    /** Pointer to current spline entity we're adding control points to. */    RS_Spline* spline;    /** Pointer to current leader entity we're adding vertices to. */    RS_Leader* leader;    /** Pointer to current entity container (either block or graphic) */    RS_EntityContainer* currentContainer;    /** Pointer to current hatch or NULL. */    RS_Hatch* hatch;    /** Pointer to current hatch loop or NULL. */    RS_EntityContainer* hatchLoop;    DL_Dxf dxf;    RS_VariableDict variables;};#endif

⌨️ 快捷键说明

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