QCAD
Open Source 2D CAD
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DL_Dxf Class Reference

Reading and writing of DXF files. More...

#include <dl_dxf.h>

List of all members.

Public Member Functions

void add3dFace (DL_CreationInterface *creationInterface)
 Adds a 3dface entity that was read from the file via the creation interface.
void addArc (DL_CreationInterface *creationInterface)
 Adds an arc entity that was read from the file via the creation interface.
void addAttrib (DL_CreationInterface *creationInterface)
 Adds an attrib entity that was read from the file via the creation interface.
void addBlock (DL_CreationInterface *creationInterface)
 Adds a block that was read from the file via the creation interface.
void addCircle (DL_CreationInterface *creationInterface)
 Adds a circle entity that was read from the file via the creation interface.
void addComment (DL_CreationInterface *creationInterface, const std::string &comment)
 Adds a comment from the DXF file.
void addDictionary (DL_CreationInterface *creationInterface)
void addDictionaryEntry (DL_CreationInterface *creationInterface)
void addDimAligned (DL_CreationInterface *creationInterface)
 Adds an aligned dimension entity that was read from the file via the creation interface.
void addDimAngular (DL_CreationInterface *creationInterface)
 Adds an angular dimension entity that was read from the file via the creation interface.
void addDimAngular3P (DL_CreationInterface *creationInterface)
 Adds an angular dimension entity that was read from the file via the creation interface.
void addDimDiametric (DL_CreationInterface *creationInterface)
 Adds a diametric dimension entity that was read from the file via the creation interface.
void addDimLinear (DL_CreationInterface *creationInterface)
 Adds a linear dimension entity that was read from the file via the creation interface.
void addDimOrdinate (DL_CreationInterface *creationInterface)
 Adds an ordinate dimension entity that was read from the file via the creation interface.
void addDimRadial (DL_CreationInterface *creationInterface)
 Adds a radial dimension entity that was read from the file via the creation interface.
void addEllipse (DL_CreationInterface *creationInterface)
 Adds an ellipse entity that was read from the file via the creation interface.
void addHatch (DL_CreationInterface *creationInterface)
 Adds a hatch entity that was read from the file via the creation interface.
void addHatchEdge ()
void addHatchLoop ()
void addImage (DL_CreationInterface *creationInterface)
 Adds an image entity that was read from the file via the creation interface.
void addImageDef (DL_CreationInterface *creationInterface)
 Adds an image definition that was read from the file via the creation interface.
void addInsert (DL_CreationInterface *creationInterface)
 Adds an insert entity that was read from the file via the creation interface.
void addLayer (DL_CreationInterface *creationInterface)
 Adds a layer that was read from the file via the creation interface.
void addLeader (DL_CreationInterface *creationInterface)
 Adds a leader entity that was read from the file via the creation interface.
void addLine (DL_CreationInterface *creationInterface)
 Adds a line entity that was read from the file via the creation interface.
void addMText (DL_CreationInterface *creationInterface)
 Adds an MText entity that was read from the file via the creation interface.
void addPoint (DL_CreationInterface *creationInterface)
 Adds a point entity that was read from the file via the creation interface.
void addPolyline (DL_CreationInterface *creationInterface)
 Adds a polyline entity that was read from the file via the creation interface.
void addRay (DL_CreationInterface *creationInterface)
 Adds a ray entity that was read from the file via the creation interface.
void addSetting (DL_CreationInterface *creationInterface)
 Adds a variable from the DXF file.
void addSolid (DL_CreationInterface *creationInterface)
 Adds a solid entity (filled trace) that was read from the file via the creation interface.
void addSpline (DL_CreationInterface *creationInterface)
 Adds a spline entity that was read from the file via the creation interface.
void addText (DL_CreationInterface *creationInterface)
 Adds an text entity that was read from the file via the creation interface.
void addTextStyle (DL_CreationInterface *creationInterface)
void addTrace (DL_CreationInterface *creationInterface)
 Adds a trace entity (4 edge closed polyline) that was read from the file via the creation interface.
void addVertex (DL_CreationInterface *creationInterface)
 Adds a polyline vertex entity that was read from the file via the creation interface.
void addXLine (DL_CreationInterface *creationInterface)
 Adds an xline entity that was read from the file via the creation interface.
 DL_Dxf ()
 Default constructor.
void endBlock (DL_CreationInterface *creationInterface)
 Ends a block that was read from the file via the creation interface.
void endEntity (DL_CreationInterface *creationInterface)
 Ends some special entities like hatches or old style polylines.
void endSequence (DL_CreationInterface *creationInterface)
 Ends a sequence and notifies the creation interface.
DL_DimensionData getDimData ()
int getIntValue (int code, int def)
int getLibVersion (const std::string &str)
double getRealValue (int code, double def)
std::string getStringValue (int code, const std::string &def)
DL_Codes::version getVersion ()
bool handleDictionaryData (DL_CreationInterface *creationInterface)
 Handles all dictionary data.
bool handleHatchData (DL_CreationInterface *creationInterface)
 Handles all hatch data.
bool handleLeaderData (DL_CreationInterface *creationInterface)
 Handles additional leader data.
bool handleLWPolylineData (DL_CreationInterface *creationInterface)
 Handles additional polyline data.
bool handleMTextData (DL_CreationInterface *creationInterface)
 Handles additional MText data.
bool handleSplineData (DL_CreationInterface *creationInterface)
 Handles additional spline data.
bool handleXData (DL_CreationInterface *creationInterface)
 Handles XData for all object types.
bool handleXRecordData (DL_CreationInterface *creationInterface)
 Handles all XRecord data.
bool hasValue (int code)
bool in (const std::string &file, DL_CreationInterface *creationInterface)
 Reads the given file and calls the appropriate functions in the given creation interface for every entity found in the file.
bool in (std::stringstream &stream, DL_CreationInterface *creationInterface)
 Reads a DXF file from an existing stream.
DL_WriterAout (const char *file, DL_Codes::version version=DL_VERSION_2000)
 Converts the given string into an int.
bool processDXFGroup (DL_CreationInterface *creationInterface, int groupCode, const std::string &groupValue)
 Processes a group (pair of group code and value).
bool readDxfGroups (FILE *fp, DL_CreationInterface *creationInterface)
 Reads a group couplet from a DXF file.
bool readDxfGroups (std::stringstream &stream, DL_CreationInterface *creationInterface)
 Same as above but for stringstreams.
bool toBool (const std::string &str)
int toInt (const std::string &str)
double toReal (const std::string &str)
void write3dFace (DL_WriterA &dw, const DL_3dFaceData &data, const DL_Attributes &attrib)
 Writes a 3d face entity to the file.
void writeAppDictionary (DL_WriterA &dw)
void writeAppid (DL_WriterA &dw, const std::string &name)
 Writes the APPID section to the DXF file.
void writeArc (DL_WriterA &dw, const DL_ArcData &data, const DL_Attributes &attrib)
 Writes an arc entity to the file.
void writeBlock (DL_WriterA &dw, const DL_BlockData &data)
 Writes a block's definition (no entities) to the DXF file.
void writeBlockRecord (DL_WriterA &dw)
 Writes a blockrecord section.
void writeBlockRecord (DL_WriterA &dw, const std::string &name)
 Writes a single block record with the given name.
void writeCircle (DL_WriterA &dw, const DL_CircleData &data, const DL_Attributes &attrib)
 Writes a circle entity to the file.
void writeComment (DL_WriterA &dw, const std::string &comment)
 Writes a comment to the DXF file.
void writeControlPoint (DL_WriterA &dw, const DL_ControlPointData &data)
 Writes a single control point of a spline to the file.
int writeDictionaryEntry (DL_WriterA &dw, const std::string &name)
void writeDimAligned (DL_WriterA &dw, const DL_DimensionData &data, const DL_DimAlignedData &edata, const DL_Attributes &attrib)
 Writes an aligned dimension entity to the file.
void writeDimAngular (DL_WriterA &dw, const DL_DimensionData &data, const DL_DimAngularData &edata, const DL_Attributes &attrib)
 Writes an angular dimension entity to the file.
void writeDimAngular3P (DL_WriterA &dw, const DL_DimensionData &data, const DL_DimAngular3PData &edata, const DL_Attributes &attrib)
 Writes an angular dimension entity (3 points version) to the file.
void writeDimDiametric (DL_WriterA &dw, const DL_DimensionData &data, const DL_DimDiametricData &edata, const DL_Attributes &attrib)
 Writes a diametric dimension entity to the file.
void writeDimLinear (DL_WriterA &dw, const DL_DimensionData &data, const DL_DimLinearData &edata, const DL_Attributes &attrib)
 Writes a linear dimension entity to the file.
void writeDimOrdinate (DL_WriterA &dw, const DL_DimensionData &data, const DL_DimOrdinateData &edata, const DL_Attributes &attrib)
 Writes an ordinate dimension entity to the file.
void writeDimRadial (DL_WriterA &dw, const DL_DimensionData &data, const DL_DimRadialData &edata, const DL_Attributes &attrib)
 Writes a radial dimension entity to the file.
void writeDimStyle (DL_WriterA &dw, double dimasz, double dimexe, double dimexo, double dimgap, double dimtxt)
 Writes a dimstyle section.
void writeDimStyleOverrides (DL_WriterA &dw, const DL_DimensionData &data)
void writeEllipse (DL_WriterA &dw, const DL_EllipseData &data, const DL_Attributes &attrib)
 Writes an ellipse entity to the file.
void writeEndBlock (DL_WriterA &dw, const std::string &name)
 Writes a block end.
void writeFitPoint (DL_WriterA &dw, const DL_FitPointData &data)
 Writes a single fit point of a spline to the file.
void writeHatch1 (DL_WriterA &dw, const DL_HatchData &data, const DL_Attributes &attrib)
 Writes the beginning of a hatch entity to the file.
void writeHatch2 (DL_WriterA &dw, const DL_HatchData &data, const DL_Attributes &attrib)
 Writes the end of a hatch entity to the file.
void writeHatchEdge (DL_WriterA &dw, const DL_HatchEdgeData &data)
 Writes the beginning of a hatch entity to the file.
void writeHatchLoop1 (DL_WriterA &dw, const DL_HatchLoopData &data)
 Writes the beginning of a hatch loop to the file.
void writeHatchLoop2 (DL_WriterA &dw, const DL_HatchLoopData &data)
 Writes the end of a hatch loop to the file.
void writeHeader (DL_WriterA &dw)
 Writes a DXF header to the file currently opened by the given DXF writer object.
int writeImage (DL_WriterA &dw, const DL_ImageData &data, const DL_Attributes &attrib)
 Writes an image entity.
void writeImageDef (DL_WriterA &dw, int handle, const DL_ImageData &data)
 Writes an image definiition entity.
void writeInsert (DL_WriterA &dw, const DL_InsertData &data, const DL_Attributes &attrib)
 Writes an insert to the file.
void writeKnot (DL_WriterA &dw, const DL_KnotData &data)
 Writes a single knot of a spline to the file.
void writeLayer (DL_WriterA &dw, const DL_LayerData &data, const DL_Attributes &attrib)
 Writes a layer to the file.
void writeLeader (DL_WriterA &dw, const DL_LeaderData &data, const DL_Attributes &attrib)
 Writes a leader entity to the file.
void writeLeaderVertex (DL_WriterA &dw, const DL_LeaderVertexData &data)
 Writes a single vertex of a leader to the file.
void writeLine (DL_WriterA &dw, const DL_LineData &data, const DL_Attributes &attrib)
 Writes a line entity to the file.
void writeLineType (DL_WriterA &dw, const DL_LineTypeData &data)
 Writes a line type to the file.
void writeMText (DL_WriterA &dw, const DL_MTextData &data, const DL_Attributes &attrib)
 Writes a multi text entity to the file.
void writeObjects (DL_WriterA &dw, const std::string &appDictionaryName="")
 Writes a objects section.
void writeObjectsEnd (DL_WriterA &dw)
 Writes the end of the objects section.
void writePoint (DL_WriterA &dw, const DL_PointData &data, const DL_Attributes &attrib)
 Writes a point entity to the file.
void writePolyline (DL_WriterA &dw, const DL_PolylineData &data, const DL_Attributes &attrib)
 Writes a polyline entity to the file.
void writePolylineEnd (DL_WriterA &dw)
 Writes the polyline end.
void writeSolid (DL_WriterA &dw, const DL_SolidData &data, const DL_Attributes &attrib)
 Writes a solid entity to the file.
void writeSpline (DL_WriterA &dw, const DL_SplineData &data, const DL_Attributes &attrib)
 Writes a spline entity to the file.
void writeStyle (DL_WriterA &dw, const DL_StyleData &style)
 Writes a style section.
void writeText (DL_WriterA &dw, const DL_TextData &data, const DL_Attributes &attrib)
 Writes a text entity to the file.
void writeTrace (DL_WriterA &dw, const DL_TraceData &data, const DL_Attributes &attrib)
 Writes a trace entity to the file.
void writeUcs (DL_WriterA &dw)
 Writes a ucs section.
void writeVertex (DL_WriterA &dw, const DL_VertexData &data)
 Writes a single vertex of a polyline to the file.
void writeView (DL_WriterA &dw)
 Writes a view section.
void writeVPort (DL_WriterA &dw)
 Writes a viewport section.
void writeXRecord (DL_WriterA &dw, int handle, int value)
void writeXRecord (DL_WriterA &dw, int handle, double value)
void writeXRecord (DL_WriterA &dw, int handle, bool value)
void writeXRecord (DL_WriterA &dw, int handle, const std::string &value)
 ~DL_Dxf ()
 Destructor.

Static Public Member Functions

static bool checkVariable (const char *var, DL_Codes::version version)
 Converts the given string into a double or returns the given default valud (def) if value is NULL or empty.
static bool getStrippedLine (std::string &s, unsigned int size, FILE *stream)
 Reads line from file & strips whitespace at start and newline at end.
static bool getStrippedLine (std::string &s, unsigned int size, std::stringstream &stream)
 Same as above but for stringstreams.
static bool stripWhiteSpace (char **s)
 Strips leading whitespace and trailing Carriage Return (CR) and Line Feed (LF) from NULL terminated string.
static void test ()
 Converts the given string into a double or returns the given default valud (def) if value is NULL or empty.

Private Attributes

unsigned long appDictionaryHandle
DL_Attributes attrib
int controlPointIndex
double * controlPoints
int currentObjectType
bool firstCall
bool firstHatchLoop
int fitPointIndex
double * fitPoints
unsigned int groupCode
std::string groupCodeTmp
std::string groupValue
DL_HatchEdgeData hatchEdge
std::vector< std::vector
< DL_HatchEdgeData > > 
hatchEdges
int knotIndex
double * knots
int leaderVertexIndex
double * leaderVertices
int libVersion
int maxControlPoints
int maxFitPoints
int maxKnots
int maxLeaderVertices
int maxVertices
std::string polylineLayer
std::string settingKey
char settingValue [DL_DXF_MAXLINE+1]
unsigned long styleHandleStd
std::map< int, std::string > values
DL_Codes::version version
int vertexIndex
double * vertices
int weightIndex
double * weights
std::string xRecordHandle
bool xRecordValues

Detailed Description

Reading and writing of DXF files.

This class can read in a DXF file and calls methods from the interface DL_EntityContainer to add the entities to the contianer provided by the user of the library.

It can also be used to write DXF files to a certain extent.

When saving entities, special values for colors and linetypes can be used:

Special colors are 0 (=BYBLOCK) and 256 (=BYLAYER). Special linetypes are "BYLAYER" and "BYBLOCK".

Author:
Andrew Mustun

Constructor & Destructor Documentation

DL_Dxf::DL_Dxf ( )

Default constructor.

DL_Dxf::~DL_Dxf ( )

Destructor.


Member Function Documentation

void DL_Dxf::add3dFace ( DL_CreationInterface creationInterface)

Adds a 3dface entity that was read from the file via the creation interface.

void DL_Dxf::addArc ( DL_CreationInterface creationInterface)

Adds an arc entity that was read from the file via the creation interface.

void DL_Dxf::addAttrib ( DL_CreationInterface creationInterface)

Adds an attrib entity that was read from the file via the creation interface.

Todo:
add attrib instead of normal text
void DL_Dxf::addBlock ( DL_CreationInterface creationInterface)

Adds a block that was read from the file via the creation interface.

void DL_Dxf::addCircle ( DL_CreationInterface creationInterface)

Adds a circle entity that was read from the file via the creation interface.

void DL_Dxf::addComment ( DL_CreationInterface creationInterface,
const std::string &  comment 
)

Adds a comment from the DXF file.

void DL_Dxf::addDictionary ( DL_CreationInterface creationInterface)
void DL_Dxf::addDictionaryEntry ( DL_CreationInterface creationInterface)
void DL_Dxf::addDimAligned ( DL_CreationInterface creationInterface)

Adds an aligned dimension entity that was read from the file via the creation interface.

void DL_Dxf::addDimAngular ( DL_CreationInterface creationInterface)

Adds an angular dimension entity that was read from the file via the creation interface.

void DL_Dxf::addDimAngular3P ( DL_CreationInterface creationInterface)

Adds an angular dimension entity that was read from the file via the creation interface.

void DL_Dxf::addDimDiametric ( DL_CreationInterface creationInterface)

Adds a diametric dimension entity that was read from the file via the creation interface.

void DL_Dxf::addDimLinear ( DL_CreationInterface creationInterface)

Adds a linear dimension entity that was read from the file via the creation interface.

void DL_Dxf::addDimOrdinate ( DL_CreationInterface creationInterface)

Adds an ordinate dimension entity that was read from the file via the creation interface.

void DL_Dxf::addDimRadial ( DL_CreationInterface creationInterface)

Adds a radial dimension entity that was read from the file via the creation interface.

void DL_Dxf::addEllipse ( DL_CreationInterface creationInterface)

Adds an ellipse entity that was read from the file via the creation interface.

void DL_Dxf::addHatch ( DL_CreationInterface creationInterface)

Adds a hatch entity that was read from the file via the creation interface.

void DL_Dxf::addHatchEdge ( )
void DL_Dxf::addHatchLoop ( )
void DL_Dxf::addImage ( DL_CreationInterface creationInterface)

Adds an image entity that was read from the file via the creation interface.

void DL_Dxf::addImageDef ( DL_CreationInterface creationInterface)

Adds an image definition that was read from the file via the creation interface.

void DL_Dxf::addInsert ( DL_CreationInterface creationInterface)

Adds an insert entity that was read from the file via the creation interface.

void DL_Dxf::addLayer ( DL_CreationInterface creationInterface)

Adds a layer that was read from the file via the creation interface.

void DL_Dxf::addLeader ( DL_CreationInterface creationInterface)

Adds a leader entity that was read from the file via the creation interface.

void DL_Dxf::addLine ( DL_CreationInterface creationInterface)

Adds a line entity that was read from the file via the creation interface.

void DL_Dxf::addMText ( DL_CreationInterface creationInterface)

Adds an MText entity that was read from the file via the creation interface.

void DL_Dxf::addPoint ( DL_CreationInterface creationInterface)

Adds a point entity that was read from the file via the creation interface.

void DL_Dxf::addPolyline ( DL_CreationInterface creationInterface)

Adds a polyline entity that was read from the file via the creation interface.

void DL_Dxf::addRay ( DL_CreationInterface creationInterface)

Adds a ray entity that was read from the file via the creation interface.

void DL_Dxf::addSetting ( DL_CreationInterface creationInterface)

Adds a variable from the DXF file.

void DL_Dxf::addSolid ( DL_CreationInterface creationInterface)

Adds a solid entity (filled trace) that was read from the file via the creation interface.

Author:
AHM
void DL_Dxf::addSpline ( DL_CreationInterface creationInterface)

Adds a spline entity that was read from the file via the creation interface.

void DL_Dxf::addText ( DL_CreationInterface creationInterface)

Adds an text entity that was read from the file via the creation interface.

void DL_Dxf::addTextStyle ( DL_CreationInterface creationInterface)
void DL_Dxf::addTrace ( DL_CreationInterface creationInterface)

Adds a trace entity (4 edge closed polyline) that was read from the file via the creation interface.

Author:
AHM
void DL_Dxf::addVertex ( DL_CreationInterface creationInterface)

Adds a polyline vertex entity that was read from the file via the creation interface.

void DL_Dxf::addXLine ( DL_CreationInterface creationInterface)

Adds an xline entity that was read from the file via the creation interface.

bool DL_Dxf::checkVariable ( const char *  var,
DL_Codes::version  version 
)
static

Converts the given string into a double or returns the given default valud (def) if value is NULL or empty.

Checks if the given variable is known by the given DXF version.

Converts the given string into an int or returns the given default valud (def) if value is NULL or empty. Converts the given string into a string or returns the given default valud (def) if value is NULL or empty.

void DL_Dxf::endBlock ( DL_CreationInterface creationInterface)

Ends a block that was read from the file via the creation interface.

void DL_Dxf::endEntity ( DL_CreationInterface creationInterface)

Ends some special entities like hatches or old style polylines.

void DL_Dxf::endSequence ( DL_CreationInterface creationInterface)

Ends a sequence and notifies the creation interface.

DL_DimensionData DL_Dxf::getDimData ( )
Returns:
dimension data from current values.
int DL_Dxf::getIntValue ( int  code,
int  def 
)
inline
int DL_Dxf::getLibVersion ( const std::string &  str)
Returns:
the library version as int (4 bytes, each byte one version number). e.g. if str = "2.0.2.0" getLibVersion returns 0x02000200
double DL_Dxf::getRealValue ( int  code,
double  def 
)
inline
std::string DL_Dxf::getStringValue ( int  code,
const std::string &  def 
)
inline
bool DL_Dxf::getStrippedLine ( std::string &  s,
unsigned int  size,
FILE *  fp 
)
static

Reads line from file & strips whitespace at start and newline at end.

Parameters:
sOutput
Pointer to character array that chopped line will be returned in.
sizeSize of s. (Including space for NULL.)
fpInput
Handle of input file.
Return values:
trueif line could be read
falseif fp is already at end of file
Todo:

Change function to use safer FreeBSD strl* functions

Is it a problem if line is blank (i.e., newline only)? Then, when function returns, (s==NULL).

bool DL_Dxf::getStrippedLine ( std::string &  s,
unsigned int  size,
std::stringstream &  stream 
)
static

Same as above but for stringstreams.

DL_Codes::version DL_Dxf::getVersion ( )
inline
bool DL_Dxf::handleDictionaryData ( DL_CreationInterface creationInterface)

Handles all dictionary data.

bool DL_Dxf::handleHatchData ( DL_CreationInterface creationInterface)

Handles all hatch data.

bool DL_Dxf::handleLeaderData ( DL_CreationInterface creationInterface)

Handles additional leader data.

bool DL_Dxf::handleLWPolylineData ( DL_CreationInterface creationInterface)

Handles additional polyline data.

bool DL_Dxf::handleMTextData ( DL_CreationInterface creationInterface)

Handles additional MText data.

bool DL_Dxf::handleSplineData ( DL_CreationInterface creationInterface)

Handles additional spline data.

bool DL_Dxf::handleXData ( DL_CreationInterface creationInterface)

Handles XData for all object types.

bool DL_Dxf::handleXRecordData ( DL_CreationInterface creationInterface)

Handles all XRecord data.

bool DL_Dxf::hasValue ( int  code)
inline
bool DL_Dxf::in ( const std::string &  file,
DL_CreationInterface creationInterface 
)

Reads the given file and calls the appropriate functions in the given creation interface for every entity found in the file.

Parameters:
fileInput Path and name of file to read
creationInterfacePointer to the class which takes care of the entities in the file.
Return values:
trueIf file could be opened.
falseIf file could not be opened.
bool DL_Dxf::in ( std::stringstream &  stream,
DL_CreationInterface creationInterface 
)

Reads a DXF file from an existing stream.

Parameters:
streamThe string stream.
creationInterfacePointer to the class which takes care of the entities in the file.
Return values:
trueIf file could be opened.
falseIf file could not be opened.
DL_WriterA * DL_Dxf::out ( const char *  file,
DL_Codes::version  version = DL_VERSION_2000 
)

Converts the given string into an int.

ok is set to false if there was an error. Opens the given file for writing and returns a pointer to the dxf writer. This pointer needs to be passed on to other writing functions.

Parameters:
fileFull path of the file to open.
Returns:
Pointer to an ascii dxf writer object.
bool DL_Dxf::processDXFGroup ( DL_CreationInterface creationInterface,
int  groupCode,
const std::string &  groupValue 
)

Processes a group (pair of group code and value).

Parameters:
creationInterfaceHandle to class that creates entities and other CAD data from DXF group codes
groupCodeConstant indicating the data type of the group.
groupValueThe data value.
Return values:
trueif done processing current entity and new entity begun
falseif not done processing current entity
bool DL_Dxf::readDxfGroups ( FILE *  fp,
DL_CreationInterface creationInterface 
)

Reads a group couplet from a DXF file.

Calls another function to process it.

A group couplet consists of two lines that represent a single piece of data. An integer constant on the first line indicates the type of data. The value is on the next line.

This function reads a couplet, determines the type of data, and passes the value to the the appropriate handler function of creationInterface.

fp is advanced so that the next call to readDXFGroups() reads the next couplet in the file.

Parameters:
fpHandle of input file
creationInterfaceHandle of class which processes entities in the file
Return values:
trueIf EOF not reached.
falseIf EOF reached.
bool DL_Dxf::readDxfGroups ( std::stringstream &  stream,
DL_CreationInterface creationInterface 
)

Same as above but for stringstreams.

bool DL_Dxf::stripWhiteSpace ( char **  s)
static

Strips leading whitespace and trailing Carriage Return (CR) and Line Feed (LF) from NULL terminated string.

Parameters:
sInput and output. NULL terminates string.
Return values:
trueif s is non-NULL
falseif s is NULL
void DL_Dxf::test ( )
static

Converts the given string into a double or returns the given default valud (def) if value is NULL or empty.

Some test routines.

bool DL_Dxf::toBool ( const std::string &  str)
inline
int DL_Dxf::toInt ( const std::string &  str)
inline
double DL_Dxf::toReal ( const std::string &  str)
inline
void DL_Dxf::write3dFace ( DL_WriterA dw,
const DL_3dFaceData data,
const DL_Attributes attrib 
)

Writes a 3d face entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeAppDictionary ( DL_WriterA dw)
void DL_Dxf::writeAppid ( DL_WriterA dw,
const std::string &  name 
)

Writes the APPID section to the DXF file.

Parameters:
nameApplication name
void DL_Dxf::writeArc ( DL_WriterA dw,
const DL_ArcData data,
const DL_Attributes attrib 
)

Writes an arc entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeBlock ( DL_WriterA dw,
const DL_BlockData data 
)

Writes a block's definition (no entities) to the DXF file.

void DL_Dxf::writeBlockRecord ( DL_WriterA dw)

Writes a blockrecord section.

This section is needed in DL_VERSION_R13. Note that this method currently only writes a faked BLOCKRECORD section to make the file readable by Aut*cad.

void DL_Dxf::writeBlockRecord ( DL_WriterA dw,
const std::string &  name 
)

Writes a single block record with the given name.

void DL_Dxf::writeCircle ( DL_WriterA dw,
const DL_CircleData data,
const DL_Attributes attrib 
)

Writes a circle entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeComment ( DL_WriterA dw,
const std::string &  comment 
)

Writes a comment to the DXF file.

void DL_Dxf::writeControlPoint ( DL_WriterA dw,
const DL_ControlPointData data 
)

Writes a single control point of a spline to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
int DL_Dxf::writeDictionaryEntry ( DL_WriterA dw,
const std::string &  name 
)
void DL_Dxf::writeDimAligned ( DL_WriterA dw,
const DL_DimensionData data,
const DL_DimAlignedData edata,
const DL_Attributes attrib 
)

Writes an aligned dimension entity to the file.

Parameters:
dwDXF writer
dataGeneric dimension data for from the file
dataSpecific aligned dimension data from the file
attribAttributes
void DL_Dxf::writeDimAngular ( DL_WriterA dw,
const DL_DimensionData data,
const DL_DimAngularData edata,
const DL_Attributes attrib 
)

Writes an angular dimension entity to the file.

Parameters:
dwDXF writer
dataGeneric dimension data for from the file
dataSpecific angular dimension data from the file
attribAttributes
void DL_Dxf::writeDimAngular3P ( DL_WriterA dw,
const DL_DimensionData data,
const DL_DimAngular3PData edata,
const DL_Attributes attrib 
)

Writes an angular dimension entity (3 points version) to the file.

Parameters:
dwDXF writer
dataGeneric dimension data for from the file
dataSpecific angular dimension data from the file
attribAttributes
void DL_Dxf::writeDimDiametric ( DL_WriterA dw,
const DL_DimensionData data,
const DL_DimDiametricData edata,
const DL_Attributes attrib 
)

Writes a diametric dimension entity to the file.

Parameters:
dwDXF writer
dataGeneric dimension data for from the file
dataSpecific diametric dimension data from the file
attribAttributes
void DL_Dxf::writeDimLinear ( DL_WriterA dw,
const DL_DimensionData data,
const DL_DimLinearData edata,
const DL_Attributes attrib 
)

Writes a linear dimension entity to the file.

Parameters:
dwDXF writer
dataGeneric dimension data for from the file
dataSpecific linear dimension data from the file
attribAttributes
void DL_Dxf::writeDimOrdinate ( DL_WriterA dw,
const DL_DimensionData data,
const DL_DimOrdinateData edata,
const DL_Attributes attrib 
)

Writes an ordinate dimension entity to the file.

Parameters:
dwDXF writer
dataGeneric dimension data for from the file
dataSpecific ordinate dimension data from the file
attribAttributes
void DL_Dxf::writeDimRadial ( DL_WriterA dw,
const DL_DimensionData data,
const DL_DimRadialData edata,
const DL_Attributes attrib 
)

Writes a radial dimension entity to the file.

Parameters:
dwDXF writer
dataGeneric dimension data for from the file
dataSpecific radial dimension data from the file
attribAttributes
void DL_Dxf::writeDimStyle ( DL_WriterA dw,
double  dimasz,
double  dimexe,
double  dimexo,
double  dimgap,
double  dimtxt 
)

Writes a dimstyle section.

This section is needed in DL_VERSION_R13. Note that this method currently only writes a faked DIMSTYLE section to make the file readable by Aut*cad.

void DL_Dxf::writeDimStyleOverrides ( DL_WriterA dw,
const DL_DimensionData data 
)
void DL_Dxf::writeEllipse ( DL_WriterA dw,
const DL_EllipseData data,
const DL_Attributes attrib 
)

Writes an ellipse entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeEndBlock ( DL_WriterA dw,
const std::string &  name 
)

Writes a block end.

Parameters:
nameBlock name
void DL_Dxf::writeFitPoint ( DL_WriterA dw,
const DL_FitPointData data 
)

Writes a single fit point of a spline to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeHatch1 ( DL_WriterA dw,
const DL_HatchData data,
const DL_Attributes attrib 
)

Writes the beginning of a hatch entity to the file.

This must be followed by one or more writeHatchLoop() calls and a writeHatch2() call.

Parameters:
dwDXF writer
dataEntity data.
attribAttributes
void DL_Dxf::writeHatch2 ( DL_WriterA dw,
const DL_HatchData data,
const DL_Attributes attrib 
)

Writes the end of a hatch entity to the file.

Parameters:
dwDXF writer
dataEntity data.
attribAttributes
void DL_Dxf::writeHatchEdge ( DL_WriterA dw,
const DL_HatchEdgeData data 
)

Writes the beginning of a hatch entity to the file.

Parameters:
dwDXF writer
dataEntity data.
attribAttributes
void DL_Dxf::writeHatchLoop1 ( DL_WriterA dw,
const DL_HatchLoopData data 
)

Writes the beginning of a hatch loop to the file.

This must happen after writing the beginning of a hatch entity.

Parameters:
dwDXF writer
dataEntity data.
attribAttributes
void DL_Dxf::writeHatchLoop2 ( DL_WriterA dw,
const DL_HatchLoopData data 
)

Writes the end of a hatch loop to the file.

Parameters:
dwDXF writer
dataEntity data.
attribAttributes
void DL_Dxf::writeHeader ( DL_WriterA dw)

Writes a DXF header to the file currently opened by the given DXF writer object.

int DL_Dxf::writeImage ( DL_WriterA dw,
const DL_ImageData data,
const DL_Attributes attrib 
)

Writes an image entity.

Returns:
IMAGEDEF handle. Needed for the IMAGEDEF counterpart.
void DL_Dxf::writeImageDef ( DL_WriterA dw,
int  handle,
const DL_ImageData data 
)

Writes an image definiition entity.

void DL_Dxf::writeInsert ( DL_WriterA dw,
const DL_InsertData data,
const DL_Attributes attrib 
)

Writes an insert to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeKnot ( DL_WriterA dw,
const DL_KnotData data 
)

Writes a single knot of a spline to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeLayer ( DL_WriterA dw,
const DL_LayerData data,
const DL_Attributes attrib 
)

Writes a layer to the file.

Layers are stored in the tables section of a DXF file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeLeader ( DL_WriterA dw,
const DL_LeaderData data,
const DL_Attributes attrib 
)

Writes a leader entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
See also:
writeVertex
void DL_Dxf::writeLeaderVertex ( DL_WriterA dw,
const DL_LeaderVertexData data 
)

Writes a single vertex of a leader to the file.

Parameters:
dwDXF writer
dataEntity data
void DL_Dxf::writeLine ( DL_WriterA dw,
const DL_LineData data,
const DL_Attributes attrib 
)

Writes a line entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeLineType ( DL_WriterA dw,
const DL_LineTypeData data 
)

Writes a line type to the file.

Line types are stored in the tables section of a DXF file.

void DL_Dxf::writeMText ( DL_WriterA dw,
const DL_MTextData data,
const DL_Attributes attrib 
)

Writes a multi text entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeObjects ( DL_WriterA dw,
const std::string &  appDictionaryName = "" 
)

Writes a objects section.

This section is needed in DL_VERSION_R13. Note that this method currently only writes a faked OBJECTS section to make the file readable by Aut*cad.

void DL_Dxf::writeObjectsEnd ( DL_WriterA dw)

Writes the end of the objects section.

This section is needed in DL_VERSION_R13. Note that this method currently only writes a faked OBJECTS section to make the file readable by Aut*cad.

void DL_Dxf::writePoint ( DL_WriterA dw,
const DL_PointData data,
const DL_Attributes attrib 
)

Writes a point entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writePolyline ( DL_WriterA dw,
const DL_PolylineData data,
const DL_Attributes attrib 
)

Writes a polyline entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
See also:
writeVertex
void DL_Dxf::writePolylineEnd ( DL_WriterA dw)

Writes the polyline end.

Only needed for DXF R12.

void DL_Dxf::writeSolid ( DL_WriterA dw,
const DL_SolidData data,
const DL_Attributes attrib 
)

Writes a solid entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeSpline ( DL_WriterA dw,
const DL_SplineData data,
const DL_Attributes attrib 
)

Writes a spline entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
See also:
writeControlPoint
void DL_Dxf::writeStyle ( DL_WriterA dw,
const DL_StyleData style 
)

Writes a style section.

This section is needed in DL_VERSION_R13.

void DL_Dxf::writeText ( DL_WriterA dw,
const DL_TextData data,
const DL_Attributes attrib 
)

Writes a text entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeTrace ( DL_WriterA dw,
const DL_TraceData data,
const DL_Attributes attrib 
)

Writes a trace entity to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeUcs ( DL_WriterA dw)

Writes a ucs section.

This section is needed in DL_VERSION_R13. Note that this method currently only writes a faked UCS section to make the file readable by Aut*cad.

void DL_Dxf::writeVertex ( DL_WriterA dw,
const DL_VertexData data 
)

Writes a single vertex of a polyline to the file.

Parameters:
dwDXF writer
dataEntity data from the file
attribAttributes
void DL_Dxf::writeView ( DL_WriterA dw)

Writes a view section.

This section is needed in DL_VERSION_R13. Note that this method currently only writes a faked VIEW section to make the file readable by Aut*cad.

void DL_Dxf::writeVPort ( DL_WriterA dw)

Writes a viewport section.

This section is needed in DL_VERSION_R13. Note that this method currently only writes a faked VPORT section to make the file readable by Aut*cad.

void DL_Dxf::writeXRecord ( DL_WriterA dw,
int  handle,
int  value 
)
void DL_Dxf::writeXRecord ( DL_WriterA dw,
int  handle,
double  value 
)
void DL_Dxf::writeXRecord ( DL_WriterA dw,
int  handle,
bool  value 
)
void DL_Dxf::writeXRecord ( DL_WriterA dw,
int  handle,
const std::string &  value 
)

Member Data Documentation

unsigned long DL_Dxf::appDictionaryHandle
private
DL_Attributes DL_Dxf::attrib
private
int DL_Dxf::controlPointIndex
private
double* DL_Dxf::controlPoints
private
int DL_Dxf::currentObjectType
private
bool DL_Dxf::firstCall
private
bool DL_Dxf::firstHatchLoop
private
int DL_Dxf::fitPointIndex
private
double* DL_Dxf::fitPoints
private
unsigned int DL_Dxf::groupCode
private
std::string DL_Dxf::groupCodeTmp
private
std::string DL_Dxf::groupValue
private
DL_HatchEdgeData DL_Dxf::hatchEdge
private
std::vector<std::vector<DL_HatchEdgeData> > DL_Dxf::hatchEdges
private
int DL_Dxf::knotIndex
private
double* DL_Dxf::knots
private
int DL_Dxf::leaderVertexIndex
private
double* DL_Dxf::leaderVertices
private
int DL_Dxf::libVersion
private
int DL_Dxf::maxControlPoints
private
int DL_Dxf::maxFitPoints
private
int DL_Dxf::maxKnots
private
int DL_Dxf::maxLeaderVertices
private
int DL_Dxf::maxVertices
private
std::string DL_Dxf::polylineLayer
private
std::string DL_Dxf::settingKey
private
char DL_Dxf::settingValue[DL_DXF_MAXLINE+1]
private
unsigned long DL_Dxf::styleHandleStd
private
std::map<int, std::string> DL_Dxf::values
private
DL_Codes::version DL_Dxf::version
private
int DL_Dxf::vertexIndex
private
double* DL_Dxf::vertices
private
int DL_Dxf::weightIndex
private
double* DL_Dxf::weights
private
std::string DL_Dxf::xRecordHandle
private
bool DL_Dxf::xRecordValues
private

The documentation for this class was generated from the following files: